Solución de problemas
Ejecuta primero con --debug: imprime la detección de IP, cada petición a la API (con secretos redactados) y la decisión por registro. Al ejecutar desde el código fuente, la misma información queda en logs/updater.log dentro del directorio del proyecto.
«Script is already running»
Sección titulada ««Script is already running»»Otra instancia tiene el lock (/tmp/cloudflare-dns-updater.lock). Es normal con cron si una ejecución anterior sigue activa. Si realmente no hay ningún proceso, el lock usa flock y el kernel lo libera automáticamente — basta con volver a ejecutar; con el mecanismo alternativo de PID-file, el lock obsoleto se detecta y se sobrescribe.
«Could not detect Public IPv4/IPv6»
Sección titulada ««Could not detect Public IPv4/IPv6»»- La IPv4 se detecta con servicios externos (
icanhazip.com,ifconfig.co,api.ipify.org) — comprueba la conectividad HTTPS de salida. - La IPv6 se lee primero de una interfaz local. Si tu interfaz no tiene IPv6 global, se intenta la detección externa. Define
options.interfaceexplícitamente si la interfaz autodetectada no es la correcta. - ¿No tienes IPv6? Pon
ip_type: "ipv4"en tus dominios para saltarte los registros AAAA.
«Record … does not exist in Cloudflare»
Sección titulada ««Record … does not exist in Cloudflare»»Por defecto el programa solo actualiza registros existentes. Crea el registro A/AAAA una vez en el panel de Cloudflare (con cualquier IP; se corregirá en la siguiente ejecución) y vuelve a ejecutar, o pon create_if_missing: true y deja que el programa lo añada.
Si el nombre empieza por *, ten en cuenta que un comodín es el nombre literal de un registro, no un patrón que coincida con tus subdominios existentes. *.example.com solo funciona cuando existe un registro con ese nombre exacto en Cloudflare, y no afectará a www.example.com ni a ningún otro nombre que ya tenga su propio registro. Para mantener esos actualizados, ponlos uno a uno en domains.
«Failed to fetch records» / «Batch update failed»
Sección titulada ««Failed to fetch records» / «Batch update failed»»- Comprueba que el token tiene permiso Edit zone DNS para la zona configurada y no ha caducado.
- Comprueba que
zone_idcorresponde a la zona que contiene tus registros. - Ejecuta con
--debugpara ver el cuerpo del error de la API (redactado).
Los registros se actualizan pero los servicios fallan
Sección titulada «Los registros se actualizan pero los servicios fallan»Si un registro está proxificado (nube naranja), Cloudflare termina el tráfico y el TTL se ignora — es lo esperado. Para conexiones directas (SSH, servidores de juegos, correo), pon proxied: false en ese dominio.
Aviso sobre los permisos de la configuración
Sección titulada «Aviso sobre los permisos de la configuración»cloudflare-dns.yaml contiene tu token de API. Silencia el aviso con:
chmod 600 cloudflare-dns.yamlAviso sobre jq
Sección titulada «Aviso sobre jq»Sin jq se usa un parser JSON limitado basado en sed. Funciona, pero instalar jq es más rápido y robusto — es un único paquete en cualquier sistema (apt install jq, brew install jq).