75 lines
1.7 KiB
Markdown
75 lines
1.7 KiB
Markdown
# porkbun-ddns — DDNS automático para carloselugo.com
|
|
|
|
Actualiza registros DNS tipo A en Porkbun cuando cambia la IP pública, y envía una notificación via ntfy.
|
|
|
|
## Archivos
|
|
|
|
| Archivo | Ruta |
|
|
|---|---|
|
|
| Script principal | `/opt/ddns/ddns_porkbun.sh` |
|
|
| Credenciales | `/opt/ddns/.ddns-env` |
|
|
| State file | `/home/netintel/.porkbun-ddns.last-ip` |
|
|
| Log | `/home/netintel/.porkbun-ddns.log` |
|
|
|
|
## Credenciales
|
|
|
|
Las credenciales sensibles están separadas del script en `/opt/ddns/.ddns-env` con permisos `600`:
|
|
|
|
```bash
|
|
# /opt/ddns/.ddns-env
|
|
API_KEY="..."
|
|
SECRET_KEY="..."
|
|
NTFY_PASS="..."
|
|
```
|
|
|
|
El script hace `source /opt/ddns/.ddns-env` al inicio para cargarlas.
|
|
|
|
> Si el proyecto se versiona con git, agregar `.ddns-env` al `.gitignore`.
|
|
|
|
## Configuración del script
|
|
|
|
Estas variables se configuran directamente en `ddns_porkbun.sh`:
|
|
|
|
| Variable | Descripción |
|
|
|---|---|
|
|
| `DOMAIN` | Dominio principal |
|
|
| `SUBDOMAINS` | Array de subdominios a actualizar (`"@"` = root) |
|
|
| `STATE_FILE` | Ruta donde se guarda la última IP conocida |
|
|
| `LOG_FILE` | Ruta del archivo de log |
|
|
| `NTFY_URL` | URL del canal ntfy |
|
|
| `NTFY_USER` | Usuario ntfy |
|
|
| `DRYRUN` | `1` = simula updates y envía notificación real sin tocar DNS ni state |
|
|
|
|
## Instalación
|
|
|
|
```bash
|
|
# Dar permisos de ejecución
|
|
chmod +x /opt/ddns/ddns_porkbun.sh
|
|
|
|
# Verificar permisos del env
|
|
chmod 600 /opt/ddns/.ddns-env
|
|
```
|
|
|
|
## Cron (cada 5 minutos)
|
|
|
|
```bash
|
|
crontab -e
|
|
```
|
|
|
|
```
|
|
*/5 * * * * /opt/ddns/ddns_porkbun.sh
|
|
```
|
|
|
|
## Verificar funcionamiento
|
|
|
|
```bash
|
|
# Ejecución normal
|
|
bash /opt/ddns/ddns_porkbun.sh
|
|
|
|
# Dry run — simula todos los updates y envía notificación real sin modificar DNS ni state
|
|
DRYRUN=1 bash /opt/ddns/ddns_porkbun.sh
|
|
|
|
# Ver log en tiempo real
|
|
tail -f /home/netintel/.porkbun-ddns.log
|
|
```
|