2.5 KiB
2.5 KiB
Cloudflare DDNS Updater con UI
Sistema automatico per aggiornare i record DNS di Cloudflare con il tuo IP pubblico dinamico, completo di interfaccia web per monitoraggio.
Caratteristiche
- ✅ Aggiornamento automatico DNS tramite container
oznu/cloudflare-ddns - ✅ Interfaccia web Flask per monitoraggio in tempo reale
- ✅ Auto-refresh AJAX senza ricaricare la pagina
- ✅ Visualizzazione stato di sincronizzazione IP
- ✅ Cache intelligente per ridurre chiamate API
- ✅ Health check e logging strutturato
- ✅ Design responsive dark mode
Requisiti
- Docker e Docker Compose
- Token API Cloudflare con permessi DNS edit
- Zona DNS configurata su Cloudflare
Configurazione
- Crea il file
.envnella root del progetto:
# Cloudflare
CF_API_TOKEN=your_cloudflare_api_token
CF_ZONE=tuodomain.it
CF_SUBDOMAIN=subdomain
CF_PROXIED=false
CF_TTL=120
# Frequenza controllo IP (cron syntax)
CF_CRON=*/5 * * * *
# Configurazione Container
DATA_VOLUME=./data
RESTART_POLICY=unless-stopped
# UI Settings
UI_REFRESH_SECONDS=60
UI_PORT=8088
- Avvia i container:
docker-compose up -d
- Accedi all'interfaccia web:
http://localhost:8088
Struttura Progetto
.
├── docker-compose.yml # Configurazione Docker
├── .env # Variabili ambiente (gitignored)
├── ui/
│ ├── app.py # Server Flask
│ ├── cloudflare.py # API Cloudflare
│ ├── requirements.txt # Dipendenze Python
│ └── templates/
│ └── index.html # UI web
└── data/ # Dati persistenti (gitignored)
API Endpoints
GET /- Interfaccia webGET /api/records- JSON con stato record DNSGET /health- Health check
Monitoraggio
L'interfaccia mostra per ogni record:
- Nome FQDN
- IP configurato nel DNS
- IP pubblico attuale
- Stato Proxy Cloudflare
- Stato sincronizzazione (OK/MISMATCH/ERROR)
- Ultimo aggiornamento
Ottimizzazioni
- ✅ Cache Zone ID per evitare chiamate ripetute
- ✅ Timeout su tutte le richieste HTTP
- ✅ Validazione configurazione all'avvio
- ✅ CORS abilitato per integrazioni esterne
- ✅ Auto-refresh AJAX senza refresh completo
- ✅ Gestione errori e logging strutturato
Troubleshooting
Verifica i log dei container:
docker-compose logs cloudflare-ddns
docker-compose logs cloudflare-ddns-ui
Verifica l'health status:
curl http://localhost:8088/health
Licenza
MIT