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.

...

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

...

bbb-pod-live se présente sous la forme d'un simple script PHP. Il faut donc avoir à minima :

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

qui tourne sur cette machine.

...

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"JAMHEVcAdpoS"

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"AOcEHxFFDtrD"

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.

...

  • durant le direct, le plugin bbb-liveStreaming enregistre le fichier vidéo au format mkv dans le répertoire videodata correspondant,

  • une fois la session BBB arrêté, le script bbb-pod-live.php va arrêter le container docker, supprimer le diffuseur, mettre à jour la base de données Pod et copier le fichier mkv - généré précédemment - dans le répertoire configuré via POD_DEFAULT_BBB_PATH,

  • par la suite, ce fichier mkv sera pris en compte par le job CRON de Pod, qui va alors assigner la vidéo directement à l'utilisateur et va lancer l'encodage depuis les serveurs d'encodage.

Pour informations, il faut compter environ 20Mo par minute enregistrée.

Avertissement
titleGestion des droits

Selon la configuration en lien avec Docker et Docker-compose, le fichier vidéo généré peut appartenir à root:root, avec les droits 644. Normalement, ces droits sont suffisants pour être copié puis encodé par les serveurs d'encodage.

A bien tester avant une mise en production effectiveNe pas oublier de gérer correctement les droits / utilisateur / groupe du fichier vidéo généré et copié. Le fichier doit nécessairement pouvoir être lu par l'utilisateur des serveurs d'encodage.


Mise en place du job CRON

...

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.

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

Au final, voici la liste des étapes à réaliser sur les serveurs bbb-pod-live :

  • Installation de Docker
  • Installation de Docker-compose
  • Installation de PHP 7 avec php-xml et php-redis
  • Création du répertoire bbb-pod-live
  • Copie du script bbb-pod-live.php dans ce répertoire
  • Paramétrage du script bbb-pod-live.php
  • Mise en place du CRON php f bbb pod-live.php toutes les minutes
  • Vérifier que les ports REDIS (6379, 6380...) sont bien accessibles aux serveurs Web de Pod
  • Vérifier que le partage NFS pour les enregistrements est bien accessible depuis les serveurs bbb-pod-live (attention aux problèmes de droits)

Au final, voici la liste des étapes à réaliser sur les serveurs Pod :

  • Suivre la documentation concernant la publication des présentations Web de BigBlueButton https://www.esup-portail.org/wiki/x/AgCBNg
  • Configuration adéquate dans le settings_local.py
  • Mise en place (ou modification) du CRON python manage.py bbb main toutes les 2 minutes
  • Vérifier que le partage NFS pour les enregistrements est bien accessible depuis les serveurs d'encodage de Pod (attention aux problèmes de droits)

Installation annexe :

Exploitation

Dans le cas normal, où tout se passe bien, ce système ne devrait pas engendrer d'exploitation particulière et vous ne recevrez d'emails de la part du système qu'en cas d'erreurs.

...