Come è fatto¶
Hardware¶
| Nodo | Macchina | Ruolo |
|---|---|---|
| Router | GL.iNet Flint 3 | Router, WiFi, DHCP, firewall, DNS con filtro |
| Raspberry Pi 5 | 8 GB, disco USB da 2 TB | Ingresso pubblico, servizi personali, automazione |
| Mini PC | Acemagic K1, Ryzen 5 7430U | Media, documenti, monitoraggio, domotica in una VM |
| NAS | ZimaBlade con TrueNAS SCALE, due dischi in mirror | Archivio, foto, destinazione dei backup |
| OrangePi Zero 2 | — | Legge il gruppo di continuità |
| Tre VPS | Due Ubuntu, un Debian | App di lavoro, siti, posta |
Scelte¶
Nessuna porta aperta. La linea di casa è dietro CGNAT, quindi le porte non si potrebbero aprire comunque. I servizi pubblici escono attraverso un tunnel Cloudflare verso un reverse proxy; tutto il resto si raggiunge solo dalla rete privata Tailscale.
Una direzione sola verso i server esterni. Casa raggiunge i VPS, i VPS non possono aprire connessioni verso casa. Un server esposto a Internet che viene compromesso non diventa una porta d'ingresso nella rete di casa. Il prezzo è che tutto il monitoraggio deve partire da casa.
Tre reti separate. Casa, dispositivi IoT e ospiti. I dispositivi IoT non raggiungono la rete di casa, salvo due eccezioni dichiarate verso la domotica.
Container ovunque, con un solo strumento per gestirli. Ogni servizio ha il suo file compose in una cartella nota. Un pannello unico mostra i container di tutti i nodi e si occupa degli aggiornamenti: automatici in casa, mai sui server di produzione.
Backup cifrati in due passi. Ogni notte i nodi copiano configurazioni e database sul NAS; da lì la copia, già cifrata, va fuori casa. Film, serie e download sono dichiarati sacrificabili e non vengono copiati.
Spegnimento pulito. Un gruppo di continuità regge i nodi; quando la batteria scende, un piccolo server avvisa gli altri, che si spengono in ordine.
Documentazione come codice. Pagine in Markdown e diagrammi in testo, nello stesso repository delle configurazioni. Un comando confronta i container reali con le schede dei diagrammi ed elenca le differenze.