Rete e firewall
DNS, firewall, porte pubbliche, tunnel e reti Docker
DNS
Policy attuale:
- non migrare globalmente la produzione ora;
- mantenere
*.obelica.comsu Vercel finche' ogni app non e' pronta; - usare
*.vps.obelica.comcome staging VPS; - testare ogni app su staging VPS prima dello switch finale.
Record rilevanti attuali:
| Dominio | Destinazione |
|---|---|
test.obelica.com | 129.212.141.97 |
vps.obelica.com | 129.212.141.97 |
*.vps.obelica.com | 129.212.141.97 |
*.obelica.com | produzione attuale Vercel/hosting esistente, non switchare globalmente |
Durante l'audit 2026-06-22 molti domini app *.obelica.com risolvevano a IP 216.150.* invece che al droplet, causando fallimenti Let's Encrypt se inclusi nei router VPS. Il 2026-06-22 e' stata introdotta la separazione: router VPS solo su *.vps.obelica.com, produzione lasciata su Vercel.
Certificati TLS
Stato attuale: i certificati staging su *.vps.obelica.com sono affidabili.
Impatto:
test.obelica.comfunziona;vps.obelica.comfunziona come endpoint diagnostico pubblicowhoami;- le app staging rispondono pubblicamente via Traefik;
- Let's Encrypt funziona quando il router contiene solo il dominio staging;
- i log storici possono contenere errori di validazione sui domini produzione.
Piano:
- Tenere DNS staging
*.vps.obelica.com -> 129.212.141.97. - Tenere i router staging separati dai domini produzione.
- Verificare
acme.jsone log Traefik dopo ogni nuova app. - Migrare produzione app per app solo dopo smoke test.
Vedi anche Certificati.
DigitalOcean Cloud Firewall
Il Cloud Firewall e' il controllo principale dichiarato per SSH.
Policy richiesta:
| Porta | Sorgente |
|---|---|
22/tcp | solo IP fidati del proprietario |
80/tcp | pubblico |
443/tcp | pubblico |
| altre porte | non pubbliche |
Questa configurazione non e' verificabile completamente da shell senza accesso API/pannello DigitalOcean. Va controllata manualmente nel pannello DigitalOcean o con doctl.
UFW
Stato systemd rilevato:
ufw: activeDa questa sessione ufw status verbose richiede root, quindi le regole effettive sono da verificare con:
sudo ufw status numbered
sudo ufw status verbosePorte host
| Porta | Bind | Note |
|---|---|---|
22 | 0.0.0.0, [::] | SSH, mitigato da Cloud Firewall |
80 | 0.0.0.0, [::] | Traefik HTTP |
443 | 0.0.0.0, [::] | Traefik HTTPS |
8080 | 127.0.0.1 | Traefik dashboard |
3333 | 127.0.0.1 | Forgejo |
3334 | 127.0.0.1 | Obelica Docs |
Regola operativa: le porte 3333, 3334, 8080 non devono mai diventare 0.0.0.0 senza una decisione esplicita e un hardening dedicato.
Tunnel SSH
Accesso manuale:
ssh -L 3333:127.0.0.1:3333 obelica-prod
ssh -L 3334:127.0.0.1:3334 obelica-prod
ssh -L 8080:127.0.0.1:8080 obelica-prodAccesso tramite CLI Rust:
obelica tunnel forgejo --open
obelica tunnel docs --open
obelica tunnel traefik --open
obelica tunnel all --openIl CLI non apre nuove superfici pubbliche: automatizza solo il comando ssh.
Reti Docker
| Network | Uso |
|---|---|
proxy | rete per servizi pubblicati da Traefik |
forgejo-internal | rete privata Forgejo/Postgres |
obelica-docs_default | rete privata del compose docs |
<app>_default | rete privata di ciascun compose app |
Policy:
- una app pubblica deve usare
proxye label Traefik; - un DB non deve stare in
proxysalvo necessita eccezionale; - una dashboard amministrativa deve restare su loopback o rete privata.