RaspberryPi comme solution NVR

Récemment, un de mes proches parents voulait installer un plan de sécurité dans sa maison en utilisant une solution CCTV (closed circuit television aka video surveillance). Nous avons obtenu quelques devis qui étaient clairement hors budget pour nous (le prix le plus bas était de 1300€, incluant 4 caméras, un boîtier NVR et l’installation).

Mon défi était de réduire le prix au moins par 2, incluant le matériel, le logiciel et l’installation. Le bénéfice sous-jacent est également d’explorer et d’apprendre.

J’aime commencer par les take aways afin que vous puissiez lire plus loin les détails si cela vous intéresse.

  • Ne pas utiliser un serveur distant comme solution matérielle NVR. Utilisez plutôt un matériel local, comme celui de raspberryPI.
  • Ainsi, un raspberryPI avec un système d’exploitation léger (Raspbian Stretch Lite) sera utilisé comme solution matérielle NVR (Network Video Recording), car Raspberry a une capacité d’encodage/décodage matériel H264.
  • Shinobi est une solution CCTV Open Source qui s’installera sur ce périphérique raspberry PI et l’utilisera comme solution logicielle NVR.
  • Achetez vos caméras en ayant 2 exigences obligatoires : elles doivent être compatibles IP, et doivent être conformes aux normes ONVIF. La configuration de vos caméras au sein de la solution CCTV sera abordée dans un autre billet de blog.

Logiciel : Open Source Shinobi

Open Source ne signifie pas nécessairement gratuit, mais il a l’avantage d’ouvrir le code source. Et en tant qu’ingénieur logiciel, je préfère payer pour un logiciel dans lequel je peux creuser et modifier, plutôt qu’un logiciel fermé.

Après enquête, il existe une solution de vidéosurveillance open source appelée shinobi que nous allons utiliser. Elle est développée avec nodeJs (javascript côté serveur). Le projet est assez actif, et il existe 2 versions : Community Edition, qui est gratuite et sous GPLv3, et une version Pro, qui a un abonnement mensuel et est sous un EULA (end user licensing agreement) spécifique. Cependant, vous pouvez utiliser la version Pro pour un usage personnel également, ce qui est mon cas.

Matériel : Caméras

Il existe un tas de caméra, avec diverses capacités et divers prix ! Laquelle acheter et installer ?!

Dans cet article, je ne vous recommanderai pas de dispositif de caméra particulier car cela dépend non seulement de ses budgets, mais aussi de ses besoins (vision nocturne, détections, audio, qualité de l’objectif…). Mais, il y a certainement un point à prendre en compte lors de l’achat de la vôtre : votre caméra doit être un dispositif IP, et elle doit être conforme à l’ONVIF.

L’ONVIF est un forum industriel ouvert qui fournit et promeut des interfaces standardisées pour une interopérabilité efficace des produits de sécurité physique basés sur l’IP.

Cela signifie que, quel que soit le fabricant, si votre caméra est conforme à l’ONVIF, alors elle met en œuvre les normes industrielles ouvertes. Cela vous donnera la possibilité d’interconnecter de nombreux appareils entre eux, et surtout pour nous, d’utiliser notre NVR Open Source Shinobi pour découvrir et communiquer avec nos caméras.

Je ferai un autre post montrant comment configurer vos caméras et les brancher sur Shinobi. Mais commençons par faire fonctionner Shinobi, ce qui est le but de cet artiche.

Serveur distant comme matériel NVR : mauvaise solution

Pendant mon expérience, j’ai d’abord essayé d’installer Shinobi sur un serveur distant ayant un Atom N2800 1,86GHz, 4GB de RAM que j’utiliserais comme matériel NVR. Mais pour connecter mes caméras sur ce serveur distant, j’ai dû configurer mon routeur local pour forcer le port du flux en temps réel de la caméra, mais aussi son port de protocole ONVIF. De plus, il y avait une énorme latence du streaming de la caméra vers ce serveur NVR distant (limité par ma bande passante de téléchargement internet).

J’ai donc décidé d’installer un matériel NVR qui serait sur le même réseau local que les caméras. Les avantages sont multiples :

  • ne pas ouvrir le flux à l’extérieur (ce qui pourrait être une faille de sécurité).
  • avoir une boucle étroite entre les caméras et le matériel NVR sur le réseau local

Serveur local comme matériel NVR : meilleure solution

Serveur NVR distant : très mauvaise solution. Mon choix s’est donc porté sur l’utilisation d’un raspberryPI. Le prix est vraiment abordable pour notre cas d’utilisation (environ 35€) et les capacités matérielles plus que suffisantes. La caractéristique la plus importante est sa capacité d’encodage/décodage matériel H264.

