115 lines
2.5 KiB
Markdown
115 lines
2.5 KiB
Markdown
# 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
|