RaspberryPi som en NVR-løsning
For nylig ønskede en af mine nære slægtninge at installere en sikkerhedsplan i sit hus ved hjælp af en CCTV-løsning (closed circuit television aka videoovervågning). Vi fik nogle tilbud, som var klart uden for vores budget (den laveste pris var 1300€, inklusive 4 kameraer, en NVR boks og opsætningen).
Min udfordring var at reducere prisen mindst med 2, inklusive hardware, software og opsætning. Den underliggende fordel er også at udforske og lære.
Jeg starter gerne med take aways først, så du kan læse yderligere detaljerne hvis du er interesseret.
- Brug ikke en fjernserver som en NVR-hardwareløsning. Brug i stedet en lokal hardware, som f.eks. en raspberryPI.
- Så vil en raspberryPI med et let operativsystem (Raspbian Stretch Lite) blive brugt som en NVR (Network Video Recording) hardware løsning, da Raspberry har en H264 hardware kodning/afkodning kapacitet.
- Shinobi er en Open Source CCTV-løsning, der vil blive installeret på den pågældende raspberry PI-enhed og brugt som NVR-softwareløsning.
- Køb dine kameraer med 2 obligatoriske krav : de skal være IP-kompatible, og de skal være ONVIF-standard-kompatible. Konfigurering af dine kameraer inden for CCTV-løsningen vil blive behandlet i et andet blogindlæg.
Software : Open Source Shinobi
Open Source betyder ikke nødvendigvis gratis, men det har den fordel at åbne kildekoden. Og som softwareingeniør vil jeg hellere betale for en software, som jeg kan grave i og ændre, end for en lukket software.
Efter undersøgelse findes der en open source CCTV-løsning kaldet shinobi, som vi vil bruge. Den er udviklet med nodeJs (javascript på serversiden). Projektet er ret aktivt, og der findes 2 versioner : Community Edition, som er gratis og under GPLv3, og en Pro-version, som har et månedligt abonnement og er under en særlig EULA (end user licensing agreement). Du kan dog også bruge Pro-versionen til personlig brug også, hvilket er mit tilfælde.
Hardware : Kameraer
Der er en masse kameraer derude, med forskellige muligheder og forskellige priser ! Hvilket et skal man købe og installere?!
I denne artikel vil jeg ikke anbefale dig en bestemt kameraenhed, fordi det ikke kun afhænger af ens budget, men også af ens behov (nattesyn, detektioner, lyd, objektivkvalitet…). Men der er helt sikkert et punkt, som du skal tage hensyn til, når du køber dit: dit kamera skal være en IP-enhed, og det skal være ONVIF-kompatibelt.
ONVIF er et åbent brancheforum, der leverer og fremmer standardiserede grænseflader til effektiv interoperabilitet mellem IP-baserede fysiske sikkerhedsprodukter.
Det betyder, at uanset hvilken producent det er, hvis dit kamera er ONVIF-kompatibelt, så implementerer det de åbne branchestandarder. Dette vil give dig mulighed for at forbinde mange enheder med hinanden, og vigtigst af alt for os, at bruge vores Open Source Shinobi NVR til at opdage og kommunikere med vores kameraer.
Jeg vil lave et andet indlæg, der viser, hvordan du konfigurerer dine kameraer og tilslutter dem til Shinobi. Men lad os først få Shinobi til at køre, hvilket er formålet med denne artiche.
Remote server som NVR-hardware : dårlig løsning
I mit eksperiment forsøgte jeg først at installere Shinobi på en ekstern server med en Atom N2800 1,86GHz, 4GB RAM, som jeg ville bruge som NVR-hardware. Men for at forbinde mine kameraer på denne fjernserver, måtte jeg konfigurere min lokale router til port-forwad realtidsstrømmen fra kameraet, men også dens ONVIF-protokolport. Der var også en enorm latenstid fra streaming af kameraet til den eksterne NVR-server (begrænset af min internet-upload-båndbredde).
Så jeg besluttede at installere en NVR-hardware, der ville være på det samme lokale netværk som kameraerne. Fordelene er flere :
- ikke at åbne streamingen til omverdenen (hvilket kunne være et sikkerhedsbrud).
- at have et tæt loop mellem kameraerne og NVR-hardwaren på det lokale netværk
Lokal server som NVR-hardware : bedre løsning
Fjerntliggende NVR-server: meget dårlig løsning. Så mit valg gik på at bruge en raspberryPI. Prisen er virkelig overkommelig for vores use case (ca. 35 €) og hardwarekapaciteterne mere end nok. Den vigtigste funktion er dens H264-hardwarekodning/afkodningsevne.
Jeg havde en raspberryPI derhjemme, som er model 1B+ fra 2014. Det gør jobbet, men hvis du ikke er udstyret, anbefaler jeg at købe den nyeste model til dato (model 3 B+).
Installation af Shinobi på hindbær
Hvor vi installerer nogen software på vores hindbær, skal vi installere operativsystemet. I vores tilfælde vil vi bruge en meget let Raspbian-version uden GUI
Installer Raspbian på din PI
- Download Raspbian Stretch Lite (uden pakker til GUI) på din computer fra https://www.raspberrypi.org/downloads/raspbian/
- Kontroller, at der ikke er nogen korruption på din frisk downloadede zip
$ shasum -a 256 2018–11–13-raspbian-stretch-lite.zip
- Installer Raspbian Image på dit SDCard. For nemheds skyld kan du bruge et drag&drop grafisk værktøj kaldet Etcher : https://www.raspberrypi.org/documentation/installation/installing-images/README.md
- Indsæt SD-kortet i din raspberry PI, tilslut et tastatur, din HDMI & tænd din raspberry.
Log ind på din PI
- Log ind på din raspberry. Standard login er pi, password er raspberry.
- Først og fremmest skal du ændre adgangskoden for brugeren ‘pi’ af sikkerhedshensyn. Sådan gør du :
$ passwd
- opdatér pakker på din PI, hvis det er nødvendigt for at have de nyeste versioner af nogen af dem
$ sudo apt-get update && sudo apt-get upgrade
Aktiver SSH på din hindbær
Først af alt skal du kontrollere på din hindbær, om SSH-tjenesten kører
$ sudo service ssh status
(tip : du kan kontrollere alle tjenester på din enhed ved at køre følgende kommando :
Hvis ssh er aktiv, spring dette trin over; ellers skal du køre tjenesten
$ sudo service ssh start
# For fremtidige opstarter skal du aktivere ssh ved opstart
* løsning 1
$ sudo update-rc.d ssh defaults
$ sudo update-rc.d ssh enable
- løsning 2
eller, Du kan også konfigurere din raspberry ved hjælp af det dedikerede værktøj :
$ sudo raspi-config
>> Interface Settings
>> SSH
>> ENABLE
Access your raspberry by ssh
For at få adgang til din enhed fra dit lokale netværk, skal du kende dens lokale IP-adresse. Denne adresse tildeles dog af din router og kan ændre sig over tid.
- Så enten indstiller du en statisk IP til din raspberryPI ved at konfigurere din routeur (tilknytte en statisk lokal IP til MAC-adressen på din raspberryPI).
- Og, den foretrukne løsning her : tjek hostnavnet på din raspberry ved at udføre kommandoen
$ hostname
I mit tilfælde er enhedens hostnavn raspberrypi. Jeg kan derefter nemt ssh’e pi’en uden at kende dens ip-adresse, ved at udføre følgende kommando :
Installer Shinobi
Nu da vores OS er korrekt konfigureret, og at vi kan få adgang til vores enhed via ssh, lad os installere Shinobi. Den nemmeste måde er at køre følgende kommando på din PI (som defineret i dokumentationen) :
$ sudo su
$ sh <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh)
Installationen vil være interaktiv, som følger :
# 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
# installationsstørrelse
Hele raspbian + shinobi (inklusive alle afhængigheder) tog kun mindre end 2GB plads.
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.3G 1.8G 5.2G 26% /
Nu er installationen færdig !!!
Shinobi backoffice
Installationen vil fortælle dig at du skal åbne din browser med følgende link :
|| Open http://192.168.0.10:8080/super in your web browser.
||===================================
|| Default Superuser : [email protected]
|| Default Password : admin
Det er dog bedre at bruge værtsnavnet for at slippe for usikkerheden om IP-adressen på din enhed (som kan ændre sig under genstart)
http://raspberrypi.local:8080/super
# change super user login/pwd
Så snart du er logget ind på http://raspberrypi.local:8080/super, skal du af sikkerhedshensyn ændre dit login/pwd i fanen ‘Preferences’ (Præferencer).
# tilføj en ny bruger
Udover superbrugeren skal du tilføje en bruger til shinobi (denne bruger kan have den samme e-mail).
Denne bruger vil kunne logge på dashboardet ved hjælp af direkte dette link på det lokale netværk
http://raspberrypi.local:8080/
Du er klar til at bruge din raspberryPi med Shinobi som en lokal NVR-løsning.