enhancement
This commit is contained in:
114
README.md
Normal file
114
README.md
Normal 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
|
||||
Reference in New Issue
Block a user