enhancement

This commit is contained in:
Francesco Picone
2025-12-29 12:55:53 +01:00
parent 74bdffc411
commit 7c00b1af87
7 changed files with 260 additions and 24 deletions

114
README.md Normal file
View File

@@ -0,0 +1,114 @@
# 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
1. Crea il file `.env` nella root del progetto:
```env
# 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
```
2. Avvia i container:
```bash
docker-compose up -d
```
3. 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 web
- `GET /api/records` - JSON con stato record DNS
- `GET /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:
```bash
docker-compose logs cloudflare-ddns
docker-compose logs cloudflare-ddns-ui
```
Verifica l'health status:
```bash
curl http://localhost:8088/health
```
## Licenza
MIT