-
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