Traefik
Reverse proxy HTTPS pubblico del droplet
Funzione
Traefik e' il reverse proxy pubblico. Gestisce:
- HTTP
:80; - HTTPS
:443; - redirect HTTP -> HTTPS;
- certificati Let's Encrypt con HTTP challenge;
- routing Docker tramite label;
- dashboard locale su
127.0.0.1:8080.
Path
/opt/obelica/infra/traefikFile principali:
docker-compose.yml;.env;letsencrypt/acme.json.
Runtime
| Voce | Valore |
|---|---|
| Container | traefik |
| Image | traefik:v3.7.1 |
| Network | proxy |
| Porte | 80:80, 443:443, 127.0.0.1:8080:8080 |
Volumi:
/var/run/docker.sock:/var/run/docker.sock:ro
./letsencrypt:/letsencryptConfig importante
providers.docker.exposedbydefault=false
api.dashboard=true
api.insecure=trueapi.insecure=true e' accettabile solo perche' la dashboard e' bindata su 127.0.0.1.
App candidate staging
Siti web e gestionali collegati a Traefik sul droplet. Produzione resta su Vercel finche' non viene fatto switch app per app.
Target staging:
*.vps.obelica.comalessandro-zucchinicaffe-del-corsocentro-donna-giustiziamacelleriaofficina-longhiottica-styleromautosazzinisonja-trekkingtulpa-studiowash-dog-ferrara(adminestaff)zannoni
Certificati TLS
Stato attuale: DNS e ACME sono allineati per le app staging *.vps.obelica.com. tulpa-studio e' in preparazione come pilota DNS production: il router accetta gia' tulpastudio.com e www.tulpastudio.com, ma i DNS pubblici production non sono ancora puntati al VPS.
Durante l'audit e la correzione 2026-06-22:
test.obelica.comrisponde correttamente;vps.obelica.come*.vps.obelica.compuntano al Reserved IP129.212.141.97;- i router app usano
Host(<app>.vps.obelica.com), con eccezione temporanea ditulpa-studioche include anche i domini production per test pre-DNS; - tutte le app candidate rispondono con certificato trusted su staging;
- i domini pubblici app
*.obelica.comrestano su Vercel/hosting esistente fino alla migrazione app per app.
Verificare:
# connessione
openssl s_client -connect <app>.vps.obelica.com:443 -servername <app>.vps.obelica.com </dev/null
# certificato
openssl s_client -connect <app>.vps.obelica.com:443 -servername <app>.vps.obelica.com </dev/null 2>/dev/null | openssl x509 -noout -issuer -subject -datesControllo router:
curl -s http://127.0.0.1:8080/api/http/routers | jq -r '.[] | select(.provider=="docker") | [.name,.rule] | @tsv'I router app in staging non devono includere host production salvo una migrazione pilota documentata. Eccezione corrente: tulpa-studio include tulpastudio.com e www.tulpastudio.com per test pre-DNS con curl --resolve.
Comandi
cd /opt/obelica/infra/traefik
docker compose ps
docker compose up -d
docker compose logs --tail=100Dashboard:
ssh -L 8080:127.0.0.1:8080 obelica-prodPoi:
http://127.0.0.1:8080/dashboard/Regole
- Non esporre mai la dashboard pubblicamente.
- Non disattivare
exposedbydefault=false. - Ogni app pubblica deve avere label Traefik esplicite.
- Ogni app pubblica deve stare nella rete
proxy. - Valutare docker socket proxy in futuro.
- Risolvere DNS/TLS prima su
*.vps.obelica.com, poi migrare produzione app per app. - Non combinare dominio produzione e dominio staging nello stesso router Traefik durante la fase di staging, salvo pilota DNS esplicitamente documentato e testato.