| 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).
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 | ||
|---|---|---|
| ||
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 :
|
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 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.
...
| Avertissement | ||
|---|---|---|
| ||
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. |
...
| bbb-recorder | BigBlueButton-liveStreaming | |
|---|---|---|
| Exporte un cours BBB en direct live | ||
| Enregistre un cours BBB en vidéo | format webm, mp4 | peut enregistré le cours qu'il publie en live au format mkv |
| Indépendance vis-à-vis de BigBlueButton | peut-être installé sur n'importe quel serveur | peut-être installé sur n'importe quel serveur |
| Contenu de la vidéo finale | présentation audio vidéo partage d'écran chat whiteboard | présentation audio vidéo partage d'écran chat whiteboard |
| Possibilité de chat depuis la page de direct avec BBB | ||
| Possibilité de faire plusieurs streams sur une même VM | ||
| Technologies | NodeJS, xvfb, Chrome, ffmpeg, shell | Docker, python, xvfb, ffmpeg, shell |
| Mise à jour régulière | ||
| Notion de charge |
Le fichier vidéo fait entre 2 et 4Mo par minute, en webm ou mp4 | 1 stream nécessite 4-6 vCPU + 4 Go RAM le fichier vidéo fait ~19Mo par minute, en mkv |
Aux vues des besoins, et en particulier suite à la possibilité d'ajouter un tchat public à la page de direct, j'ai alors choisi BigBlueButton-liveStreaming comme solution pour la diffusion de sessions BigBlueButton en direct.
De plus, l'université Polytechnique Hauts-de-France avait déjà développé un système (reposant sur un script Bash) utilisant également BigBluButton-liveStreaming, ce qui montre que ce plugin correspond bien aux besoins.
Installation et configuration
Prérequis
Techniquement, la solution repose sur :
...
- Totalement indépendant des serveurs de Pod et de BigBlueButton.
- Peut être installé sur des serveurs spécifiques bbb-pod-live (load balancing simpliste).
- Ce script PHP peut gérer plusieurs instances de BigBlueButton-liveStreaming.
Installation et configuration à réaliser sur les serveurs bbb-pod-live
Installation des prérequis de BigBlueButton-liveStreaming
Pour installer les prérequis de BigBlueButton-liveStreaming, il suffit de consulter la documentation officielle du projet : https://github.com/aau-zid/BigBlueButton-liveStreaming
Au final, il suffit d'avoir Docker qui tourne sur cette machine bbb-pod-live.
...
peut-être installé sur n'importe quel serveur | peut-être installé sur n'importe quel serveur | |
| Contenu de la vidéo finale | ||
| Possibilité de chat depuis la page de direct avec BBB | ||
| Possibilité de faire plusieurs streams sur une même VM | ||
| Technologies | NodeJS, xvfb, Chrome, ffmpeg, shell | Docker, python, xvfb, ffmpeg, shell |
| Mise à jour régulière | ||
| Notion de charge |
|
|
Aux vues des besoins, et en particulier suite à la possibilité d'ajouter un tchat public à la page de direct, j'ai alors choisi BigBlueButton-liveStreaming comme solution pour la diffusion de sessions BigBlueButton en direct.
De plus, l'université Polytechnique Hauts-de-France avait déjà développé un système (reposant sur un script Bash) utilisant également BigBluButton-liveStreaming, ce qui montre que ce plugin correspond bien aux besoins.
Installation et configuration
Prérequis
Techniquement, la solution repose sur :
- Le projet Github BigBlueButton-liveStreaming: installé sur les serveurs bbb-pod-live (sous la forme de containers Docker).
https://github.com/aau-zid/BigBlueButton-liveStreaming - Un serveur de streaming pour la publication RTMP reposant sur RTMP Nginx (cf. documentation https://www.esup-portail.org/wiki/x/BgC8KQ)
- Le système existant de publication des présentations Web de BigBlueButton vers Pod (CRON job, plugin BBB).
- De nouvelles API REST pour Pod.
- Un script PHP (CRON job) pour le démarrage/arrêt des directs, création/suppression des diffuseurs…
- Totalement indépendant des serveurs de Pod et de BigBlueButton.
- Peut être installé sur des serveurs spécifiques bbb-pod-live (load balancing simpliste).
- Ce script PHP peut gérer plusieurs instances de BigBlueButton-liveStreaming.
Installation et configuration à réaliser sur les serveurs bbb-pod-live
Installation des prérequis de BigBlueButton-liveStreaming
Pour installer les prérequis de BigBlueButton-liveStreaming, il suffit de consulter la documentation officielle du projet : https://github.com/aau-zid/BigBlueButton-liveStreaming
Au final, il suffit d'avoir Docker et Docker-compose qui tournent sur cette machine bbb-pod-live.
| 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. |
Installation Docker et Docker-compose sous CentOS 7
Personnellement, sous Cent OS 7, j'ai utilisé les documentations suivantes :
- Installation de Docker sous CentOS 7 : https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-centos-7
- (Au cas où) Installation de Docker sous Scientific Linux 7 : https://medium.com/@Dylan.Wang/how-to-install-docker-ce-on-scientific-linux-7-8-180e161f5947
- Installation de Docker-compose sous CentOS 7 : https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-centos-7
- Installer Docker et Docker-compose depuis les dépôts officiels : https://computerz.solutions/centos-docker/
Au final, voici les commandes utilisées.
Installation Docker
| Astuce | ||
|---|---|---|
| ||
Personnellement, sous Cent OS 7, j'ai utilisé les documentations suivantes : Installation de Docker sous CentOS 7 :#Anciennement Au final, voici les commandes utilisées : sudo yum check-updatecurl -fsSL https://get.docker.com/ | sh sudo systemctl start docker sudo systemctl status docker sudo systemctl enable docker | sh sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # Installation de la version 20.10.5 sudo systemctl enable docker && sudo systemctl start docker |
Installation Docker-compose
| Astuce | ||
|---|---|---|
| ||
sudo curl -L "https://github.com/docker/compose/releases/download/1.2329.21/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 | ||
|---|---|---|
| ||
chown %USER% /usr/local/bin/docker-compose -R En cas d'erreur type Permission denied :#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 |
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 | ||
|---|---|---|
| ||
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 \ |
...
| Info | ||
|---|---|---|
| ||
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.
...
Fichier docker-compose.yml
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 | ||||
|---|---|---|---|---|
| ||||
crontab -e */1 * * * * /usr/bin/bash -c 'cd /home/user%USER%/bbb-pod-live/; php -f ./bbb-pod-live.php' |
...
- soit il faut configurer Pod pour être en mode debug (cf. settings_local.py).
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).
...