RaspberryPi NVR-ratkaisuna
Viime aikoina yksi lähisukulaiseni halusi asentaa taloonsa turvallisuussuunnitelman CCTV-ratkaisun (suljetun piirin televisio eli videovalvonta) avulla. Saimme muutamia tarjouksia, jotka olivat selvästi budjetin ulkopuolella (halvin hinta oli 1300€, sisältäen 4 kameraa, NVR-boxin ja asennuksen).
Haasteeni oli leikata hintaa vähintään kahdella, sisältäen laitteiston, ohjelmiston ja asennuksen. Taustalla oleva hyöty on myös tutustuminen ja oppiminen.
Tykkään aloittaa take aways ensin, jotta voit lukea tarkemmin yksityiskohtia, jos kiinnostaa.
- Ei kannata käyttää etäpalvelinta NVR-laitteistoratkaisuna. Käytä sen sijaan paikallista laitteistoa, kuten raspberryPI:tä.
- Niin, raspberryPI:tä kevyellä käyttöjärjestelmällä (Raspbian Stretch Lite) käytetään NVR (Network Video Recording) -laitteistoratkaisuna, koska vadelmalla on H264-laitteiston koodaus/dekoodausominaisuudet.
- Shinobi on avoimen lähdekoodin CCTV-ratkaisu, joka asennetaan tuohon raspberry PI-laitteeseen ja käytetään sitä NVR-ohjelmistoratkaisuna.
- Osta kamerat, joilla on kaksi pakollista vaatimusta: niiden on oltava IP-yhteensopivia ja niiden on oltava ONVIF-standardien mukaisia. Kameroiden konfigurointi CCTV-ratkaisussa käsitellään toisessa blogikirjoituksessa.
Ohjelmisto : Avoimen lähdekoodin Shinobi
Avoin lähdekoodi ei välttämättä tarkoita ilmaista, mutta sen etuna on lähdekoodin avaaminen. Ja ohjelmistosuunnittelijana maksan mieluummin ohjelmistosta, jota voin kaivaa ja muokata, kuin suljetusta.
Tutkimusten jälkeen on olemassa avoimen lähdekoodin CCTV-ratkaisu nimeltä shinobi, jota käytämme. Se on kehitetty nodeJs:llä (javascript palvelinpuolella). Projekti on melko aktiivinen, ja siitä on 2 versiota : Community Edition, joka on ilmainen ja GPLv3:n alainen, ja Pro-versio, joka on kuukausitilaus ja jolla on erityinen EULA (loppukäyttäjän lisenssisopimus). Pro-versiota voi kuitenkin käyttää myös henkilökohtaiseen käyttöön, mikä on minun tapaukseni.
Hardware : Kamerat
Kameroita on paljon, eri ominaisuuksilla ja eri hinnoilla ! Minkä ostaa ja asentaa ?!
Tässä artikkelissa en suosittele mitään tiettyä kameralaitetta, koska se riippuu paitsi budjetista, myös tarpeista (yökuvaus, ilmaisimet, ääni, objektiivin laatu…). Mutta yksi asia on ehdottomasti otettava huomioon, kun ostat kamerasi : kamerasi tulisi olla IP-laite, ja sen tulisi olla ONVIF-yhteensopiva.
ONVIF on avoin teollisuusfoorumi, joka tarjoaa ja edistää standardoituja rajapintoja IP-pohjaisten fyysisten turvatuotteiden tehokasta yhteentoimivuutta varten.
Tämä tarkoittaa, että valmistajasta riippumatta, jos kamerasi on ONVIF-yhteensopiva, se toteuttaa avoimet teollisuusstandardit. Tämä antaa sinulle mahdollisuuden yhdistää monia laitteita toisiinsa ja, mikä meille on tärkeintä, käyttää avoimen lähdekoodin Shinobi NVR:ää löytämään kameramme ja kommunikoimaan niiden kanssa.
Tulen tekemään toisen postauksen, jossa näytän, miten kamerat konfiguroidaan ja liitetään Shinobiin. Mutta ensin otetaan Shinobi käyttöön, mikä on tämän artikkelin tarkoitus.
Kaukopalvelin NVR-laitteistona : huono ratkaisu
Kokeiluni aikana yritin ensin asentaa Shinobin kaukopalvelimelle, jossa on Atom N2800 1,86GHz, 4GB RAM-muistia, jota käyttäisin NVR-laitteistona. Mutta liittääkseni kamerani tuohon etäpalvelimeen, minun oli määritettävä paikallinen reitittimeni niin, että se porttasi reaaliaikavirran kamerasta, mutta myös sen ONVIF-protokollan portin. Lisäksi oli valtava viive kameran suoratoistosta tuohon etä-NVR-palvelimeen (rajoitettu internetin latauskaistanleveydellä).
Joten päätin asentaa NVR-laitteiston, joka olisi samassa lähiverkossa kameroiden kanssa. Hyötyjä on useita :
- ei avata streamia ulospäin (mikä voisi olla tietoturvaloukkaus).
- suljettu silmukka kameroiden ja NVR-laitteiston välillä lähiverkossa
Lokaali palvelin NVR-laitteistona : parempi ratkaisu
Kaukana oleva NVR-palvelin : erittäin huono ratkaisu. Joten valintani meni raspberryPI:n käyttöön. Hinta on todella edullinen meidän käyttötapaukseen (noin 35€) ja laitteiston ominaisuudet enemmän kuin riittävät. Tärkein ominaisuus on sen H264-laitteistokoodaus/dekoodausmahdollisuus.
Minulla oli kotona yksi raspberryPI, joka on malli 1B+ vuodelta 2014. Se tekee työnsä, mutta jos sinulla ei ole varusteita, suosittelen hankkimaan uusimman mallin tähän mennessä (malli 3 B+).
Shinobin asentaminen vadelmalle
Ennen kuin asennamme mitään ohjelmistoja vadelmallemme, meidän on asennettava käyttöjärjestelmä. Meidän tapauksessamme käytämme hyvin kevyttä Raspbian-versiota, jossa ei ole graafista käyttöliittymää
Asenna Raspbian PI:lle
- Lataat Raspbian Stretch Liten (ilman paketteja graafista käyttöliittymää varten) tietokoneellesi osoitteesta https://www.raspberrypi.org/downloads/raspbian/
- Tarkista, ettei juuri ladatussa zip-tiedostossasi ole mitään korruptoitunutta
$ shasum -a 256 2018–11–13-raspbian-stretch-lite.zip
- Asenna Raspbian-kuva SD-kortille. Yksinkertaisuuden vuoksi voit käyttää drag&drop graafista työkalua nimeltä Etcher : https://www.raspberrypi.org/documentation/installation/installing-images/README.md
- Asenna SD-kortti raspberry PI:hen, kytke näppäimistö, HDMI & käynnistä raspberry
Loggaa sisään PI:hen
- Loggaa sisään raspberryyn. Oletustunnus on pi, salasana on raspberry.
- Vaihda ensin ’pi’ käyttäjän salasana turvallisuussyistä. Tehdäksesi tämän :
$ passwd
- Päivitä paketit PI:ssäsi tarvittaessa, jotta sinulla on uusimmat versiot jostakin paketista
$ sudo apt-get update && sudo apt-get upgrade
Kytke SSH päälle vadelmassasi
Tarkista ensin vadelmassasi, onko SSH-palvelu käynnissä
$ sudo service ssh status
(vinkki : voit tarkistaa kaikki laitteesi palvelut ajamalla seuraavalla komennolla :
$ sudo service --status-all
Jos ssh on aktiivinen, ohita tämä vaihe; muussa tapauksessa suorita palvelu
$ sudo service ssh start
# Tulevia käynnistyksiä varten sinun on aktivoitava ssh käynnistyksen yhteydessä
* Ratkaisu 1
$ sudo update-rc.d ssh defaults
$ sudo update-rc.d ssh enable
- Ratkaisu 2
tai, Voit myös konfiguroida vadelmasi käyttämällä siihen tarkoitettua työkalua :
$ sudo raspi-config
>> Interface Settings
>> SSH
>> ENABLE
Access your raspberry by ssh
Käyttääksesi laitetta lähiverkosta, sinun on tiedettävä sen paikallinen IP-osoite. Tämä osoite on kuitenkin reitittimesi antama ja se saattaa muuttua ajan mittaan.
- Joko asetat siis staattisen IP:n raspberryPI:lle konfiguroimalla reitittimesi (yhdistämällä staattisen paikallisen IP:n raspberryPI:n MAC-osoitteeseen).
- Tai, tässä tapauksessa suositeltavampi ratkaisu : tarkista vadelmasi isäntänimi komennolla
$ hostname
Tapauksessani laitteen isäntänimeksi on valittu raspberrypi. Voin sitten helposti ssh:ta pi:lle tietämättä sen ip-osoitetta, seuraavalla komennolla :
$ ssh [email protected]
Asenna Shinobi
Nyt kun käyttöjärjestelmämme on oikein konfiguroitu ja pääsemme laitteeseemme ssh:n kautta, asennetaan Shinobi. Helpoin tapa on ajaa seuraava komento PI:lläsi (kuten dokumentaatiossa on määritelty) :
$ sudo su
$ sh <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh)
Asennus tapahtuu interaktiivisesti seuraavasti :
# 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
# asennuskoko
Kokonaisuudessaan raspbian + shinobi (kaikkine riippuvuuksineen) vei vain alle 2 Gt tilaa.
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.3G 1.8G 5.2G 26% /
Nyt asennus on valmis !!!
Shinobi backoffice
Asennus kehottaa sinua avaamaan selaimesi seuraavalla linkillä :
|| Open http://192.168.0.10:8080/super in your web browser.
||===================================
|| Default Superuser : [email protected]
|| Default Password : admin
On kuitenkin parempi käyttää host-nimeä, jotta pääset eroon laitteen IP-osoitteen epävarmuudesta (joka voi muuttua uudelleenkäynnistyksen yhteydessä)
http://raspberrypi.local:8080/super
# change super user login/pwd
Heti kun olet kirjautunut http://raspberrypi.local:8080/super:iin, vaihda kirjautumistunnuksesi/pwd:si ’Asetukset’-välilehdellä turvallisuussyistä.
# add a new user
Superkäyttäjän lisäksi sinun täytyy lisätä käyttäjä shinobiin (tällä käyttäjällä voi olla sama sähköpostiosoite).
Tämä käyttäjä pystyisi kirjautumaan kojelautaan suoraan tämän linkin kautta lähiverkossa
http://raspberrypi.local:8080/
Olet valmis käyttämään raspberryPi:täsi Shinobin kanssa paikallisena NVR-ratkaisuna
.