Shinobi

Page d'accueil du projet : le slogan « is a Network Video Recorder » sur la photo assombrie d'un pic rocheux qui domine des ruines.

Caméras IP et USB enregistrées en MP4, regardées dans le navigateur

Shinobi est un enregistreur vidéo réseau (NVR) à héberger soi-même, écrit en Node.js. Il lit les flux des caméras IP ou USB avec FFmpeg, les enregistre directement en MP4 et envoie le direct à une interface web par WebSocket : l'appareil qui sert à regarder n'a rien à installer. Le dépôt annonce plus de 6 000 modèles de caméras pris en charge. Le README donne un test plus parlant : un flux qui s'ouvre dans VLC s'ouvre dans Shinobi avec la même URL. Diffuser une caméra en direct vers YouTube ou Twitch sans archiver les images relève plutôt de Restreamer, qui republie un flux vers les plateformes de streaming.

Zones de mouvement, détecteurs déportés et alertes par FTP ou e-mail

  • Mouvement par zone, objets par plugins : un mouvement sur toute la scène ou sur une zone choisie peut lancer l'enregistrement. Les plugins de détection d'objets (YOLO, TensorFlow, Coral Edge TPU) peuvent tourner sur une autre machine.
  • Événements venus de caméras sommaires : un serveur FTP intégré change en événement chaque fichier déposé, pour les caméras qui ne signalent un mouvement que par FTP. Un serveur SMTP fait de même avec les e-mails d'alerte, et un client MQTT reçoit des déclencheurs extérieurs.
  • Comptes restreints ou multi-locataires : un compte peut avoir des droits limités ou gérer ses propres caméras. La connexion accepte LDAP ou Google, avec double authentification.
  • Copies hors site et purge planifiée : les vidéos partent vers Amazon S3, Backblaze B2, Google Drive, Wasabi ou WebDAV, et une tâche planifiée efface celles qui dépassent la durée de conservation du compte.
  • Alertes et domotique : Discord, Telegram, Matrix ou Pushover. Dans Home Assistant, chaque caméra arrive sous forme d'un jeu complet d'entités.

Contrat d'utilisation payant en commerce, mises à jour par git pull

Le README parle d'open source, la licence est un contrat d'utilisation. LICENSE.md se décrit comme un contrat de licence utilisateur final (EULA) de Shinobi Systems. Il permet de modifier le code et de retirer la marque de l'interface, mais tout code contribué devient la propriété de l'éditeur, qui peut changer les termes à tout moment.

L'usage gratuit couvre les particuliers, l'enseignement et une partie du secteur public. La licence l'accorde pour un usage personnel ou non commercial, la recherche, les écoles primaires et secondaires, les services d'urgence de moins de 50 caméras et les établissements de santé de moins de 100. Un essai est limité à 5 caméras pendant 14 jours. Une organisation qui en profite doit afficher « shinobi.video », sur place ou sur son site.

Une boutique paie dès la première caméra, toute autre installation non personnelle à partir de 15. La licence tient pour commercial l'usage dans un lieu qui vend des biens ou des services, et toute installation d'au moins 15 caméras actives hors usage personnel et hors école. Au-delà de 150, il faut demander une licence Enterprise. L'accès distant Easy Remote Access, sans redirection de port ni VPN, est réservé aux détenteurs d'une licence.

L'installation recommandée est Ubuntu sur une machine dédiée, avec MariaDB et FFmpeg. La documentation préfère une machine dédiée sous Ubuntu 22.04, un Raspberry Pi ou un Jetson Nano plutôt que Docker ou une VM (un guide Docker existe malgré tout). Sa méthode « Ninja Way » installe Node.js, FFmpeg et MariaDB. Seuls les pilotes MySQL, qui servent aussi MariaDB, sont livrés : PostgreSQL ou SQLite demandent d'installer leur pilote à la main.

Aucune release depuis juillet 2022 : le code se met à jour par Git. Les dernières releases GitLab datent des 15 et 16 juillet 2022. Le développement continue sur les branches, avec un dernier commit le 20 août 2026 sur master et le 20 octobre 2026 sur dev. Le script UPDATE.sh lance git reset --hard puis git pull : une modification locale du code disparaît à chaque mise à jour.