J’avais un raspberryPI à la maison, qui est le modèle 1B+ de 2014. Il fait le travail, mais si vous n’êtes pas équipé, je recommande d’acheter le dernier modèle en date (modèle 3 B+).

Installation de Shinobi sur Raspberry

Avant d’installer tout logiciel sur notre raspberry, nous devons installer le système d’exploitation. Dans notre cas, nous utiliserons une version très légère de Raspbian sans interface graphique

Installer Raspbian sur votre PI

  • Télécharger le Raspbian Stretch Lite (sans paquets pour l’interface graphique) sur votre ordinateur à partir de https://www.raspberrypi.org/downloads/raspbian/
  • Vérifier qu’il n’y a pas de corruption sur votre zip fraîchement téléchargé

$ shasum -a 256 2018–11–13-raspbian-stretch-lite.zip
  • Installer l’image Raspbian sur votre SDCard. Pour plus de commodité, vous pouvez utiliser un outil graphique de drag&drop appelé Etcher : https://www.raspberrypi.org/documentation/installation/installing-images/README.md
  • Insérez la carte SD dans votre raspberry PI, branchez un clavier, votre HDMI &alimentez votre raspberry.

Connectez-vous à votre PI

  • Connectez-vous à votre raspberry. Le login par défaut est pi, le mot de passe est raspberry.
  • Tout d’abord, changez le mot de passe de l’utilisateur ‘pi’ pour des raisons de sécurité. Pour ce faire :
$ passwd
  • mettre à jour les paquets sur votre PI si nécessaire pour avoir les dernières versions de l’un d’entre eux
$ sudo apt-get update && sudo apt-get upgrade

Activer SSH sur votre raspberry

D’abord, vérifiez sur votre raspberry si le service SSH est en cours d’exécution

$ sudo service ssh status

(astuce : vous pouvez vérifier tous les services sur votre appareil en exécutant la commande suivante :

$ sudo service --status-all

Si ssh est actif, passez cette étape ; sinon, exécutez le service

$ sudo service ssh start

# Pour les futurs démarrages, vous devez activer ssh au démarrage
* solution 1

$ sudo update-rc.d ssh defaults
$ sudo update-rc.d ssh enable
  • solution 2
    ou, Vous pouvez également configurer votre raspberry en utilisant l’outil dédié :
$ sudo raspi-config
>> Interface Settings
>> SSH
>> ENABLE

Accéder à votre raspberry par ssh

Pour accéder à votre appareil depuis votre réseau local, vous devez connaître son adresse IP locale. Cependant, cette adresse est attribuée par votre routeur et peut changer dans le temps.

  • Donc, soit vous définissez une IP statique à votre raspberryPI en configurant votre routeur (en associant une IP locale statique à l’adresse MAC de votre raspberryPI).
  • Ou, la solution préférée ici : vérifier le nom d’hôte de votre raspberry en exécutant la commande
$ hostname

Dans mon cas, le nom d’hôte du périphérique est raspberrypi. Je peux alors facilement ssh le pi sans connaître son adresse ip, par la commande suivante :

$ ssh [email protected]

Installer Shinobi

Maintenant que notre OS est correctement configuré et que nous pouvons accéder à notre appareil par ssh, installons Shinobi. Le plus simple est d’exécuter la commande suivante sur votre PI (tel que défini sur la documentation) :

$ sudo su
$ sh <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh)

L’installation sera interactive, comme suit :

# 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’ensemble raspbian + shinobi (y compris toutes les dépendances) n’a pris que moins de 2 Go d’espace.

$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.3G 1.8G 5.2G 26% /

Maintenant l’installation est terminée ! !!

Shinobi backoffice

L’installation vous dira d’ouvrir votre navigateur avec le lien suivant :

|| Open http://192.168.0.10:8080/super in your web browser.
||===================================
|| Default Superuser : [email protected]
|| Default Password : admin

Cependant, il est préférable d’utiliser le nom d’hôte pour se débarrasser de l’incertitude de l’adresse IP de votre appareil (qui peut changer au fil des redémarrages)

http://raspberrypi.local:8080/super

# change super user login/pwd
Dès que vous êtes connecté à http://raspberrypi.local:8080/super, changez votre login/pwd dans l’onglet ‘Préférences’ pour des raisons de sécurité.

# ajouter un nouvel utilisateur
A part le super utilisateur, vous devez ajouter un utilisateur à shinobi (cet utilisateur peut avoir le même email).
Cet utilisateur serait capable de se connecter au tableau de bord en utilisant directement ce lien sur le réseau local
http://raspberrypi.local:8080/

Vous êtes prêt à utiliser votre raspberryPi avec Shinobi comme solution NVR locale.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.