Files
ddns/porkbun-ddns-setup.md
carlitosbond dbf077e851 Initial commit — porkbun DDNS for carloselugo.com
Credentials sourced from .ddns-env (gitignored, chmod 600).
2026-04-28 12:26:26 +00:00

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-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

# 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