RaspberryPi als NVR oplossing
Onlangs wilde een van mijn naaste familieleden een beveiligingsplan in zijn huis installeren met behulp van een CCTV oplossing (gesloten circuit televisie oftewel videobewaking). We kregen een aantal offertes die duidelijk buiten ons budget vielen (de laagste prijs was 1300€, inclusief 4 camera’s, een NVR box en de setup).
Mijn uitdaging was om de prijs met minstens 2 te verlagen, inclusief de hardware, de software en de setup. Het onderliggende voordeel is ook om te verkennen en te leren.
Ik vind het leuk om eerst met de take aways te beginnen, zodat je de details verder kunt lezen als je geïnteresseerd bent.
- Gebruik geen externe server als NVR hardware oplossing. Gebruik in plaats daarvan een lokale hardware, zoals de raspberryPI.
- Dus, een raspberryPI met een licht besturingssysteem (Raspbian Stretch Lite) zal worden gebruikt als een NVR (Network Video Recording) hardware oplossing, omdat Raspberry een H264 hardware codering/decodering mogelijkheid heeft.
- Shinobi is een Open Source CCTV oplossing die zal worden geïnstalleerd op die raspberry PI apparaat en het zal gebruiken als een NVR software oplossing.
- Koop uw camera’s met 2 verplichte eisen: ze moeten IP-compatibel zijn, en ze moeten ONVIF-standaard compliant zijn. Het configureren van uw camera’s binnen CCTV-oplossing zal worden behandeld in een andere blog post.
Software : Open Source Shinobi
Open Source betekent niet per se gratis, maar het heeft wel het voordeel dat de broncode wordt opengesteld. En als software ingenieur betaal ik liever voor software waar ik in kan graven en die ik kan aanpassen, dan voor een gesloten software.
Na onderzoek is er een open source CCTV oplossing genaamd shinobi die we zullen gebruiken. Het is ontwikkeld met nodeJs (javascript aan de server kant). Het project is vrij actief, en er zijn 2 versies : Community Edition, die gratis is en onder GPLv3, en een Pro versie, die een maandelijks abonnement heeft en onder een specifieke EULA (end user licensing agreement) valt. Je kunt de Pro versie echter ook voor persoonlijk gebruik gebruiken, wat mijn geval is.
Hardware : Camera’s
Er zijn een heleboel camera’s, met verschillende mogelijkheden en verschillende prijzen ! Welke moet je kopen en installeren?
In dit artikel zal ik je geen bepaalde camera aanraden, omdat het niet alleen van je budget afhangt, maar ook van je behoeften (nachtzicht, detecties, geluid, lenskwaliteit…). Maar er is zeker één punt waarmee u rekening moet houden bij de aanschaf van uw camera: uw camera moet een IP-apparaat zijn, en het moet ONVIF-compatibel zijn.
ONVIF is een open industrieforum dat gestandaardiseerde interfaces biedt en bevordert voor effectieve interoperabiliteit van op IP gebaseerde fysieke beveiligingsproducten.
Dat betekent dat, ongeacht de fabrikant, als uw camera ONVIF-compatibel is, deze de open industrienormen implementeert. Dit geeft u de mogelijkheid om veel apparaten met elkaar te verbinden, en het belangrijkste voor ons, om onze Open Source Shinobi NVR te gebruiken om onze camera’s te ontdekken en ermee te communiceren.
Ik zal nog een post maken waarin ik laat zien hoe u uw camera’s kunt configureren en ze op Shinobi kunt aansluiten. Maar laten we eerst Shinobi draaien, dat is het doel van dit artikel.
Remote server als NVR hardware : slechte oplossing
Tijdens mijn experiment, heb ik eerst geprobeerd om Shinobi te installeren op een remote server met een Atom N2800 1,86GHz, 4GB RAM dat ik zou gebruiken als NVR hardware. Maar om mijn camera’s op die externe server aan te sluiten, moest ik mijn lokale router configureren om de real time stream van de camera te port-forwaden, maar ook zijn ONVIF protocol poort. Ook was er een enorme latency van het streamen van de camera naar die NVR server op afstand (beperkt door mijn internet upload bandbreedte).
Dus besloot ik om een NVR hardware te installeren die op hetzelfde lokale netwerk van de camera’s zou zitten. De voordelen zijn veelvoudig :
- het niet openen van de stream naar buiten (wat een veiligheidslek zou kunnen zijn).
- het hebben van een nauwe lus tussen de camera’s en de NVR hardware op het lokale netwerk
Lokale server als NVR hardware: betere oplossing
Verre NVR server: zeer slechte oplossing. Dus mijn keuze ging uit naar het gebruik van een raspberryPI. De prijs is echt betaalbaar voor ons gebruik (ruwweg 35€) en de hardware mogelijkheden zijn meer dan voldoende. De belangrijkste eigenschap is de H264 hardware encoding/decoding mogelijkheid.
Ik had een raspberryPI thuis, dat is het model 1B+ uit 2014. Het doet het werk, maar als je niet uitgerust bent, raad ik aan om het nieuwste model aan te schaffen (model 3 B+).
Installeren van Shinobi op Raspberry
Voordat we software op onze raspberry installeren, moeten we eerst het besturingssysteem installeren. In ons geval, zullen we een zeer lichte Raspbian versie zonder GUI gebruiken
Installeer Raspbian op uw PI
- Download de Raspbian Stretch Lite (zonder pakketten voor GUI) op uw computer van https://www.raspberrypi.org/downloads/raspbian/
- Controleer of er geen corruptie is op uw vers gedownloade zip
$ shasum -a 256 2018–11–13-raspbian-stretch-lite.zip
- Installeer de Raspbian Image op uw SDCard. Voor het gemak kunt u een drag&drop grafische tool genaamd Etcher gebruiken : https://www.raspberrypi.org/documentation/installation/installing-images/README.md
- Stop de SD kaart in uw raspberry PI, sluit een toetsenbord aan, uw HDMI & zet uw raspberry aan.
Log in op uw PI
- Log in op uw raspberry. Standaard login is pi, wachtwoord is raspberry.
- Voreerst, verander het wachtwoord van de ‘pi’ gebruiker om veiligheidsredenen. Om dit te doen :
$ passwd
- Update packages op uw PI indien nodig om de laatste versies te hebben
$ sudo apt-get update && sudo apt-get upgrade
SH inschakelen op uw raspberry
Voreerst, controleer op uw raspberry of de SSH service draait
$ sudo service ssh status
(tip : u kunt alle services op uw apparaat controleren door het volgende commando uit te voeren :
$ sudo service --status-all
Als ssh actief is, sla deze stap over; draai anders de service
$ sudo service ssh start
# Voor toekomstige boots, moet u ssh activeren bij het opstarten
* oplossing 1
$ sudo update-rc.d ssh defaults
$ sudo update-rc.d ssh enable
- oplossing 2
of, U kunt uw raspberry ook configureren met behulp van de speciale tool :
$ sudo raspi-config
>> Interface Settings
>> SSH
>> ENABLE
Toegang tot uw raspberry via ssh
Om toegang te krijgen tot uw apparaat vanaf uw lokale netwerk, moet u het lokale IP-adres kennen. Dit adres wordt echter door uw router toegekend en kan in de loop van de tijd veranderen.
- Dus ofwel stelt u een statische IP in op uw raspberryPI door uw routeur te configureren (door een statische lokale IP aan het MAC-adres van uw raspberryPI te koppelen).
- Of, de beste oplossing hier: controleer de hostnaam van uw raspberry door het commando uit te voeren
$ hostname
In mijn geval is de hostnaam van het apparaat raspberrypi. Ik kan dan gemakkelijk de pi ssh-en zonder zijn ip adres te kennen, door het volgende commando uit te voeren :
$ ssh [email protected]
Installeer Shinobi
Nu dat ons OS juist geconfigureerd is en dat we toegang hebben tot ons apparaat via ssh, laten we Shinobi installeren. De makkelijkste manier is om het volgende commando uit te voeren op je PI (zoals beschreven in de documentatie) :
$ sudo su
$ sh <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh)
De installatie zal interactief zijn, als volgt :
# 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
# installatie grootte
De gehele raspbian + shinobi (inclusief alle afhankelijkheden) nam minder dan 2GB ruimte in beslag.
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.3G 1.8G 5.2G 26% /
Nu is de installatie compleet !!!
Shinobi backoffice
De installatie zal u vertellen om uw browser te openen met de volgende link :
|| Open http://192.168.0.10:8080/super in your web browser.
||===================================
|| Default Superuser : [email protected]
|| Default Password : admin
Het is echter beter om de hostnaam te gebruiken om van de onzekerheid van het IP adres van uw apparaat af te komen (dat kan veranderen na een reboot)
http://raspberrypi.local:8080/super
# verander super user login/pwd
Zodra u bent ingelogd in http://raspberrypi.local:8080/super, verander dan uw login/pwd in het ‘Voorkeuren’ tabblad om veiligheidsredenen.
# voeg een nieuwe gebruiker toe
Na de super gebruiker, moet u een gebruiker toevoegen aan shinobi (deze gebruiker kan dezelfde email hebben).
Deze gebruiker kan inloggen op het dashboard via deze link op het lokale netwerk
http://raspberrypi.local:8080/
U bent nu klaar om uw raspberryPi met Shinobi te gebruiken als een lokale NVR oplossing.