esup-pod

Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.


Avertissement

Cette documentation ne concerne que la

future version de Pod v2.8, prévue en avril 2021.

Sommaire

Contexte et solution apportée

Contexte

Suite à la pandémie de COVID-19, il a été mis en place, à l'université de Montpellier, un système de classe virtuelle Open Source reposant sur Big Blue Button (BBB).

Pour informations, BigBlueButton (https://bigbluebutton.org/) est un outil de classe virtuelle ayant les fonctionnalités suivantes :

  • Vidéo/webcam
  • Audio
  • Chat
  • Partage de document + annotation
  • Partage d’écran
  • Sondage
  • Enregistrement
  • Création de groupes
  • Prises de notes partagées
  • Intégration de vidéos externes
  • Intégration Moodle et WordPress

Cependant, l'une des plus grosses contraintes de BigBlueButton concerne la limite de 100 étudiants par session (cf. https://docs.bigbluebutton.org/support/faq.html#how-many-simultaneous-users-can-bigbluebutton-support).

Dans la plupart des cas, cette limite de 100 étudiants par session n'est pas un blocage, mais dans certains cas bien précis - par exemple, des cours magistraux pour des L1 - cette limite devient bloquante à l'utilisation de BigBlueButton.

Solution

Pour résoudre cette problématique, je suis parti d'une solution mise en place à l'Université Polytechnique Hauts-de-France et l'ai modifié pour l'intégrer totalement dans Pod v2.

version v2.X de Pod et non la version 3.X de Pod.

Le module utilisé est supprimé de Pod depuis la version 3.8.2.

Une fonctionnalité similaire a été développée pour Pod v3 : 

Sommaire


Astuce
titleMise à jour du script bbb-pod-live.php

Le script pod/scripts/bbb-pod-live.php a été mis à jour dans la version v2.8.2 de Pod. Les modifications réalisées sont les suivantes :

  • Modification du nom du diffuseur créé : les diffuseurs créés par ce script commenceront par [BBB] et non (BBB) (cela permet d'éviter des problèmes en lien avec l'API Rest).
  • Il est maintenant possible de streamer une session BigBlueButton dont le nom contient une quote.
  • Un email est envoyé aux administrateurs en cas de démarrage d'un direct.

Contexte et solution apportée

Contexte

Suite à la pandémie de COVID-19, il a été mis en place, à l'université de Montpellier, un système de classe virtuelle Open Source reposant sur Big Blue Button (BBB).

Pour informations, BigBlueButton (https://bigbluebutton.org/) est un outil de classe virtuelle ayant les fonctionnalités suivantes :

  • Vidéo/webcam
  • Audio
  • Chat
  • Partage de document + annotation
  • Partage d’écran
  • Sondage
  • Enregistrement
  • Création de groupes
  • Prises de notes partagées
  • Intégration de vidéos externes
  • Intégration Moodle et WordPress

Cependant, l'une des plus grosses contraintes de BigBlueButton concerne la limite de 100 étudiants par session Cette solution fonctionne pour BigBlueButton mais également pour Scalelite (cf. https://githubdocs.bigbluebutton.comorg/blindsidenetworks/scalelite), un système de répartition de charge pour BigBlueButton.

L'idée de cette solution est de :

...

Avertissement

Il ne faut pas que l'utilisateur utilise de salles privées dans BigBlueButton. En effet, le système de salles privées de BigBlueButton ouvre des popups, et il pourrait arriver que le direct n'affiche que l'appel de la popup.

Image Removed

Image Removed

Il faut également que l'utilisateur mette fin à la réunion pour que le direct s'arrête (une déconnexion n'est pas suffisante et le direct continue alors).

Image Removed

...

Enregistrer la session dans Mes vidéos : Cette option permet l'enregistrement de la vidéo du direct en même temps. Cela signifie qu'une fois le direct réalisé, le fichier vidéo sera automatiquement publié en mode Brouillon pour cet utilisateur et sera alors mis automatiquement dans la file d'attente pour encodage.

Info

Cette option peut être désactivée dans le paramétrage de Pod et ne sera alors pas affiché aux utilisateurs (cf. explications techniques ci-dessous).

support/faq.html#how-many-simultaneous-users-can-bigbluebutton-support).

Dans la plupart des cas, cette limite de 100 étudiants par session n'est pas un blocage, mais dans certains cas bien précis - par exemple, des cours magistraux pour des L1 - cette limite devient bloquante à l'utilisation de BigBlueButton.

Solution

Pour résoudre cette problématique, je suis parti d'une solution mise en place à l'Université Polytechnique Hauts-de-France et l'ai modifié pour l'intégrer totalement dans Pod v2.

Cette solution fonctionne pour BigBlueButton mais également pour Scalelite (cf. https://github.com/blindsidenetworks/scalelite), un système de répartition de charge pour BigBlueButton.

L'idée de cette solution est de :

  • Récupérer régulièrement les informations concernant les sessions en cours, ainsi que les usagers, dans BigBlueButton pour les insérer dans la base de données de Pod.
    Cf. le système de publication des présentations Web de BigBlueButton vers Podv2 : https://www.esup-portail.org/wiki/x/AgCBNg

  • Traiter ces données pour permettre aux utilisateurs, connectés dans Pod, de pouvoir réaliser un direct de leur session BigBlueButton en cours,



    Avertissement

    Il ne faut pas que l'utilisateur utilise de salles privées dans BigBlueButton. En effet, le système de salles privées de BigBlueButton ouvre des popups, et il pourrait arriver que le direct n'affiche que l'appel de la popup.

    Image Added

    Image Added

    Il faut également que l'utilisateur mette fin à la réunion pour que le direct s'arrête (une déconnexion n'est pas suffisante et le direct continue alors).

    Image Added



  • Pour réaliser ce direct, l'utilisateur devra valider les options possibles en validant un formulaire :

    Image Added

    Ces options sont les suivantes :

    • Accès restreint : Mettre l'accès restreint permet que le direct ne soit accessible qu'aux utilisateurs authentifiés, typiquement via le système d'authentification CAS de l'université. Sans accès restreint, le direct peut être accessible à tous.

    • Affichage du tchat public : En cas d'activation, le tchat public sera affiche dans la partie gauche du direct.

    • Enregistrer la session dans Mes vidéos : Cette option permet l'enregistrement de la vidéo du direct en même temps. Cela signifie qu'une fois le direct réalisé, le fichier vidéo sera automatiquement publié en mode Brouillon pour cet utilisateur et sera alors mis automatiquement dans la file d'attente pour encodage.

      Info

      Cette option peut être désactivée dans le paramétrage de Pod et ne sera alors pas affiché aux utilisateurs (cf. explications techniques ci-dessous).


    • Activer le tchat : Via cette option, un tchat sera affiché dans la page de ce direct de Pod, sous la vidéo en direct. Les messages envoyés dans le tchat de cette page de direct se retrouveront dans le tchat public de BigBlueButton. Ainsi, les étudiants qui consultent la page de direct pourront communiquer avec l'enseignant et autres usagers de BigBlueButton.

      Info

      Pour informations, seuls les utilisateurs authentifiés sur la page de direct pourront envoyer des messages, même si le direct est accessible à tous.

      Non authentifié, l'utilisateur obtiendra ce message :

      Image Added

      Une fois authentifié, l'utilisateur pourra envoyer un message :

      Image Added

      Dans BigBlueButton, le nom de l'utilisateur qui a envoyé le message sera bien entendu affiché :

      Image Added


    Une fois le formulaire validé, le direct sera lancé en moins d'une minute.

    Image Added
  • Les étudiants pourront accéder au direct créé automatiquement, via l'onglet des directs de Pod.

    Image Added

    Info

    Le système va créer automatiquement un diffuseur (terminologie Pod) dont le nom correspond à une concaténation de (BBB) et du nom de la session dans BigBlueButton.

    Bien entendu, ce diffuseur sera automatiquement supprimé lors de l'arrêt de la session BigBlueButton.


Remarques importantes


Info
titleAucun impact sur BigBlueButton

Cette solution repose totalement sur Pod et n'impacte en rien BigBlueButton. Aucune modification n'est à réaliser côté BigBlueButton.


Avertissement
titleLes utilisateurs dans BigBlueButton

Les informations concernant les modérateurs dans BigBlueButton dépendent du client BBB utilisé : Greenlight ou le plugin mod_bigbluebuttonbn pour Moodle.

Le système réalisé n'a été testé qu'avec le plugin mod_bigbluebuttonbn pour Moodle (CASifié, donc les données proviennent de notre annuaire LDAP); cela signifie que les modérateurs sont définis - dans mon cas - sous la forme "Prenom Nom".

Il est possible de paramétrer ce format, via le paramètre BBB_USERNAME_FORMAT. A l'heure actuelle, les formats "Prenom Nom" ou "Nom Prenom" peuvent être gérés via ce paramétrage.

(avertissement) Ce point est crucial pour que le système fonctionne correctement : une correspondance doit exister sur le "Prenom Nom" ou "Nom Prenom" (selon la configuration BBB_USERNAME_FORMAT) des modérateurs de BigBlueButton et le "Prenom Nom" des utilisateurs dans la base de données de Pod.

(question) A priori, cela devrait pouvoir fonctionner avec Greenlight si celui-ci est configuré pour utiliser l'annuaire LDAP de l'établissement et les champs givenName et sn.

Architecture de la solution

Choix du plugin permettant la diffusion de la session BigBlueButton en direct

Pour diffuser une session BigBlueButton en direct, certains plugins existent déjà sur Github; il ne paraît pas raisonnable de redévelopper un tel système.

Pour arriver à faire mon choix, j'ai testé les 2 solutions suivantes :

  • bbb-recorder (https://github.com/jibon57/bbb-recorder) : un plugin, indépendant de BigBlueButton, qui permet de convertir - via un script - une présentation Web BigBlueButton en fichier vidéo et qui permet également une diffusion en direct (flux RTMP) d'un cours BigBlueButton.
  • BigBlueButton-liveStreaming (https://github.com/aau-zid/BigBlueButton-liveStreaming) : un plugin, indépendant de BigBlueButton, permettant de publier en live (via RTMP) une session BigBlueButton et de l'enregistrer.


Au final, voici ce qui est ressorti de mes tests.


bbb-recorderBigBlueButton-liveStreaming
Exporte un cours BBB en direct live(coche)(coche)
Enregistre un cours BBB en vidéo(coche) 
format webm, mp4
(avertissement)
peut enregistré le cours qu'il publie en live au format mkv
Indépendance vis-à-vis de BigBlueButton(coche)
peut-être installé sur n'importe quel serveur
(coche)
peut-être installé sur n'importe quel serveur
Contenu de la vidéo finale(coche) présentation
(coche) audio
(coche) vidéo
(coche)partage d'écran
(coche)chat
(coche)whiteboard
(coche) présentation
(coche) audio
(coche) vidéo
(coche) partage d'écran
(coche) chat
(coche) whiteboard
Possibilité de chat depuis la page de direct avec BBB(moins)(coche)
Possibilité de faire plusieurs streams sur une même VM(question)(coche)

Activer le tchat : Via cette option, un tchat sera affiché dans la page de ce direct de Pod, sous la vidéo en direct. Les messages envoyés dans le tchat de cette page de direct se retrouveront dans le tchat public de BigBlueButton. Ainsi, les étudiants qui consultent la page de direct pourront communiquer avec l'enseignant et autres usagers de BigBlueButton.

Info

Pour informations, seuls les utilisateurs authentifiés sur la page de direct pourront envoyer des messages, même si le direct est accessible à tous.

Non authentifié, l'utilisateur obtiendra ce message :

Image Removed

Une fois authentifié, l'utilisateur pourra envoyer un message :

Image Removed

Dans BigBlueButton, le nom de l'utilisateur qui a envoyé le message sera bien entendu affiché :

Image Removed

...

Info

Le système va créer automatiquement un diffuseur (terminologie Pod) dont le nom correspond à une concaténation de (BBB) et du nom de la session dans BigBlueButton.

Bien entendu, ce diffuseur sera automatiquement supprimé lors de l'arrêt de la session BigBlueButton.

Remarques importantes

Info
titleAucun impact sur BigBlueButton

Cette solution repose totalement sur Pod et n'impacte en rien BigBlueButton. Aucune modification n'est à réaliser côté BigBlueButton.

Avertissement
titleLes utilisateurs dans BigBlueButton

Les informations concernant les modérateurs dans BigBlueButton dépendent du client BBB utilisé : Greenlight ou le plugin mod_bigbluebuttonbn pour Moodle.

Le système réalisé n'a été testé qu'avec le plugin mod_bigbluebuttonbn pour Moodle (CASifié, donc les données proviennent de notre annuaire LDAP); cela signifie que les modérateurs sont définis - dans mon cas - sous la forme "Prenom Nom".

Il est possible de paramétrer ce format, via le paramètre BBB_USERNAME_FORMAT. A l'heure actuelle, les formats "Prenom Nom" ou "Nom Prenom" peuvent être gérés via ce paramétrage.

(avertissement) Ce point est crucial pour que le système fonctionne correctement : une correspondance doit exister sur le "Prenom Nom" ou "Nom Prenom" (selon la configuration BBB_USERNAME_FORMAT) des modérateurs de BigBlueButton et le "Prenom Nom" des utilisateurs dans la base de données de Pod.

(question) A priori, cela devrait pouvoir fonctionner avec Greenlight si celui-ci est configuré pour utiliser l'annuaire LDAP de l'établissement et les champs givenName et sn.

Architecture de la solution

Choix du plugin permettant la diffusion de la session BigBlueButton en direct

Pour diffuser une session BigBlueButton en direct, certains plugins existent déjà sur Github; il ne paraît pas raisonnable de redévelopper un tel système.

Pour arriver à faire mon choix, j'ai testé les 2 solutions suivantes :

  • bbb-recorder (https://github.com/jibon57/bbb-recorder) : un plugin, indépendant de BigBlueButton, qui permet de convertir - via un script - une présentation Web BigBlueButton en fichier vidéo et qui permet également une diffusion en direct (flux RTMP) d'un cours BigBlueButton.
  • BigBlueButton-liveStreaming (https://github.com/aau-zid/BigBlueButton-liveStreaming) : un plugin, indépendant de BigBlueButton, permettant de publier en live (via RTMP) une session BigBlueButton et de l'enregistrer.

Au final, voici ce qui est ressorti de mes tests.

bbb-recorderBigBlueButton-liveStreaming
Exporte un cours BBB en direct live(coche)(coche)
Enregistre un cours BBB en vidéo(coche) 
format webm, mp4
(avertissement)
peut enregistré le cours qu'il publie en live au format mkv
Indépendance vis-à-vis de BigBlueButton(coche)
peut-être installé sur n'importe quel serveur
(coche)
peut-être installé sur n'importe quel serveur
Contenu de la vidéo finale(coche) présentation
(coche) audio
(coche) vidéo
(coche)partage d'écran
(coche)chat
(coche)whiteboard
(coche) présentation
(coche) audio
(coche) vidéo
(coche) partage d'écran
(coche) chat
(coche) whiteboard
Possibilité de chat depuis la page de direct avec BBB(moins)(coche)
Possibilité de faire plusieurs streams sur une même VM(question)(coche)
TechnologiesNodeJS, xvfb, Chrome, ffmpeg, shellDocker, python, xvfb, ffmpeg, shell
Mise à jour régulière(coche)(coche)(coche)(coche)
Notion de charge

(question) 

(ampoule)(ampoule)Le fichier vidéo fait entre 2 et 4Mo par minute, en webm ou mp4

(info)(info) 1 stream nécessite 4-6 vCPU + 4 Go RAM

(ampoule)(ampoule)le fichier vidéo fait ~19Mo par minute, en mkv

...

Au final, il suffit d'avoir Docker et Docker-compose qui tourne tournent sur cette machine bbb-pod-live.

title
Info

Il n'est pas utile d'installer BigBlueButton-liveStreaming à ce stade. C'est le script PHP qui installera automatiquement BigBlueButton-liveStreaming et qui initialisera sa configuration.

Astuce

Installation

...

Docker et Docker-compose sous CentOS 7

Personnellement, sous Cent OS 7, j'ai utilisé les documentations suivantes : 

Au final, voici les commandes utilisées.

Installation Docker

La solution reposant sur le projet Github bigbluebutton-liveStreaming, il est indispensable de s'assurer que ce dernier fonctionne correctement avant d'installer bbb-pod-live.

Pour ce faire, le mieux est de vérifier, au plus tôt, qu'il n'y ait pas de problème en lien avec ce projet et de réaliser un test simple, dès que possible, en suivant la documentation fournie :  https://github.com/aau-zid/BigBlueButton-liveStreaming

Pour informations, lors de l'exécution de la commande docker-compose up -d, si vous obtenez une erreur de ce style : ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

Cela signifie que docker nécessite d'être exécuté avec des privilèges. Dans ce cas, 2 possibilités :

faire en sorte de pouvoir exécuter docker avec le user connecté.
  • exécuter sudo docker-compose up -d. Par contre, dans ce cas, il sera nécessaire de faire lancer le script bbb-pod-live.php via un CRON installé sous le compte root.
  • Astuce
    titleInstallation de Docker sous CentOS 7

    #Anciennement
    # sudo :sudo yum check-update
    curl #curl -fsSL https://get.docker.com/ | sh

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2

    systemctl start docker
    sudo systemctl status docker
    sudo systemctl enable dockersudo curl -L "sudo yum-config-manager --add-repo https://githubdownload.docker.com/dockerlinux/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    sudo chmod +x /usr/local/bin/docker-compose

    docker-compose --version

    chown %USER% /usr/local/bin/docker-compose -R

    En cas d'erreur type Permission denied :

    sudo groupadd docker

    sudo usermod -aG docker %USER%

    Avertissement
    titleInformations importantes concernant bigbluebutton-liveStreaming

    Installation de bbb-pod-live

    bbb-pod-live se présente sous la forme d'un simple script PHP (et d'un fichier de référence docker-compose.default.yml). Il faut donc avoir à minima :

    • PHP 7,
    • php-xml,
    • php-redis

    qui tourne sur cette machine.

    Une fois PHP installé, il suffit de :

    ...

    Info
    titleRépertoire bbb-pod-live

    Ce répertoire bbb-pod-live va contenir les différentes instances de BigBlueButton-liveStreaming, qui peuvent contenir les vidéos enregistrées (lorsque l'enseignant a sélectionné l'enregistrement du direct).

    Il faut donc prévoir un stockage suffisant (typiquement un minimum de 5Go par instance de BigBlueButton-liveStreaming souhaitée).

    • Vérifier qu'il y ait bien le script bbb-pod-live.php et le fichier docker-compose.default.yml dans ce répertoire, avec les bons droits utilisateurs.

    Configuration de bbb-pod-live

    Pour l'instant, la configuration se réalise directement dans les premières lignes du script PHP. A terme, il faudra utiliser un fichier de configuration.

    Voici la liste des éléments paramétrables :

    ...

    Numéro unique de ce serveur dans la liste des serveurs BBB-POD-LIVE
    Par exemple: s'il y a 2 serveurs BBB-POD-LIVE (NUMBER_SERVERS = 2), alors un serveur devra avoir SERVER_NUMBER=1 et l'autre SERVER_NUMBER=2

    ...

    Serveur RTMP qui va gérer les directs pour ce serveur bbb-pod-live cf. BBB_STREAM_URL
    Format, sans authentification : rtmp://serveurRTMP.domaine.fr:port/application/
    Format, avec authentification : rtmp://user@password:serveur.domaine.fr:port/application/
    Exemple : rtmp://live.univ.fr:1935/live/

    ...

    Mot de passe des modérateurs cf. BBB_ATTENDEE_PASSWORD
    (info) Doit être défini comme le mot de passe du modérateur de Moodle / Greenlight ou de tout autre frontend pour permettre la participation via leurs liens

    ...

    centos/docker-ce.repo

    # Installation de la version 20.10.5
    #La version 20.10.6 pose problème au serveur n'ayant pas d'adresse IP v6 (Error starting userland proxy: listen tcp6 [::]:9982: socket: address family not supported by protocol) cf. https://forums.docker.com/t/ipv6-disabled-on-my-computer-but-docker-network-seems-looking-for-it/107299
    sudo yum install docker-ce-20.10.5 docker-ce-cli-20.10.5 containerd.io

    sudo systemctl enable docker && sudo systemctl start docker

    Installation Docker-compose
    Astuce
    titleInstallation de Docker-compose sous CentOS 7

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    sudo chmod +x /usr/local/bin/docker-compose

    docker-compose --version

    Gestion des droits

    Ces droits permettent de pouvoir lancer docker sans sudo et d'éviter l'erreur de type Permission denied.

    Astuce
    titleGestion des droits sous CentOS 7

    chown %USER% /usr/local/bin/docker-compose -R

    #Si le groupe docker n'existe pas, on peut le créer

    sudo groupadd docker

    #Ajout de l'utilisateur à ce groupe

    sudo usermod -aG docker %USER%

    #Astuce permettant d'être sûr de ne plus avoir de problèmes de droit

    sudo chmod 666 /var/run/docker.sock

    (avertissement) Après avoir ajouté le user au groupe docker, ne pas oublier de fermer sa session et de se reconnecter pour que cela soit pris en compte.


    Installation Docker et Docker-compose sous Ubuntu 20.04


    Astuce
    titleInstallation de Docker et Docker-compose sous Ubuntu 20.04

    Sous Ubuntu 20.04, j'ai utilisé la documentation suivante : https://docs.docker.com/engine/install/ubuntu/

    Ce qui donne :

    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    sudo docker run hello-world
    docker -v
    sudo apt install docker-compose



    Avertissement
    titleInformations importantes concernant bigbluebutton-liveStreaming

    La solution reposant sur le projet Github bigbluebutton-liveStreaming, il est indispensable de s'assurer que ce dernier fonctionne correctement avant d'installer bbb-pod-live.

    Pour ce faire, le mieux est de vérifier, au plus tôt, qu'il n'y ait pas de problème en lien avec ce projet et de réaliser un test simple, dès que possible, en suivant la documentation fournie :  https://github.com/aau-zid/BigBlueButton-liveStreaming

    Pour informations, lors de l'exécution de la commande docker-compose up -d, si vous obtenez une erreur de ce style : ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

    Cela signifie que docker nécessite d'être exécuté avec des privilèges. Dans ce cas, 2 possibilités :

    • faire en sorte de pouvoir exécuter docker avec le user connecté.

    • exécuter sudo docker-compose up -d. Par contre, dans ce cas, il sera nécessaire de faire lancer le script bbb-pod-live.php via un CRON installé sous le compte root.


    Installation de bbb-pod-live

    bbb-pod-live se présente sous la forme d'un simple script PHP (et d'un fichier de référence docker-compose.default.yml). Il faut donc avoir à minima :

    • PHP 7,
    • php-xml,
    • php-redis

    qui tourne sur cette machine.

    Une fois PHP installé, il suffit de :

    • Récupérer le répertoire bbb-pod-live de Pod, se trouvant dans le répertoire scripts (à la racine).


    Info
    titleRépertoire bbb-pod-live

    Ce répertoire bbb-pod-live va contenir les différentes instances de BigBlueButton-liveStreaming, qui peuvent contenir les vidéos enregistrées (lorsque l'enseignant a sélectionné l'enregistrement du direct).

    Il faut donc prévoir un stockage suffisant (typiquement un minimum de 5Go par instance de BigBlueButton-liveStreaming souhaitée).

     

    • Vérifier qu'il y ait bien le script bbb-pod-live.php et le fichier docker-compose.default.yml dans ce répertoire, avec les bons droits utilisateurs.

    Configuration de bbb-pod-live

    Pour l'instant, la configuration se réalise directement dans les premières lignes du script PHP. A terme, il faudra utiliser un fichier de configuration.

    Voici la liste des éléments paramétrables :

    ParamètreValeurs possibles / ExemplesCommentaires
    Paramétrage nécessaire pour bbb-pod-live
    DEBUGtrue/falseApplication en mode débogage (true - on logue toutes les lignes) ou en production (false - on logue seulement les erreurs et infos).
    PHYSICAL_BASE_ROOT"/home/user/bbb-pod-live/"

    Répertoire de base de l'application et avoir suffisamment d'espace disque pour l'enregistrement de quelques vidéos (stockage temporaire)
    (info)Ce répertoire doit être sur un disque dur de la machine serveur.

    PHYSICAL_LOG_ROOT"/home/user/bbb-pod-live/logs/"

    Constante permettant de définir le chemin physique du répertoire contenant les logs applicatifs.
    (info)L'arborescence doit être sur un disque dur local de la machine serveur.

    ADMIN_EMAIL"administrateur@univ.fr"Mail de l'administrateur de BBB-POD-LIVE, qui recevra les mails en cas d'erreur
    SERVER_HOSTNAME"server.infra.univ.fr"Hostname de ce serveur BBB-POD-LIVE (utile pour Redis et le chat)
    NUMBER_SERVERS2Nombre de serveurs BBB-POD-LIVE
    SERVER_NUMBER1

    Numéro unique de ce serveur dans la liste des serveurs BBB-POD-LIVE
    Par exemple: s'il y a 2 serveurs BBB-POD-LIVE (NUMBER_SERVERS = 2), alors un serveur devra avoir SERVER_NUMBER=1 et l'autre SERVER_NUMBER=2

    NUMBER_LIVES2Nombre de directs gérés par ce serveur (à adapter selon les ressources du serveur)
    Paramétrage nécessaire pour BigBlueButton-liveStreaming (cf. https://github.com/aau-zid/BigBlueButton-liveStreaming)
    BBB_URL"https://bbb.univ.fr/bigbluebutton/api"URL du serveur BigBlueButton/Scalelite, avec la notion d'API
    BBB_SECRET"xxxxxxxxxxxxxxxxxxxxxxxxxxxx"Clé secrète du serveur BigBlueButton/Scalelite
    BBB_RESOLUTION"1280x720"Résolution pour diffuser / télécharger au format WxH (Défaut: 1920x1080). cf. BBB_RESOLUTION
    FFMPEG_STREAM_VIDEO_BITRATE"3000"Bitrate de la vidéo (Défaut: 4000). cf. FFMPEG_STREAM_VIDEO_BITRATE
    FFMPEG_STREAM_THREADS"0"Threads utilisés pour le flux (Défaut: 0). 0 signifie auto. cf. FFMPEG_STREAM_THREADS
    BBB_STREAM_URL"rtmp://liveX.univ.fr/live/"

    Serveur RTMP qui va gérer les directs pour ce serveur bbb-pod-live cf. BBB_STREAM_URL
    Format, sans authentification : rtmp://serveurRTMP.domaine.fr:port/application/
    Format, avec authentification : rtmp://user@password:serveur.domaine.fr:port/application/
    Exemple : rtmp://live.univ.fr:1935/live/

    BBB_ATTENDEE_PASSWORD"xxxxxxx"

    Mot de passe des participants cf. BBB_ATTENDEE_PASSWORD
    (info)Doit être défini comme le mot de passe du participant de Moodle / Greenlight ou de tout autre frontend pour permettre la participation via leurs liens

    BBB_MODERATOR_PASSWORD"xxxxxxx"

    Mot de passe des modérateurs cf. BBB_ATTENDEE_PASSWORD
    (info) Doit être défini comme le mot de passe du modérateur de Moodle / Greenlight ou de tout autre frontend pour permettre la participation via leurs liens

    Paramétrage nécessaire pour Pod
    POD_HLS_STREAM"https://liveX.univ.fr/hls/"Flux HLS, dépend de la configuration du serveur RTMP Nginx utilisé
    POD_URL"https://pod.univ.fr"URL du serveur Pod
    POD_TOKEN"xxxxxxxxxxxxxxxxxxxxxxxxxxxx"Token de sécurité de Pod, utile pour attaquer Pod via les API Rest (cf. administration de Pod / Jeton)
    POD_ID_BUILDING1Identifiant du bâtiment POD (au sens live/building de POD) de rattachement des diffuseurs créés par bbb-pod-live
    POD_DEFAULT_BBB_PATH"/data/www/user/bbb-recorder/"

    Répertoire dans lequel copier les fichiers vidéo générés par BigBlueButton-liveStreaming
    (avertissement) Ce répertoire - typiquement un partage NFS - doit être accessible aussi par POD et correspondre à DEFAULT_BBB_PATH du fichier settings_local.py.
    (info)Si ce n'est pas possible, laisser ce champ vide "" et positionner USE_BBB_LIVE_DOWNLOADING = False dans le settings_local de POD.

    Après avoir réalisé ce paramétrage, le mieux est de lancer manuellement, en mode DEBUG, le script bbb-pod-live.php via : 

    cd /home/user/bbb-pod-live/; php -f ./bbb-pod-live.php

    Cette première exécution est importante car :

    • cela va créer le répertoire des logs et le fichier de log correspondant à la journée,

    • cela va créer un répertoire bbb-live-streaming par le nombre de directs gérés par ce serveur (NUMBER_LIVES).

      (coche) Par exemple, si 2 directs sont gérés par ce serveur, 2 répertoires seront créés dans le répertoire bbb-pod-live : 
           » bbb-live-streaming1
           » bbb-live-streaming2

    • pour chacun de ces répertoires  bbb-live-streaming, un fichier de configuration de bbb-live-streaming, docker-compose.yml, sera positionné avec les valeurs par défaut dans ce répertoire (cf. paragraphe suivant).


    Fichier docker-compose.yml

     

    (avertissement) Il est primordial de ne pas modifier le fichier docker-compose.default.yml : il servira de modèle pour les containers bbb-liveStreaming.

     

    Lors de la première exécution, le fichier de référence docker-compose.default.yml va être copié en tant que fichier docker-compose.yml  et sera positionné dans chaque répertoire bbb-live-streaming créé :

    Bloc de code
    languageyml
    titleFichier docker-compose.yml
    version: '3.3'
    services:
      redis:
        image: redis
        ports:
          - "modifie_automatiquement:6379"
        networks:
         - app-tier
      bbb-streamer:
        image: aauzid/bigbluebutton-livestreaming
        container_name: liveStreaming1
        shm_size: '2gb'
        environment:
          # BigBlueButton Server url

    ...

    Après avoir réalisé ce paramétrage, le mieux est de lancer manuellement, en mode DEBUG, le script bbb-pod-live.php via : 

    cd /home/user/bbb-pod-live/; php -f ./bbb-pod-live.php

    Cette première exécution est importante car :

    ...

    Fichier docker-compose.yml

    (avertissement) Il est primordial de ne pas modifier le fichier docker-compose.default.yml : il servira de modèle pour les containers bbb-liveStreaming.

    Lors de la première exécution, le fichier de référence docker-compose.default.yml va être copié en tant que fichier docker-compose.yml  et sera positionné dans chaque répertoire bbb-live-streaming créé :

    Bloc de code
    languageyml
    titleFichier docker-compose.yml
    version: '3.3'
    services:
      redis:
        image: redis
        ports:
          - "modifie_automatiquement:6379"
        networks:
         - app-tier
      bbb-streamer:
        image: aauzid/bigbluebutton-livestreaming
        container_name: liveStreaming1
        shm_size: '2gb'
        environment:
          # BigBlueButton Server url:
          - BBB_URL=modifie_automatiquement
          # BigBlueButton secret:
          - BBB_SECRET=modifie_automatiquement
          # BigBlueButton meetingID:
          - BBB_MEETING_ID=modifie_automatiquement
          # start meeting (optional):
          - BBB_START_MEETING=falseURL=modifie_automatiquement
          # attendeeBigBlueButton passwordsecret:
     (optional - has to be set to the attendee password of moodle/greenlight or any other frontend to allow joining via their links- BBB_SECRET=modifie_automatiquement
          # BigBlueButton meetingID:
          - BBB_MEETING_ID=modifie_automatiquement
          # start meeting (optional):
          - BBB_ATTENDEESTART_PASSWORDMEETING=modifie_automatiquementfalse
          # moderatorattendee password (optional - has to be set to the moderatorattendee password of moodle/greenlight or any other frontend to allow joining via their links):
          - BBB_MODERATORATTENDEE_PASSWORD=modifie_automatiquement
          # meetingmoderator titlepassword (optional):
     - has to be set - BBB_MEETING_TITLE=modifie_automatiquement
          # to the moderator password of moodle/greenlight or any other frontend to allow joining via their links):
          - BBB_MODERATOR_PASSWORD=modifie_automatiquement
          # meeting title (optional):
          - BBB_MEETING_TITLE=modifie_automatiquement
          # download / save BigBlueButton meeting
          - BBB_DOWNLOAD_MEETING=modifie_automatiquement
          # Media server url:
          - BBB_STREAM_URL=modifie_automatiquement
          # Resolution to be streamed/downloaded in format WxH (default 1920x1080)
          - BBB_RESOLUTION=modifie_automatiquement
          # stream video bitrate
          - FFMPEG_STREAM_VIDEO_BITRATE=modifie_automatiquement
          # threads used for stream (0=auto)
          - FFMPEG_STREAM_THREADS=modifie_automatiquement
          # Enable chat functionality
          - BBB_ENABLE_CHAT=modifie_automatiquement
          # shows the chat on the left side of the window (Default: false)
          - BBB_SHOW_CHAT=modifie_automatiquement
          # Timezone (default: Europe/Vienna):
          - TZ=modifie_automatiquement
          # Set REDIS host (default: 'redis')
          - BBB_REDIS_HOST=redis
          # Set REDIS channel to subscribe (default: 'chat')
          - BBB_REDIS_CHANNEL=modifie_automatiquement
          # Username for the chat (default: 'Chat')
          - BBB_CHAT_NAME=Chat
          # DEBUG
          - DEBUG=modifie_automatiquement
        networks:
          - app-tier
        volumes:
          - ./videodata:/video
    networks:
      app-tier:
        driver: bridge

    ...

    Bloc de code
    languagebash
    titleJob CRON
    crontab -e
    */1 * * * * /usr/bin/bash -c 'cd /home/user%USER%/bbb-pod-live/; php -f ./bbb-pod-live.php'

    ...

    Info

    Par exemple, si vous avez configuré BBB_NUMBER_MAX_LIVES = 5, et qu'il y a déjà 5 directs BBB en cours, le prochain utilisateur qui souhaitera démarrer un direct BigBlueButton ne pourra pas le faire; il obtiendra un message correspondant à l'image ci-dessous et devra alors attendre qu'un autre direct soit arrêté. Il est alors important de bien dimensionner l'architecture selon vos besoins.

    Voici alors les 2 possibilités en lien avec le paramétrage :

    J'ai déjà configuré la publication des présentations Web en vidéo

    J'ajoute alors les 3 paramètres ci-dessus :

    ...


    Avertissement
    titleUtilisation du système de publication des présentations Web BBB vers Pod

    A l'heure actuelle, le système de diffusion de webinaire BBB est totalement couplé avec le système de publication des présentations Web vers Pod.

    S'il s'avère que cela ne devait pas être le cas, des modifications seront réalisées pour enlever ce couplage.


    Au final, le fichier settings_local.py, concernant BBB, va être de ce type :

    Bloc de code
    languagetext
    titleConfiguration settings_local.py / BBB
    ##
    # BigBlueButton settings
    #
    # Use of BigBlueButton
    USE_BBB = True
    # Directory of bbb-recorder plugin (see documentation https://github.com/jibon57/bbb-recorder)
    # bbb-recorder must be installed in this directory, on all encoding servers
    # bbb-recorder create a directory 'homedir'/Downloads that needs disk space
    DEFAULT_BBB_PLUGIN = '/home/%userpod%/bbb-recorder/'
    # Directory that will contain the video files generated by bbb-recorder
    DEFAULT_BBB_PATH = '/data/www/%userpod%/bbb-recorder/'
    # BigBlueButton or Scalelite server URL, where BBB Web presentation and API are
    BBB_SERVER_URL = 'https://bbb.univ.fr/'
    # BigBlueButton key or Scalelite LOADBALANCER_SECRET
    BBB_SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxx'
    # Username format in BBB
    BBB_USERNAME_FORMAT = 'first_name last_name'
    # Type of the generated video by default
    DEFAULT_BBB_TYPE_ID = 1
    # Number of days before removal the meetings (and associated users) not already published
    # To not remove old meetings, set 0 value
    BBB_NUMBER_DAYS_BEFORE_DELETE = 0
    # Allow the users to perform a BigBlueButton live
    USE_BBB_LIVE = True
    # Allow users to record their BigBlueButton live
    USE_BBB_LIVE_DOWNLOADING = True
    # Number maximum of BBB lives simultaneous managed by the system
    BBB_NUMBER_MAX_LIVES

    ...

     = 5


    Récapitulatif des étapes à réaliser pour l'installation

    ...

    • soit il faut configurer Pod pour être en mode debug (cf. settings_local.py).
      (avertissement)(avertissement) Attention : le mode debug ne doit pas être activé dans un environnement de production.

    • soit modifier directement le script /django_projects/podv2/pod/video/management/commands/bbb.py pour qu'il affiche directement les traitements réalisés (cf. fonction print_if_debug).

    ...