diff --git a/README.md b/README.md index 1a83404..b343737 100644 --- a/README.md +++ b/README.md @@ -51,15 +51,17 @@ Per l’indirizzo IP viene mostrato: ## πŸ“‚ Struttura del progetto +``` myip-webapp/ β”œβ”€ app.py β”œβ”€ requirements.txt β”œβ”€ Dockerfile β”œβ”€ static/ -β”‚ β”œβ”€ myip.css -β”‚ β”œβ”€ logo.png -β”‚ └─ favicon.ico +β”‚ β”œβ”€ myip.css +β”‚ β”œβ”€ logo.png +β”‚ └─ favicon.ico └─ README.md +``` --- @@ -69,6 +71,120 @@ myip-webapp/ ```bash docker build -t myip:latest . -docker run -p 8080:8000 myip +``` +### Run + +```bash +docker run -p 8080:8000 myip +``` + +Apri: + +``` http://localhost:8080 +``` + +--- + +## ☸️ Deploy in Kubernetes (Helm) + +### values.yaml minimale + +```yaml +ingress: + enabled: true + className: nginx + host: myip.example.com + + annotations: + cert-manager.io/cluster-issuer: letsencrypt-production + nginx.ingress.kubernetes.io/use-forwarded-headers: "true" + nginx.ingress.kubernetes.io/real-ip-header: "X-Forwarded-For" + nginx.ingress.kubernetes.io/compute-full-forwarded-for: "true" + + tls: + enabled: true +``` + +### ingress-nginx PROXY protocol (fondamentale) + +Nella ConfigMap del controller: + +```yaml +data: + use-proxy-protocol: "true" + real-ip-header: "proxy_protocol" + set-real-ip-from: "10.166.93.0/24" + use-forwarded-headers: "true" +``` + +### HAProxy (L4) davanti ad ingress-nginx + +```haproxy +server backend1 10.166.93.34:443 send-proxy-v2 check +server backend2 10.166.93.35:443 send-proxy-v2 check +server backend3 10.166.93.36:443 send-proxy-v2 check +``` + +--- + +## 🧠 Note Tecniche + +### Determinazione dell’IP reale + +L’app utilizza: + +```python +X-Forwarded-For β†’ X-Real-IP β†’ remote_addr +``` + +ed Γ¨ compatibile con proxy multipli e ingress-nginx. + +### Lookup RIPE + +Usa la API ufficiale RIPEstat: + +- `/network-info/` +- `/as-overview/` + +Timeout veloce (2s) per non bloccare la UI. + +--- + +## 🎨 Personalizzazioni + +Tutto il design Γ¨ modificabile in: + +``` +static/myip.css +``` + +Puoi sostituire: +- `logo.png` β†’ per branding +- `favicon.ico` β†’ icona personalizzata + +--- + +## 🏁 Roadmap + +- [ ] Endpoint `/api/ip` +- [ ] Multi-theme (light/dark manuale) +- [ ] Mini-widget JavaScript includibile in altri siti +- [ ] Supporto IPv6-only +- [ ] Caching locale del lookup RIPE + +--- + +## 🀝 Credits + +- Frontend & Styling by ChatGPT + NETECH style guidelines +- Backend Python + Flask +- Lookup dati: **RIPEstat Data API** +- Supporto PROXY prot. v2: HAProxy + ingress-nginx + +--- + +## πŸ“„ Licenza + +MIT (o altra licenza a tua scelta)