Immaginate di voler proteggere la vostra casa o il vostro ufficio senza rinunciare alla privacy. Con Secluso, ogni video registrato dalle telecamere è cifrato direttamente in locale, e solo voi potrete vederlo sul vostro smartphone. Se amate mettervi alla prova e non avete problemi a lavorare con la riga di comando, potete certamente provare Secluso, un progetto open source e, allo stesso tempo, un software libero (licenza GNU GPLv3) che vi offre l’opportunità di allestire un sistema di videosorveglianza tutto vostro, senza dipendere da fornitori terzi.
Per iniziare, avrete bisogno di uno smartphone Android, di un server accessibile pubblicamente e di un account Google dedicato per configurare le notifiche push tramite Firebase Cloud Messaging (FCM). Se usate una camera standalone, serve una scheda Raspberry Pi con la fotocamera collegata; se invece scegliete IP camera, vi servirà una macchina locale (hub) che faccia da ponte tra la fotocamera e Internet, senza esporre i video al mondo esterno.
Secluso: sicurezza domestica e privacy passo passo
Secluso può trasformare una scheda Raspberry Pi in una vera e propria videocamera di sorveglianza privata. In questo scenario, l’hub gira direttamente sulla Raspberry Pi, che gestisce la registrazione, la cifratura dei video e il rilevamento degli eventi.
In questo caso gli eventi rilevabili sono i seguenti: movimento, persona, animale domestico, veicolo.
In alternativa e in aggiunta, Secluso può lavorare anche con telecamere IP già esistenti. In questo caso, l’hub risiede su una macchina separata (hub locale) che si interfaccia con la telecamera. Al momento, la videocamera deve supportare RTSP (per lo streaming video) e MJPEG (per l’implementazione di motion detection personalizzata). Eventi rilevabili: solo movimento
È importante tenere presente che l’hub e il server non sono la stessa cosa: l’hub locale cifra i video e gestisce la telecamera, mentre il server pubblico funge da relay tra hub e app, senza poter decifrare i contenuti. Quest’ultimo deve avere un IP pubblico, perché lo smartphone potrebbe essere ovunque.
Abbiamo detto nell’introduzione che Secluso non si appoggia a provider terzi e poi diciamo di usare FCM? Spieghiamo.
FCM è un servizio di Google utilizzato da Secluso solo per inviare le notifiche push all’app mobile. Ad esempio, quando l’hub rileva un movimento, il server invia una richiesta a FCM, che a sua volta genera una notifica sullo smartphone. Il servizio di messaggistica Google non gestisce i video, non ha accesso ai contenuti cifrati e serve solo a far arrivare rapidamente le notifiche agli utenti.
Flusso dei dati semplificato
- La telecamera IP invia il video all’hub locale (server locale), che lo cifra.
- L’hub invia il video criptato al server pubblico.
- Il server inoltra il video all’app quando questa lo richiede.
- Per le notifiche di eventi, il server invia un messaggio a FCM, che lo recapita allo smartphone.
Quando hub locale e server pubblico coincidono
Se si utilizzasse un IP pubblico statico a casa o in ufficio, è possibile far girare il server pubblico direttamente sulla stessa macchina che ospita l’hub locale delle telecamere IP. In pratica:
- La macchina locale diventa sia l’hub che il server pubblico.
- L’app mobile comunica con questo server direttamente tramite l’IP pubblico statico, senza bisogno di un server cloud separato.
- La privacy resta garantita, perché i video sono comunque cifrati dall’hub prima di essere inviati al server (che in questo caso è sulla stessa macchina).
I vantaggi sono evidenti: non è necessario alcun server cloud, con risparmi sui costi e sulla gestione di un server remoto. Tutti i dati rimangono fisicamente “a casa” e il pairing con l’app mobile è molto semplice.
Come configurare la soluzione per la videosorveglianza open source Secluso
Il primo passo consiste nel generare le credenziali Secluso. Sul computer o sulla macchina locale, tramite lo strumento di configurazione incluso nel progetto, si creano due file: uno servirà al server per l’autenticazione, l’altro, sotto forma di QR code, sarà usato nell’app lato smartphone. Queste credenziali permettono di evitare accessi non autorizzati, pur mantenendo il server completamente cieco rispetto ai video.
Subito dopo, si passa alla configurazione delle credenziali FCM. Qui si entra nel mondo di Google Firebase: si crea un progetto dedicato, si registra l’app e si genera una chiave privata, un file JSON che non deve mai essere condiviso con nessuno. La chiave permette al server di inviare notifiche push e all’app di riceverle, rendendo possibile ricevere avvisi istantanei ogni volta che la videocamera rileva un evento.
Con le credenziali a posto, è il momento di far partire il server. Si deve copiare sul server sia il file JSON di FCM sia le credenziali utente. Una volta eseguito, il server è già operativo, ma per garantire che non si interrompa mai, è consigliabile configurarlo come servizio di sistema. In questo modo, ogni riavvio del server o crash verrà gestito automaticamente, assicurando che la comunicazione tra hub e app non si interrompa mai.
Telecamere standalone e IP camera
Se avete una camera standalone, la scheda Raspberry Pi va preparata installando rpicam-apps
, il software che gestisce la fotocamera. Il processo richiede l’installazione di librerie essenziali e la compilazione del software direttamente sulla Pi. Una volta completata l’operazione, l’hub della camera può essere eseguito, idealmente come servizio, in modo tale che si avvii automaticamente ad ogni accensione.
Se invece utilizzate una IP camera, la configurazione è leggermente diversa: la macchina locale deve avere due interfacce di rete, una per connettersi a Internet e l’altra per creare una rete privata con la camera. Collegate la camera via Ethernet e accedete al suo pannello Web per impostare parametri fondamentali come codec, risoluzione, framerate e audio. Questi dettagli, se ben configurati, garantiscono una buona qualità video senza saturare la rete locale.
Generazione dei QR code e accoppiamento con lo smartphone
Quando l’hub è pronto, sia per Raspberry Pi sia per IP camera, si genera un QR code segreto per ogni camera, necessario per il pairing con l’app. A questo punto si passa all’applicazione mobile: dopo l’installazione e la configurazione iniziale, scansionando prima il QR code delle credenziali utente e poi quello generato dall’hub, la camera è finalmente accoppiata con lo smartphone. L’app chiede i permessi per le notifiche e per la fotocamera, ma solo per la scansione iniziale dei QR code.
Una volta completato il pairing, il sistema è pienamente operativo: ogni evento rilevato dalla camera – movimento, persona, animale o veicolo – viene registrato, criptato e inviato all’app.
L’utente può guardare in diretta lo streaming della camera o ricevere notifiche immediate sul proprio smartphone. Grazie a questa architettura, Secluso unisce privacy, sicurezza dei dati e praticità d’uso, offrendo una soluzione domestica realmente sicura e controllata dall’utente.
Come installare Secluso
Per iniziare, suggeriamo di dare un’occhiata al contenuto del repository GitHub ufficiale ma, soprattutto, di fare poi riferimento alle istruzioni di installazione di Secluso.
Come primo passo, è necessario scaricare il codice sorgente Secluso, che si può clonare con il seguente comando:
git clone https://github.com/secluso/secluso.git
Sul computer locale, si generano poi le credenziali per il server e per l’app:
cd secluso/config_tool
cargo run -- --generate-user-credentials --server-addr <SERVER_URL> --dir .
Il comando produce due file: user_credentials
, da copiare sul server, e user_credentials_qrcode.png
, da usare nell’app mobile per il pairing. Queste credenziali assicurano che solo hub e app autorizzati possano comunicare con il server.
Configurare FCM
Come spiegato in precedenza, FCM serve solo per le notifiche push. Bisogna creare un progetto su Firebase Console, registrare l’app mobile con package name com.secluso.mobile
, e generare una chiave privata (service_account_key.json
). Questa chiave va copiata nella cartella del server:
mv /path-to-json-file/service_account_key.json /path-to-secluso/server/
mv /path-to-user-credentials/user_credentials /path-to-secluso/server/user_credentials/
Avviare il server pubblico
Il modulo server di Secluso va eseguito sul server con IP pubblico:
cd /path-to-secluso/server/
cargo run --release
Seguendo le indicazioni, è consigliabile configurare l’avvio del server come servizio systemd.
Preparare l’hub della camera
Se si utilizzano telecamere direttamente connesse con una Raspberry Pi, è necessario installare rpicam-apps
per gestire la fotocamera (la procedura da seguire è illustrata qui).
Il passaggio seguente consiste nell’avviare l’hub come servizio systemd per garantire che si riavvii automaticamente in caso di crash.
Avviare l’hub
Per entrambe le tipologie di camera, l’hub va avviato con:
cd /path-to-secluso/camera_hub
cargo run --release --features ip # per IP camera
cargo run --release # per Raspberry Pi
Durante l’avvio, l’hub di Secluso genera un QR code segreto per il pairing con l’app: camera_hub/camera_name_secret_qrcode.png
.
Configurare l’app mobile
L’app si installa tramite Flutter. Dal progetto clonato si devono impartire le seguenti istruzioni:
cd mobile_app
flutter pub get
Per Android, bisogna compilare il codice Rust e generare le librerie .so:
cd rust
rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
cargo ndk -o ../android/app/src/main/jniLibs build
Poi si esegue l’app sullo smartphone:
flutter run
Pairing dell’app con l’hub
All’avvio, l’app chiede di scansionare il QR code delle credenziali utente generato in precedenza. Poi, per aggiungere una camera, si seleziona il tipo (standalone o IP), si inserisce il nome della camera, l’indirizzo dell’hub e si scansiona il QR code segreto dell’hub. Dopo pochi istanti, l’hub e l’app si accoppiano e il sistema è operativo: ogni evento rilevato viene registrato, cifrato e inviato allo smartphone.