Actualiza automáticamente los registros DNS con tu IP pública.
- Actualización automática de registros DNS A en Cloudflare
- Detección inteligente de cambios de IP (solo actualiza cuando es necesario)
- Soporte para múltiples dominios y zonas con diferentes tokens
- Servicio de IP pública configurable
- Notificaciones por email cuando cambia la IP
- Logging detallado de todas las operaciones
- Configuración mediante archivos
.envy JSON - Arquitectura modular y escalable
- Diseñado para ejecutarse como servicio systemd o cron job
- Mínimas dependencias
cloudflare-ddns-updater/
├── LICENSE # Licencia del proyecto (MIT)
├── README.md # Documentación principal
├── .gitignore # Archivos ignorados por Git
└── src
├── cloudflare-ddns.py # Script principal del DDNS
├── send_email.py # Envío de notificaciones por email
├── config
│ ├── config.json # Configuración real
│ └── config.json.example # Ejemplo de configuración
├── service
│ ├── cloudflare-ddns.service # Servicio systemd
│ └── cloudflare-ddns.service.example # Plantilla de ejemplo
└── templates
└── email.html # Plantilla HTML para emails
- Python 3.7 o superior
- Cuenta de Cloudflare con acceso a la API
- Token de API de Cloudflare con permisos de edición de DNS
git clone https://github.com/alejandroalsa/cloudflare-ddns-updater.git
cd cloudflare-ddns-updatercp .env.example .env
nano .envcp src/config/config.json.example src/config/config.json
nano src/config/config.json- Accede a Cloudflare Dashboard
- Ve a My Profile → API Tokens
- Crea un nuevo token con estos permisos:
- Zone.DNS:Edit (obligatorio)
- Zone.Zone:Read (recomendado)
- Selecciona las zonas específicas o todas las zonas
- Copia el token generado
- En el Dashboard de Cloudflare, selecciona tu dominio
- Desplázate a la sección API en la barra lateral derecha
- Copia el Zone ID
python3 src/cloudflare-ddns.pyO desde la raíz del proyecto:
cd cloudflare-ddns-updater
python3 src/cloudflare-ddns.pypython3 src/cloudflare-ddns.py -v- Copia el archivo de servicio:
sudo cp src/service/cloudflare-ddns.service /etc/systemd/system/- Edita las rutas y valores en el archivo de servicio según tu instalación:
sudo nano /etc/systemd/system/cloudflare-ddns.service- Habilita e inicia el servicio:
sudo systemctl daemon-reload
sudo systemctl enable cloudflare-ddns
sudo systemctl start cloudflare-ddns- Verifica el estado:
sudo systemctl status cloudflare-ddns- Ver logs del servicio:
sudo journalctl -u cloudflare-ddns -f- Otros comandos útiles:
# Detener el servicio
sudo systemctl stop cloudflare-ddns
# Reiniciar el servicio
sudo systemctl restart cloudflare-ddns
# Deshabilitar el servicio
sudo systemctl disable cloudflare-ddns
# Ver logs de las últimas 100 líneas
sudo journalctl -u cloudflare-ddns -n 100Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
⭐ Si este proyecto te ha sido útil, considera darle una estrella en GitHub