• person rss_feed

    Mathias Poujol-Rost ✅ ’s feed

    Blog

    • chevron_right

      Mathias Poujol-Rost ✅ · Wednesday, 2 January, 2019 - 20:51

      Contact publication



    • reply chevron_right

      🎩 PrĂ©sentation de ShinobiCCTV Community EditionÂ đŸ‘ïž

      ShinobiCCTV Community Edition est un serveur de vidĂ©o‐surveillance multi‐plate‐forme, dont les finitions se situent quelque part entre ZoneMinder et Kerberos.io. Voyons ensemble ses particularitĂ©s, ses avantages et inconvĂ©nients. lien n°1 : Site officiel ShinobiCCTV lien n°2 : Discord ShinobiCCTV Room Sommaire Version communautaire de Shinobi (Community Edition) 📰 Introduction đŸ› ïž FonctionnalitĂ©s et capacitĂ©s ⚖ Quelques diffĂ©rences avec les autres 🔎 Composition de Shinobi 📡 Au niveau logiciel 📡 Au niveau des dĂ©pendances đŸ“± Au niveau de la WEBUI (interface Web) Mise en place đŸŒ± Installation (de base) đŸ—‘ïž DĂ©sinstallation Bonus 🍔 Anecdotes 📊 Sondages đŸ—šïž Avis personnels ☄ Avis de Voxdemonix (2018) ♟ Remerciements đŸŽžïž Captures d’écran 🔗 Liens Version communautaire de Shinobi (Community Edition) 📰 Introduction ShinobiCCTV, Shinobi pour les intimes, serveur de vidĂ©o‐surveillance Ă  ses heures, naquit dans une rĂ©gion froide du Canada sous les martĂšlements de clavier de Moe Alam. Ce projet serait l’alternative de rĂ©fĂ©rence à ZoneMinder (source). Ce qu’il pourrait devenir, en effet, compte tenu du peu de choix dans cet Ă©cosystĂšme libre. « Shishi » est basĂ© sur FFmpeg et Node.js, utilisant massivement du JavaScript, un peu de Python, ainsi qu’un chouia de Shell (source). Le serveur est multi‐plate‐forme (BSD, GNU/Linux, macOS, Windows) et compatible avec l’architecture ARM. Une image Docker est aussi disponible. En termes de fonctionnalitĂ©s, ShinobiCCTV se situe quelque part entre ZoneMinder (utilisable en milieu pro mais vieillissant) et Kerberos.io. Il n’y a pas de limite en nombre de camĂ©ras (autre que la puissance de calcul de vos machines et la bande passante de votre rĂ©seau). Shinobi se divise en deux branches distinctes : Shinobi Community Edition → licence libre (gratuit) ; Shinobi Pro → Open Source non libre (payant, sauf exceptions). Nous allons ici, bien entendu, nous intĂ©resser uniquement Ă  la version libre. D’aprĂšs cet article, la version libre de Shinobi ne reçoit pas de mises Ă  jour rĂ©guliĂšres (historique) et n’accepte aucun demande d’intĂ©gration (pull request). S’il existe donc bien une version libre de Shinobi, elle n’est, Ă  l’heure de la rĂ©daction de cet article, hĂ©las point communautaire. Il faut nĂ©anmoins souligner que Moe, pour le moment l’unique dĂ©veloppeur, est trĂšs rĂ©actif, Ă  l’écoute et surtout qu’il utilise le logiciel qu’il code (cf. les tarifs du support). đŸ› ïž FonctionnalitĂ©s et capacitĂ©s capacitĂ© de rĂ©cupĂ©rer des flux audio‐vidĂ©o des camĂ©ras via HTTP, RTP/RTSP et ONVIF ; HTTPS est pris en charge, mais uniquement avec des certificats X.509 valides ; enregistrement aux formats vidĂ©o compatible avec l’accĂ©lĂ©ration matĂ©rielle, avec trois modes d’enregistrement diffĂ©rents (enregistrement continu, enregistrement lors d’évĂ©nements avec ou sans tampon, enregistrement puis suppression si pas d’évĂ©nement dĂ©tectĂ©) ; enregistrement possible de l’audio ; dĂ©tection de mouvements et analyse de formes ; diversitĂ© de formats d’enregistrement (liste) ; diversitĂ© dans les mĂ©thodes de diffusion ; en revanche, le dĂ©lai entre la rĂ©alitĂ© et ce que l’on voit sur l’écran peut ĂȘtre important (jusqu’à 8 s avec HLS) suivant la mĂ©thode de diffusion choisie ; gestion des stockages distants (Amazon S3, WebDAV, Backblaze B2) ; possibilitĂ© de dĂ©finir le stockage pour chaque camĂ©ra ; gestion d’une petite partie des commandes pour camĂ©ras (PTZ, IR) ; possibilitĂ© de permuter entre le mode de diffusion « normal » et le mode JPEG, moins gourmand en bande passante et avec une plus faible latence (trĂšs utile pour dĂ©placer les PTZ ou couper les flux audio) ; utilisation de robots pour les alertes (courriel, discord) ; compatibilitĂ© LDAP ; ligne du temps, accĂ©lĂ©rĂ© (time‐lapse) ; lancement de scripts (par dĂ©faut en super‐utilisateur) lors d’évĂ©nements ; calendrier par camĂ©ra oĂč sont indiquĂ© les Ă©vĂšnements ; ce calendrier n’est pas encore synchronisable ; le mode grappe de serveurs (cluster) de Shinobi est basĂ© sur le systĂšme maĂźtre‐esclave, permettant de rĂ©partir la charge, mais pas d’avoir de la haute disponibilité ; seul le serveur maĂźtre s’occupe de la communication avec la base de donnĂ©es, si ce serveur plante, tout plante ; sur la WEBUI vous pouvez adapter votre tableau de bord grĂące au glisser‐dĂ©poser (drag & drop) sur les diffĂ©rents moniteurs de camĂ©ra. ⚖ Quelques diffĂ©rences avec les autres ZM et Shinobi permettent tous deux de visualiser plusieurs moniteurs simultanĂ©ment (pas Kerberos.io) ; en revanche, avec Shinobi vous ne pouvez choisir la taille de l’affichage ; la ligne du temps de Shinobi se base sur des points fixes sans image de prĂ©visualisation ; pour voir ce qu’il s’est dĂ©roulĂ© entre deux points, il faut visualiser la vidĂ©o liĂ©e ; sur ZM, il suffit de survoler la ligne du temps pour charger une image de l’instant T ; vous ne pourrez donc pas visualiser une journĂ©e entiĂšre en quelques secondes comme avec ZM ; impossible aussi de trouver un Ă©vĂšnement si vous ne savez pas le dater ; Sur Shinobi il faudra paramĂ©trer les commandes PTZ de chaque camĂ©ra, sauf pour celles compatibles ONVIF ; vous pouvez Ă©ventuellement recopier la configuration d’une camĂ©ra, mais, pour le moment, pas choisir dans une liste de pré‐configuration, comme avec ZM ; Shinobi n’est pas capable de contrĂŽler autant de commandes pour les PTZ, infrarouge, etc., que ZoneMinder ; la session utilisateur n’est pas liĂ©e au navigateur mais Ă  l’onglet, sauf bogue ; la consommation d’espace d’échange mĂ©moire (swap) est assez imposante, et l’on ne peut dĂ©finir son chemin d’accĂšs ; Shinobi utilise massivement le super‐utilisateur root (pm2, ffmpeg, etc.) ; ZoneMinder et Kerberos.io utilisent tous deux un serveur Web, Shinobi intĂšgre le sien ; vous devrez donc allouer un port diffĂ©rent (par dĂ©faut 8080) et ne pourrez journaliser les infos ni les exploiter avec Piwik/Matamo, sauf Ă  passer par un serveur mandataire (exemple avec HaProxy) ; Node.js oblige, ShinobiCCTV nĂ©cessite de l’expĂ©rience en Node.js/expressjs afin de pouvoir ajouter des pages Web sur le serveur (par exemple un fichier healthcheck) ; Avec ZoneMinder le mode grappe de serveurs (cluster) nĂ©cessite de rĂ©partir manuellement les camĂ©ras sur plusieurs nƓuds et, si vous pouvez visionner les enregistrements depuis n’importe quel nƓud, le direct quant Ă  lui est limitĂ© aux camĂ©ras gĂ©rĂ©es par le serveur ; Shinobi semble lui rĂ©partir la charge entre ses nƓuds fils automatiquement, en se basant sur l’utilisation du processeur ; le visionnage du direct ou des enregistrements se fait donc uniquement sur le serveur maĂźtre (source) ; le systĂšme de ZoneMinder permet de crĂ©er une grappe de serveurs rĂ©partie sur plusieurs rĂ©seaux, Shinobi semble capable d’accomplir aussi cette tĂąche ; le dĂ©tecteur de mouvement est plus difficile Ă  configurer sur Shinobi (sur ZoneMinder, il se rĂ©sume Ă  l’activer et optionnellement adapter le niveau de « bruit ») ; Kerberos utilise un mĂ©canisme de mise Ă  jour via la WEBUI [source], ZoneMinder est directement intĂ©grĂ© au systĂšme ; Shinobi, quant Ă  lui, passe par Git [source]. 🔎 Composition de Shinobi 📡 Au niveau logiciel Node.js, moteur JavaScript basĂ© sur Chromium — nom des processus : node (tourne en super‐utilisateur) ; pm2, gestionnaire de processus pour Node.js — nom des processus : PM2 v3.2.2: God Daemon (tourne en super‐utilisateur) ; ffmpeg, acquisition et traitement des flux vidĂ©o et audio — nom des processus : ffmpeg (tourne en super‐utilisateur) 📡 Au niveau des dĂ©pendances Ces logiciels peuvent ĂȘtre installĂ©s sur la mĂȘme machine ou rĂ©partis sur plusieurs : MariaDB, le serveur de base de donnĂ©es, nom des processus : mysqld (tourne sous l’utilisateur « mysql ») ; si accessible via WAN, un frontal au choix (HAProxy, Apache 2, etc.) ; si sur plusieurs machines, un logiciel pour chiffrer les communications entre le ou les frontaux et le serveur maĂźtre ShinobiCCTV, voire entre ShinobiCCTV et le(s) serveur(s) de base de donnĂ©es. đŸ“± Au niveau de la WEBUI (interface Web) http://your_shinobi:8080 ⇒ Tableau de bord : http://your_shinobi:8080/admin ⇒ Ici les utilisateurs crĂ©Ă©s par l’administrateur pourront crĂ©er eux‐mĂȘmes des « sous‐utilisateurs » (Ă©quivalent des modĂ©rateurs), permettant de partager l’accĂšs Ă  des camĂ©ras : http://your_shinobi:8080/super ⇒ Gestion de l’administrateur, des comptes utilisateurs et de quelques paramĂštres de base : Mise en place đŸŒ± Installation (de base) Est expliquĂ© comment faire une installation minimale de Shinobi Community Edition. Pour une installation complĂšte, avec notamment HTTPS, voyez le tutoriel « Ubuntu/Debian Installation complĂšte de Shinobi Community Edition ». Lancez l’installation du logiciel : mv /tmp/ wget https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh sudo bash shinobi-install.sh CrĂ©ez la base de donnĂ©es et son utilisateur avec multiple accĂšs. Adaptez, bien entendu, le mot de passe ainsi que « 10.8.%.% » qui, dans cet exemple, autorise l’accĂšs Ă  n’importe quel client ayant une adresse IP comprise entre 10.8.0.0 et 10.8.255.255. Attention, localhost est diffĂ©rent de 127.0.0.1 et autoriser l’un n’autorise pas automatiquement l’autre : GRANT ALL PRIVILEGES ON ccio . * TO 'shinobi' @ 'localhost' IDENTIFIED BY 'my_super_password' ; GRANT ALL PRIVILEGES ON ccio . * TO 'shinobi' @ '10.8.%.%' IDENTIFIED BY 'my_super_password' ; FLUSH PRIVILEGES ; Éditez /home/Shinobi/conf.json afin d’y ajouter les informations concernant la base de donnĂ©es : nano /home/Shinobi/conf.json Initialisez la base de donnĂ©es : mysql -u shinobi -p shinobi < /home/Shinobi/sql/framework.sql mysql -u shinobi -p shinobi < /home/Shinobi/sql/tables.sql mysql -u shinobi -p shinobi < /home/Shinobi/sql/database.sql RedĂ©marrez le cƓur de Shinobi : pm2 --update-env restart all đŸ—‘ïž DĂ©sinstallation Suppression de la base de donnĂ©es et de son utilisateur : mysql -uroot -p -e "DROP DATABASE ccio;" mysql -uroot -p -e "DROP USER ‘shinobi’@’localhost’;" mysql -uroot -p -e "DROP USER ‘shinobi’@’10.8.%.%’;" Suppression et purge des logiciels : pm2 kill sudo npm uninstall pm2 -g sudo apt remove ffmpeg mariadb-server nodejs -y && sudo apt autoremove -y && sudo apt-get autoclean sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* /usr/local/lib/dtrace/node.d ~/.npm ~/.node-gyp /opt/local/bin/node /opt/local/include/node /opt/local/lib/node_modules /usr/local/lib/node* /usr/local/include/node* /usr/local/bin/node* /home/Shinobi Bonus 🍔 Anecdotes 📊 Sondages Un petit sondage, non reprĂ©sentatif, indique qu’Ubuntu semble ĂȘtre le serveur le plus utilisĂ©. Un autre sondage, pas plus reprĂ©sentatif, semble indiquer que la version la plus utilisĂ©e est Shinobi Pro. đŸ—šïž Avis personnels Les avis du ou des auteurs sont subjectifs et ne doivent pas ĂȘtre pris comme rĂšgles. ☄ Avis de Voxdemonix (2018) Les technologies utilisĂ©es autant pour le cƓur (Node.js), la l’interface Web (HTML 5), le support (Discord, la messagerie instantanĂ©e avec Moe intĂ©grĂ©e dans la documentation) que les fonctionnalitĂ©s (Discord bot, WebDAV, reconnaissance d’objets) sont rafraĂźchissantes. Aucun autre projet que j’ai testĂ© ne discute de l’utilisation de rĂ©seaux neuronaux. En revanche, voir tourner Node.js et FFmpeg en super‐utilisateur amĂšne une certaine apprĂ©hension sur la sĂ©curitĂ©. Pour info, FFmpeg est suffisamment soumis Ă  risque pour que le projet Nextcloud dĂ©conseille complĂštement son utilisation (afin d’éviter qu’un fichier corrompu ne passe dans le gĂ©nĂ©rateur de prĂ©visualisation). FFmpeg qui rĂ©cupĂšre un flux rĂ©seau non sĂ©curisĂ© en super‐utilisateur, c’est assez dangereux. À tester si la version Docker corrige ce problĂšme important. Il manque quelques fonctionnalitĂ©s (pré‐sĂ©lections de camĂ©ras, voire balayage Ă  la ZoneMinder, ainsi que des boutons importants, notamment au niveau des PTZ (ex : IR auto on/off), il n’y a pas de date sur les flux) et certaines fonctionnalitĂ©s ne sont pas terribles (ligne du temps qui nĂ©cessite de pouvoir dater un Ă©vĂšnement pour le retrouver). Le fait que ShinobiCCTV n’applique les mises Ă  jour et les demandes d’intĂ©gration que sur le projet proprio fait aussi peur, peut‐ĂȘtre Ă  tort, que le dĂ©veloppeur ne ferme le projet dĂšs qu’il aura des clients (Ă©poque #OpenWashing oblige). Sans compter que cela casse un peu l’envie de participer, surtout au niveau code et rapport de bogue. Quand aucun utilisateur n’est sur la WEBUI, la charge systĂšme machine reste sous 0,5. En revanche, dĂšs qu’un utilisateur se connecte sur la WEBUI et affiche des flux, la charge monte rapidement entre 1,5 et 2,5. Plusieurs utilisateurs m’ont indiquĂ© utiliser ou tester ShinobiCCTV sur Raspberry Pi 3 sans rĂ©el problĂšme, il n’y a eu aucun retour quant aux ARM non 32/64 bits en revanche. Bref, il y a encore du boulot pour que ShinobiCCTV devienne utilisable en milieu professionnel, mais les fonctionnalitĂ©s vitales sont dĂ©jĂ  disponibles pour une utilisation familiale ou PME (si l’on rajoute une surcouche de sĂ©curitĂ©). ♟ Remerciements Gros remerciement Ă  la communautĂ© et Ă  Moe pour leur participation ! 💋 đŸŽžïž Captures d’écran 🔗 Liens Linux Surveillance Camera Software Evaluation 2018 ; Nextcloud : les crĂ©ateurs d’ownCloud rebootent leur projet ; Genetec Security Center. TĂ©lĂ©charger ce contenu au format Epub Commentaires : voir le flux atom ouvrir dans le navigateur

      group_work LinuxFRNews 2 January, 2019