RaspberryPi come soluzione NVR
Di recente, uno dei miei parenti stretti ha voluto installare un piano di sicurezza nella sua casa utilizzando una soluzione CCTV (televisione a circuito chiuso). Abbiamo ricevuto alcuni preventivi che erano chiaramente fuori dal nostro budget (il prezzo più basso era di 1300€, comprese 4 telecamere, un NVR box e il setup).
La mia sfida era di ridurre il prezzo almeno di 2, compreso l’hardware, il software e il setup. Il beneficio sottostante è anche quello di esplorare e imparare.
Mi piace iniziare prima con le cose da fare in modo da poter leggere ulteriormente i dettagli se interessati.
- Non usare un server remoto come soluzione hardware NVR. Usate invece un hardware locale, come il raspberryPI.
- Quindi, un raspberryPI con un sistema operativo leggero (Raspbian Stretch Lite) sarà usato come soluzione hardware NVR (Network Video Recording), poiché Raspberry ha una capacità di codifica/decodifica hardware H264.
- Shinobi è una soluzione CCTV Open Source che si installerà su quel dispositivo Raspberry PI e lo userà come soluzione software NVR.
- Acquista le tue telecamere avendo 2 requisiti obbligatori: dovrebbero essere IP compliant, e dovrebbero essere conformi agli standard ONVIF. La configurazione delle telecamere all’interno della soluzione CCTV sarà affrontata in un altro post del blog.
Software : Open Source Shinobi
Open Source non significa necessariamente gratis, ma ha il vantaggio di aprire il codice sorgente. E come ingegnere del software, preferisco pagare per un software che posso scavare e modificare, piuttosto che uno chiuso.
Dopo un’indagine, c’è una soluzione CCTV open source chiamata shinobi che useremo. È sviluppata con nodeJs (javascript sul lato server). Il progetto è abbastanza attivo, e ci sono 2 versioni: Community Edition, che è gratuita e sotto GPLv3, e una versione Pro, che ha un abbonamento mensile ed è sotto uno specifico EULA (end user licensing agreement). Tuttavia, è possibile utilizzare la versione Pro anche per uso personale, che è il mio caso.
Hardware : Telecamere
Ci sono un sacco di telecamere là fuori, con varie capacità e vari prezzi! Quale acquistare e installare?!
In questo articolo, non vi consiglierò un particolare dispositivo di telecamera perché dipende non solo dal proprio budget, ma anche dalle proprie esigenze (visione notturna, rilevamenti, audio, qualità dell’obiettivo…). Ma, c’è sicuramente un punto da prendere in considerazione quando acquisti la tua: la tua telecamera dovrebbe essere un dispositivo IP, e dovrebbe essere conforme a ONVIF.
ONVIF è un forum industriale aperto che fornisce e promuove interfacce standardizzate per un’effettiva interoperabilità dei prodotti di sicurezza fisica basati su IP.
Questo significa che qualunque sia il produttore, se la tua telecamera è conforme a ONVIF, allora implementa gli standard industriali aperti. Questo vi darà la possibilità di interconnettere molti dispositivi tra loro e, cosa più importante per noi, di usare il nostro NVR Open Source Shinobi per scoprire e comunicare con le nostre telecamere.
Farò un altro post che mostrerà come configurare le vostre telecamere e collegarle a Shinobi. Ma prima facciamo funzionare Shinobi, che è lo scopo di questo articolo.
Server remoto come hardware NVR: cattiva soluzione
Durante il mio esperimento, ho provato prima a installare Shinobi su un server remoto con un Atom N2800 1,86GHz, 4GB di RAM che avrei usato come hardware NVR. Ma per connettere le mie telecamere su quel server remoto, ho dovuto configurare il mio router locale in modo che il flusso in tempo reale della telecamera venisse forzato, ma anche la sua porta di protocollo ONVIF. Inoltre, c’era un’enorme latenza dallo streaming della telecamera a quel server remoto NVR (limitata dalla mia larghezza di banda di upload su internet).
Così ho deciso di installare un hardware NVR che sarebbe stato sulla stessa rete locale delle telecamere. I vantaggi sono molteplici:
- non aprire il flusso all’esterno (che potrebbe essere una violazione della sicurezza).
- avere un circuito stretto tra le telecamere e l’hardware NVR sulla rete locale
Server locale come hardware NVR: soluzione migliore
Server NVR remoto: pessima soluzione. Così la mia scelta è andata sull’utilizzo di un raspberryPI. Il prezzo è davvero conveniente per il nostro caso d’uso (circa 35€) e le capacità hardware più che sufficienti. La caratteristica più importante è la sua capacità di codifica/decodifica hardware H264.
Ho avuto un raspberryPI a casa, che è il modello 1B+ del 2014. Fa il suo lavoro, ma se non siete attrezzati, vi consiglio di acquistare l’ultimo modello ad oggi (modello 3 B+).
Installazione di Shinobi su Raspberry
Prima di installare qualsiasi software sul nostro raspberry, dobbiamo installare il sistema operativo. Nel nostro caso, useremo una versione molto leggera di Raspbian senza GUI
Installare Raspbian sul vostro PI
- Scaricare Raspbian Stretch Lite (senza pacchetti per la GUI) sul vostro computer da https://www.raspberrypi.org/downloads/raspbian/
- Controllare che non ci sia corruzione nello zip appena scaricato
$ shasum -a 256 2018–11–13-raspbian-stretch-lite.zip
- Installare l’immagine Raspbian sulla vostra SDCard. Per comodità, puoi usare uno strumento grafico drag&drop chiamato Etcher: https://www.raspberrypi.org/documentation/installation/installing-images/README.md
- Inserisci la scheda SD nel tuo raspberry PI, collega una tastiera, la tua HDMI & accendi il tuo raspberry.
Entra nel tuo PI
- Accedi al tuo raspberry. Il login predefinito è pi, la password è raspberry.
- Prima di tutto, cambia la password dell’utente ‘pi’ per motivi di sicurezza. Per farlo :
$ passwd
- Aggiorna i pacchetti sul tuo PI se necessario per avere le ultime versioni di qualsiasi di essi
$ sudo apt-get update && sudo apt-get upgrade
Abilita SSH sul tuo raspberry
Prima di tutto, controlla sul tuo raspberry se il servizio SSH è in esecuzione
$ sudo service ssh status
(consiglio : puoi controllare tutti i servizi sul tuo dispositivo eseguendo il seguente comando :
$ sudo service --status-all
Se ssh è attivo, salta questo passo; altrimenti, esegui il servizio
$ sudo service ssh start
# Per i futuri avvii, è necessario attivare ssh all’avvio
* soluzione 1
$ sudo update-rc.d ssh defaults
$ sudo update-rc.d ssh enable
- soluzione 2
o, Puoi anche configurare il tuo raspberry utilizzando lo strumento dedicato :
$ sudo raspi-config
>> Interface Settings
>> SSH
>> ENABLE
Accedi al tuo raspberry con ssh
Per accedere al tuo dispositivo dalla tua rete locale, devi conoscere il suo indirizzo IP locale. Tuttavia, questo indirizzo è attribuito dal vostro router e potrebbe cambiare nel tempo.
- Quindi o impostate un IP statico al vostro raspberryPI configurando il vostro routeur (associando un IP locale statico all’indirizzo MAC del vostro raspberryPI).
- O, la soluzione preferita qui: controllare l’hostname del vostro raspberry eseguendo il comando
$ hostname
Nel mio caso, l’hostname del dispositivo è raspberrypi. Posso quindi facilmente sshare il pi senza conoscere il suo indirizzo ip, con il seguente comando :
$ ssh [email protected]
Installare Shinobi
Ora che il nostro sistema operativo è configurato correttamente e che possiamo accedere al nostro dispositivo tramite ssh, installiamo Shinobi. Il modo più semplice è quello di eseguire il seguente comando sul vostro PI (come definito nella documentazione) :
$ sudo su
$ sh <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh)
L’installazione sarà interattiva, come segue :
# install location
Install Location for Shinobi
*Note : Default install location is "/home"
Do you want to install a custom location for Shinobi?
(y)es or (N)o? Default : No# shinobi version
Install Shinobi CE or Shinobi Pro?
— — — — — — — — — — — — — — — — — — — — — — -
*Note : Shinobi Pro is free for personal use.
*Learn more at http://shinobi.video/pro
— — — — — — — — — — — — — — — — — — — — — — -
©E or (P)ro? Default : Pro# install branch (master in stable)
Install the Development branch?
(y)es or (N)o? Default : No
N# OS selection
The installer will say that the OS is not detected. Select ubuntu instead.
Shinobi Installer
========
Select your OS
If your OS is not on the list please refer to the docs.
========
1. Ubuntu
2. CentOS
3. MacOS
4. FreeBSD
5. OpenSUSE
========
1# DB : choose MariaDB as RDBMS and choose a root password
Shinobi — Do you want to Install MariaDB? Choose No if you already have it.
(y)es or (N)o
y# install shinobi database
Shinobi — Database Installation
(y)es or (N)o
y# configure Shinobi to start on boot
Shinobi — Start Shinobi and set to start on boot?
(y)es or (N)o
y
# installation size
L’intero raspbian + shinobi (comprese tutte le dipendenze) richiede solo meno di 2GB di spazio.
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.3G 1.8G 5.2G 26% /
Ora l’installazione è completa!!!
Shinobi backoffice
L’installazione ti dirà di aprire il tuo browser con il seguente link:
|| Open http://192.168.0.10:8080/super in your web browser.
||===================================
|| Default Superuser : [email protected]
|| Default Password : admin
Tuttavia, è meglio usare l’hostname per sbarazzarsi dell’incertezza dell’indirizzo IP del tuo dispositivo (che può cambiare al riavvio)
http://raspberrypi.local:8080/super
# change super user login/pwd
Appena loggato in http://raspberrypi.local:8080/super, cambia la tua login/pwd nella scheda ‘Preferenze’ per motivi di sicurezza.
# aggiungi un nuovo utente
Oltre al super utente, hai bisogno di aggiungere un utente a shinobi (questo utente può avere la stessa email).
Questo utente sarebbe in grado di accedere alla dashboard usando direttamente questo link sulla rete locale
http://raspberrypi.local:8080/
Sei pronto per usare il tuo raspberryPi con Shinobi come soluzione NVR locale.