Il cloud di casa
Due mini-PC sempre accesi che ospitano i file, le foto e le telecamere della mia famiglia, senza affidarli a servizi esterni.
Perché l'ho fatto
In famiglia usiamo ogni giorno file, foto e telecamere, e volevo tenerli sotto il mio controllo: sincronizzazione, condivisione e backup decisi da me. Nell'archivio foto ci sono oltre 72.000 immagini. Il vincolo era l'hardware, due piccoli computer con quattro core e poca memoria, quindi nessun servizio doveva restare acceso a vuoto.
Dall'esterno tutto passa da un tunnel Cloudflare, senza aprire porte sul router.
Cosa c'è dentro
- Nextcloud per i file, installato direttamente sul sistema con autenticazione a due fattori. La configurazione è versionata, con uno script che nasconde i segreti prima di salvarla.
- Immich come galleria foto, con riconoscimento dei volti e ricerca a parole. Lavora sopra le foto già presenti in Nextcloud, senza spostare nessun file.
- Frigate per tre telecamere, con un bot Telegram che avvisa e risponde ai comandi.
- Uno spegnimento automatico: i servizi inattivi si fermano dopo 30 minuti (due ore per il programma di download) e si riaccendono alla prima visita, con una pagina di attesa che si ricarica da sola.
Alcune scelte e problemi
- 01
Backup che non resta collegato
Ogni notte uno script copia i dati (circa 260 GB) su un disco esterno da 6 TB che resta scollegato il resto del tempo: lo monta, copia e lo smonta anche se la copia fallisce. Copia anche il database di Immich.
- 02
Passare a Immich senza spostare file
Le foto già presenti sono passate da libreria esterna a libreria interna con un solo UPDATE sul database, dopo un dump di sicurezza. Poi ho dovuto ricalcolare a mano i checksum, altrimenti l'app sul telefono voleva caricare tutto da capo. Nel controllo di integrità sono emerse 6.715 copie identiche (6,8 GB), finite nel cestino.
- 03
Il riconoscimento sulla GPU
Il riconoscimento gira sulla scheda grafica integrata. Serve un driver installato a mano e ho ridotto i lavori in parallelo: con i valori iniziali il carico saliva a 16 su 4 core. In parte era un carico solo apparente, e l'ho annotato nel README.
- 04
Un limite di Cloudflare
Il piano gratuito limita le richieste a 100 MB: 236 video, il più grande di 11 GB, si caricano solo dalla rete di casa o in VPN. L'ho scritto nella documentazione.
- 05
Privacy delle telecamere
Il programma che distingue i due gatti manda un ritaglio a un assistente AI solo se nessun telefono di famiglia è in casa e se l'inquadratura non sembra una persona. Se non è sicuro, non manda niente. Questa cautela serve perché la presenza rilevata dal Wi-Fi può essere sbagliata: una volta un falso «a casa» aveva tenuto fermo il programma per 20 giorni.
Cosa ho fatto io
Tutto: installazione, configurazione, script, documentazione. Ho lavorato insieme a un assistente AI e ho lasciato dei documenti di passaggio di consegne e un elenco delle «cose da non rompere», per riprendere il lavoro dopo settimane o affidarlo a un agente. Ho misurato prima di decidere: concorrenza, soglie, tempi. Un esperimento, il plugin di riconoscimento di Nextcloud portato sulla GPU, è passato da 3,2 a 0,52 secondi per foto su 229 foto. L'ho poi spento perché Immich fa lo stesso lavoro, ma resta documentato.
Limiti
È un sistema da appassionato: due macchine, nessuna ridondanza oltre al backup su disco esterno, e se un computer si ferma, si ferma tutto. Alcune parti restano manuali e fuori da git (le operazioni pianificate di sistema, il driver della GPU, le credenziali). Il riconoscimento dei due gatti è ancora in lavorazione. Lo uso in famiglia da settembre 2026 e lo mantengo; i repository sono privati, quindi non c'è codice da guardare né demo.
Stack
Linux (Ubuntu) · Docker · Nextcloud · Immich · Frigate · Caddy e Sablier · Cloudflare Tunnel · Pi-hole · Python · shell
Il mio ruolo
Progetto personale: progettazione, installazione e manutenzione.