1.7 KiB
1.7 KiB
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:
# /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-enval.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
# 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)
crontab -e
*/5 * * * * /opt/ddns/ddns_porkbun.sh
Verificar funcionamiento
# 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