Déploiement

Logiciel libre, installé en trois commandes.

Bobi.Studio est publié sous GNU GPL v3. Le dépôt contient l’orchestrateur, l’agent-nœud, les plugins de conteneurs et la documentation. Vous pouvez l’exécuter, l’étudier, le modifier et le redistribuer.

01

Licence

GNU General Public License version 3 ou ultérieure.

Copyright © 2026 BOBI SAS, France. Auteur : Cyril Mazouer, pour le compte de BOBI SAS.

Ce programme est distribué dans l’espoir qu’il sera utile, mais sans aucune garantie, sans même la garantie implicite de qualité marchande ou d’adéquation à un usage particulier. Le texte complet de la licence accompagne le code source.

Bobi.Studio intègre des composants tiers (bus MXL, Intel Media Transport Library, DPDK, FFmpeg, MediaMTX et d’autres) qui restent soumis à leur propre licence. L’inventaire complet et les mentions à conserver sont dans le dépôt.

02

Installer le contrôleur

Une commande, un menu, et la machine sait quoi devenir.

Sur une machine neuve, une seule commande récupère l’installeur et ouvre le menu. Elle ne demande ni git ni paquet à construire au préalable : curl et tar suffisent.

# sur la machine à installer, en root
bash <(curl -fsSL https://bobi.studio/get.sh)

Le script demande quelle version installer, récupère la source depuis GitHub, vérifie qu’elle est complète, puis passe la main à l’installeur.

BOBI.STUDIOInstalleur

Que voulez-vous installer sur cette machine ?

  1. Nœud de processAgent seul — exécute les traitements vidéo (calcul, 2110, média…).
  2. OrchestrateurInterface de contrôle web (port 5000) qui pilote la flotte.
  3. Tout-en-unOrchestrateur + nœud de process sur la même machine.
  4. Orchestrateur sur une VM ProxmoxDéploiement via hyperviseur Proxmox (avancé, hérité).
  5. DésinstallerRetirer Bobi.Studio de CETTE machine (nœud et/ou orchestrateur).

↑/↓ déplacer · Entrée valider · ← retour

Le quatrième choix sert si vous préférez héberger l’orchestrateur sur un hyperviseur Proxmox : lancé depuis le nœud Proxmox, l’installeur crée lui-même le conteneur, y pose le réseau, y déploie le code, installe les dépendances et active le service. Il n’y a rien à préparer à la main.

Sur un site déjà équipé, la même chose s’obtient sans sortir sur Internet : un orchestrateur en service distribue son propre installeur.

bash <(curl -fsSL http://<orchestrateur>:5000/install.sh)

Et sans réseau sortant ni orchestrateur, le paquet se construit depuis les sources. La construction ne demande que Python — ni environnement virtuel, ni dépendance.

git clone --recurse-submodules https://github.com/bob-integration/bobistudio /opt/bobistudio
cd /opt/bobistudio
python3 tools/build_dist.py --all
cd dist && sudo python3 install.py

Le service se gère ensuite comme n’importe quel service système, avec ses journaux.

systemctl {start|stop|restart|status} bobistudio
journalctl -u bobistudio -f
03

Enrôler un nœud

La même commande, un autre choix dans le menu.

Un nœud s’installe avec la commande de l’étape précédente : on choisit Nœud de process, on coche ses capacités à la barre d’espace, puis on donne l’adresse du contrôleur et un jeton d’enrôlement. Le nœud s’annonce tout seul et apparaît dans l’interface.

  • compute — traitements numpy : mixer, multiview, UDC, correcteur.
  • io2110 — entrées et sorties ST 2110, sur carte E810.
  • media — lecture, enregistrement, transcodage, images fixes.
  • webrtc — passerelle WebRTC.

La carte 2110 est détectée à l’enrôlement. Pour une pose automatisée, le script du nœud s’appelle aussi directement, sans menu.

./node_agent/install-node.sh --with compute,media \
    --macvlan-parent eno1 \
    --macvlan-subnet 10.0.0.0/24 \
    --macvlan-gateway 10.0.0.254

Le reste se règle depuis l’interface : réseau ST 2110, allocation multicast, NMOS, TSL, WebRTC, PTP, thèmes, utilisateurs et permissions. Aucune valeur propre au site ne vit dans le code versionné.

04

Sans clé USB

Une salle serveur n’est pas toujours à portée de main.

Un nœud neuf peut être installé par démarrage réseau en UEFI HTTP, servi par le contrôleur lui-même, ou par média virtuel depuis le contrôleur d’administration de la machine. Le nœud termine son installation et se présente au contrôleur avec son jeton.

05

Documentation

Versionnée avec le code, et rendue dans l’aide en ligne du produit.

  1. Infrastructure (nouvelle fenêtre)

    À lire avant d’acheter : processeur, mémoire et bande passante, cartes réseau, GPU, RDMA, PTP, les trois plans réseau, la redondance.

  2. Installation (nouvelle fenêtre)

    De la machine nue au premier flux, avec les points d’attention qui font échouer une mise en service.

  3. Agent-nœud (nouvelle fenêtre)

    Le contrat HTTP entre le contrôleur et l’agent qui tourne sur chaque nœud.

  4. Haute disponibilité (nouvelle fenêtre)

    Paire de contrôleurs, réplication, promotion, adresse de management.

  5. Journal des versions (nouvelle fenêtre)

    Ce qui change, pourquoi, et ce que ça corrige. Rendu aussi dans la page d’aide de l’interface.

06

Contribuer

Le dépôt est ouvert aux corrections comme aux nouveaux types de conteneurs.

Un type de conteneur est un plugin autonome : un manifeste, un script et une interface optionnelle. Il déclare ce qu’il produit, ce qu’il consomme, ses points de contrôle et ses paramètres pilotables.

Le code Python d’un plugin ne s’exécute que dans son conteneur : le contrôleur le rend et en vérifie la syntaxe, sans jamais le lancer dans son propre processus. Son interface, en revanche, est servie par le contrôleur et s’exécute dans le navigateur de l’opérateur, avec sa session. Un plugin n’est donc pas un bac à sable : il s’installe avec la même confiance qu’une dépendance.

Un plugin d’exemple, commenté et complet, sert de point de départ. Les remontées de bogue, les demandes de fonctionnalité et les propositions de code passent par le dépôt.

Une question avant de commencer ?

Dimensionnement, intégration dans une infrastructure existante, accompagnement à la mise en service : écrivez-nous.