BigBlueButton¶
Présentation¶
BigBlueButton est une solution de visio-conférence avec des fonctionnalités supplémentaires comme le partage d'écran, la diffusion et l'annotation de documents, ou l'intégration de pads dans la conférence entre tous les participants... https://bigbluebutton.org/
Installation¶
Serveur BigBlueButton¶
Le serveur de BigBlueButton d'Aquilenet est installé sur la vm "echo", une Ubuntu Server 20.04 (seule distribution supportée par BBB à l'heure actuelle). La méthode d'installation suivie a été celle décrite par la documentation. https://docs.bigbluebutton.org/2.5/install.html
BBB fournit un outil en ligne de commande pour gérer le serveur.
# État des composants
bbb-conf --status
# Redémarre, démarre et arrête le service
bbb-conf --restart
bbb-conf --start
bbb-conf --stop
# Plus de commandes
bbb-conf --help
Mise à jour.¶
Un tâche CRON exécutée tous les jours à 7h30 vérifie la présence d'une nouvelle version sur le github.
Mise à jour automatique via script.¶
Sous root, lancer le script /root/Install_BigBlueButton_Lastest_Version.sh
Il est censé tout faire.
Mise à jour manuelle, si il faut.¶
NE PAS UTILISER APT POUR FAIRE LES MISE A JOUR, CA NE FONCTIONNE PAS BIEN !
Pour ne pas risquer de casser bbb lors d'un upgrade de routine du système, les dépôts bbb ont été supprimés de /etc/apt/sources.list.d/
et sont présents avec un suffixe .uncommented
sous /etc/apt/
On commence donc par activer les dépôts BigBlueButton.
cd /etc/apt
for file in $(ls -1 bigbluebutton*.list.uncommented)
do cp $file $(echo "./sources.list.d/"$file | sed s"/\.uncommented//1" )
done
Puis en étant root lancer la commande wget -qO- https://ubuntu.bigbluebutton.org/bbb-install-2.5.sh | bash -s -- -v focal-250 -s blabla.aquilenet.fr -e admin@aquilenet.fr -w -g -c blabla.aquilenet.fr:$(awk -F"=" '{if ($1=="static-auth-secret") print$2}' /etc/turnserver.conf)
Cette commande met à jour les paquets bbb*, greenlight, le firewall et la config TURN.
Attendre gentiment que ça finisse.
Arrêter bbb.
bbb-conf --stop
Arrêter les conteneurs docker.
cd /root/greenlight
docker-compose down
Vérifier qu'ils ne sont plus actifs.
docker container ps
Les tuer si besoin.
docker container kill <ID>
Puis toujours en étant root vérifier et restaurer si besoin les fichiers de configs suivants :
diff /usr/share/bigbluebutton/nginx/sip.nginx{.backup,}
# notamment proxy_pass http et le port 5066 (avant c'était https et port 7443)
diff /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml{.backup,}
# notamment le port 3478 en udp et 3479 en tcp
diff /etc/turnserver.conf{,.backup}
Vérifier que /root/greenlight/.env contient toujours la config pour l'authentification ldap.
diff /root/greenlight/.env{,.backup}
Relancer les conteneurs docker
cd /root/greenlight
docker-compose up -d
Redémarrer bbb
bbb-conf --start
VÉRIFIER que ça fonctionne bien en se connectant au service et en créant une conf, tester le son ET le partage de caméra !
Enfin, supprimer les dépôts bigbluebutton*
dans /etc/apt/sources.list.d/
rm -f /etc/apt/sources.list.d/bigbluebutton*
Greenlight¶
Le serveur BigBlueButton fournit une API, il faut ensuite installer une interface web qui va pouvoir communiquer avec cette API et utiliser le serveur. La plus courante est Greenlight, supportée par le projet BigBlueButton. Elle a également été installée en suivant la documentation. https://docs.bigbluebutton.org/greenlight/gl-install.html
Greenlight est déployé dans un environnement docker. Tous les fichiers nécessaires sont présents sur /root/greenlight
.
Attention, l'installation se fait par défaut dans le répertoire $HOME de l'utilisateur (root en l'occurrence).
Authentification¶
Greenlight gère l'authentification des utilisateurs. Elle se fait via l'utilisateur LDAP uid=bigbluebutton,dc=aquilenet,dc=fr
qui a les droits de lecture sur les mots de passes des membres de l'association. Ainsi, tous les membres ont la possibilité de créer des salons. Ils peuvent également fournir les liens de leurs conférences. Autrement dit, seuls les membres de l'association peuvent créer des salons, mais tout le monde peut rejoindre un salon créé.
Authentification locale¶
En cas de création d'utilisateurs locaux (non LDAP), pour les supprimer, désactiver temporairement la redirection vers /b
mv /usr/share/bigbluebutton/nginx/greenlight-redirect.nginx{,.disabled}
systemctl reload nginx.service
Créer un compte d'admin temporaire
docker exec -it greenlight-v3 bundle exec rake admin:create
Se loguer avec, supprimer les comptes locaux présents puis le compte d'admin
Ré activer la redrection vers /b
mv /usr/share/bigbluebutton/nginx/greenlight-redirect.nginx{.disabled,}
systemctl reload nginx.service
Configuration de Greenlight¶
Le fichier de configuration se situe sur /root/greenlight/.env
.
Service¶
Greenlight se gère dans un environnement docker
grâce à docker-compose
.
cd /root/greenlight
# Arrêter le service
sudo docker-compose down
# Relancer le service
sudo docker-compose up -d
Parfois ça ne fonctionne pas, certains conteneurs sont toujours actifs malgré la commande d'arrêt.
Les tuer avec la commande sudo docker container kill <ID>
# État des conteneurs
sudo docker container ps
On peut voir que Greenlight intègre deux conteneurs docker:
- L'application web qui écoute sur 127.0.0.1:5000
- La base de données postgres qui écoute sur 127.0.0.1:5432
Serveur web¶
C'est nginx qui gère le service web. Le fichier de configuration se trouve sur /etc/nginx/sites-available/bigbluebutton
. Une redirection 301 automatique vers https est activée pour toutes les connexions en http.
Les visiteurs sont redirigés vers /b
, qui est un reverse proxy vers 127.0.0.1:5000, l'application web de Greenlight.
Certificat¶
Le certificat blabla.aquilenet.fr
est géré par letsencrypt.
TODO: Réaliser une tâche cron pour le renouvellement du certificat
# Renouvellement du certificat
sudo certbot renew --standalone --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
Serveur coturn¶
Un serveur coturn , qui fournit le service TURN est également installé dur echo . Le service TURN implémente STUN et permet aux clients de contourner d'éventuelles règles de parefeu ou NAT sur les connexions UDP utilisées par WebRTC. Ce service joue donc le rôle de proxy pour utiliser BigBlueButton. (À noter qu'il pourrait tout aussi bien servir à d'autres services utilisant WebRTC dans l'infrastructure d'Aquilenet).
Il a été installé en suivant cette page: https://docs.bigbluebutton.org/admin/setup-turn-server.html
Configuration¶
Le fichier de configuration de coturn se situe sur /etc/turnserver.conf
. À noter que le service utilise le certificat letsencrypt echo.aquilenet.fr
# Redémarrer coturn
sudo systemctl restart coturn
Liaison avec BigBlueButton¶
La liaison entre coturn et BigBlueButton se fait grâce au fichier /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml
Ce fichier ayant une féroce tendance à être réinitialisé lors des mises à jours, on utilise maintenant la personnalisation avec /etc/bigbluebutton/bbb-conf/apply-conf.sh
.
Par précaution ce fichier est sauvegardé en .backup aussi.
Voir https://docs.bigbluebutton.org/admin/customize.html#apply-confsh et https://docs.bigbluebutton.org/admin/customize.html#apply-custom-settings-for-turn-server pour les détails.
il faut redémarrer BigBlueButton à chaque changement avec sudo bbb-conf --restart
.
Supervision¶
https://bigbluebutton-exporter.greenstatic.dev/installation/bigbluebutton_exporter/
https://grafana.aquilenet.fr/d/HIbd_CXZz2/bigbluebutton-server-instance-netdata
Test de charge¶
https://www.octopuce.fr/retour-dexperience-sur-bigbluebutton-a-fort-charge/
Updated by mathias.bert-barbedienne over 1 year ago · 47 revisions