BigBlueButton

Installation des prérequis :
Prérequis : OS Ubuntu 16.04 LTS 64bit. 16GB de RAM – 8cpu – 500GB de Disk.
Tout d’abord s’assurer que le système est bien à jour :
$ grep « multiverse » /etc/apt/sources.list
Il faut avoir une ligne non commentée du genre
deb http://archive.ubuntu.com/ubuntu xenial multiverse
L’important est « multiverse » et que la ligne ne soit pas commentée.
Si y a pas alors :
$ echo « deb http://archive.ubuntu.com/ubuntu/ xenial multiverse » | sudo tee -a /etc/apt/sources.list
Sur les environnements virtuels, l’entropie étant trop faible il faut la simuler, donc on installe le logiciel haveged
$ sudo apt-get install haveged
Il faut ensuite ajouter certains repository qui sont indispensables pour BBB.
$ sudo add-apt-repository ppa:bigbluebutton/support -y
$ sudo add-apt-repository ppa:rmescandon/yq -y
$ sudo add-apt-repository ppa:libreoffice/ppa
Ensuite Update & Upgrade :
$ sudo apt-get update && apt-get dist-upgrade –y && apt-get upgrade –y && apt autoremove –y
BBB utilise MongoDB qui est une base de données très rapide pour synchroniser les clients. On l’installe donc :
$ wget -qO – https://www.mongodb.org/static/pgp/server-3.4.asc | sudo apt-key add –
$ echo « deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse » | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org curl
Le client BBB html5 necessite nodejs :
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash –
sudo apt-get install -y nodejs
Installation de la clefs apt-get de BBB :
$ wget https://ubuntu.bigbluebutton.org/repo/bigbluebutton.asc -O- | sudo apt-key add –
Pour le cas où il s’agit d’une mise à jour il faut purger l’ancienne version :
$ sudo bbb-conf –stop
$ sudo apt-get purge -y bbb-client
Il faut ensuite ajouter le repository BBB :
$ echo « deb https://ubuntu.bigbluebutton.org/xenial-22/ bigbluebutton-xenial main » | sudo tee /etc/apt/sources.list.d/bigbluebutton.list
Puis mettre à jour la liste des paquets :
$ sudo apt-get update
Installation de BBB
$ sudo apt-get install bigbluebutton -y $ sudo apt-get install bbb-html5 -y
Afin d’être sur que tout soit bien à jour :
$ sudo apt-get dist-upgrade -y
Enfin il faut lancer le service
$ sudo bbb-conf –restart
Ne pas tenir compte si une erreur comme celle-ci apparait :
# Not running: tomcat7 or grails ou Error: Could not connect to the configured hostname/IP address
Après que le redémarrage soit fini, vérifier la conf de BBB :
$ sudo bbb-conf –check
BigBlueButton Server 2.2.5 (1848)
Kernel version: 4.4.0-177-generic
Distribution: Ubuntu 16.04.6 LTS (64-bit)
Memory: 32945 MB
CPU cores: 16
/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties (bbb-web)
bigbluebutton.web.serverURL: https://bbb.univ-fcomte.fr
defaultGuestPolicy: ALWAYS_ACCEPT
svgImagesRequired: true
/etc/nginx/sites-available/bigbluebutton (nginx)
server name: bbb.univ-fcomte.fr
port: 80, [::]:80
port: 443 ssl
bbb-client dir: /var/www/bigbluebutton
/var/www/bigbluebutton/client/conf/config.xml (bbb-client)
Port test (tunnel): rtmp://bbb.univ-fcomte.fr
red5: bbb.univ-fcomte.fr
useWebrtcIfAvailable: true
/opt/freeswitch/etc/freeswitch/vars.xml (FreeSWITCH)
local_ip_v4: 194.57.76.115
external_rtp_ip: stun:stun.freeswitch.org
external_sip_ip: stun:stun.freeswitch.org
/opt/freeswitch/etc/freeswitch/sip_profiles/external.xml (FreeSWITCH)
ext-rtp-ip: $${local_ip_v4}
ext-sip-ip: $${local_ip_v4}
ws-binding: :5066
wss-binding: :7443
/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml (record and playback)
playback_host: bbb.univ-fcomte.fr
playback_protocol: https
ffmpeg: 4.2.2-1bbb1~ubuntu16.04
/etc/bigbluebutton/nginx/sip.nginx (sip.nginx)
proxy_pass: 194.57.76.115
/usr/local/bigbluebutton/bbb-webrtc-sfu/config/default.yml (Kurento SFU)
kurento.ip: 194.57.76.115
kurento.url: ws://127.0.0.1:8888/kurento
localIpAddress: 194.57.76.115
recordScreenSharing: true
recordWebcams: true
codec_video_main: VP8
codec_video_content: VP8
/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml (HTML5 client)
build: 874
kurentoUrl: wss://bbb.univ-fcomte.fr/bbb-webrtc-sfu
enableListenOnly: true
# Potential problems described below
On peut aussi utiliser :
$ sudo bbb-conf --status
root@BigBlueButton:~# bbb-conf –status
nginx —————————————————► [✔ – active]
freeswitch ————————————► [✔ – active]
redis-server ——————————► [✔ – active]
bbb-apps-akka —————————► [✔ – active]
bbb-transcode-akka ————► [✔ – active]
bbb-fsesl-akka ————————► [✔ – active]
red5 ——————————————————► [✔ – active]
mongod ————————————————► [✔ – active]
bbb-html5 —————————————► [✔ – active]
bbb-webrtc-sfu ————————► [✔ – active]
kurento-media-server ——► [✔ – active]
etherpad ——————————————► [✔ – active]
bbb-web ———————————————► [✔ – active]
A ce moment-là, le serveur BBB écoute en IPv4 sur l’adresse du serveur. Si l’on ouvre un navigateur sur l’IP on aura l’écran de bienvenu :

Toutes-fois, on ne peut pas se loguer sur BBB. Il est possible d’installer les API-demos, pour essayer, mais dans le cadre de ce tuto, nous nous en passerons.
D’ici il est déjà possible d’utiliser BBB avec une application tierce tel que Moodle. Pour ce faire il faut récupérer l’adresse d’accès à l’API ainsi que le code secret :
$ sudo bbb-conf –secret
root@BigBlueButton:~# bbb-conf –secret
URL: https://bbb.univ-fcomte.fr/bigbluebutton/
Secret: GJot1EDTu2pXXXXXXXXXXIh3wcz3sEds4jLWQ7pGTo
Pour relancer le serveur & vérifier le bon fonctionnement :
$ sudo bbb-conf --restart
$ sudo bbb-conf --check
Affectation d’un hostname au serveur
Afin que le serveur réponde sur son nom de domaine il convient de le configurer dans BBB
$ sudo bbb-conf –setip HOSTNAME
Par ex si le hostname du serveur est bbb.univ-fcomte.fr :
$ sudo bbb-conf –setip bbb.univ-fcomte.fr
Configuration du SSL
Afin de simplifier les choses, nous allons utiliser Let’s Encrypt
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get install certbot
sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096
On fait ensuite une requete de SSL avec le nom de domaine que l’on a choisi pour BBB à l’étape d’avant :
$ sudo certbot –webroot -w /var/www/bigbluebutton-default/ -d bbb.univ-fcomte.fr certonly
Ceci génère les fichiers suivant :
$ ls /etc/letsencrypt/live/bbb.univ-fcomte.fr/
cert.pem chain.pem fullchain.pem privkey.pem
Il faut ensuite éditer le fichier de configuration nginx :
/etc/nginx/sites-available/bigbluebutton
Il faut ajouter ce qui est en rouge :
server {
server_name bbb.univ-fcomte.fr;
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/letsencrypt/live/bbb.univ-fcomte.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ bbb.univ-fcomte.fr /privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers « ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256 »;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhp-4096.pem;
Les certificats let’s encrypt fonctionnent 90 jours. On ajoute une tache planifier pour le renouveler une fois par semaine :
$ sudo crontab -e
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
35 2 * * 1 /bin/systemctl reload nginx
Configuration de FreeSWITCH avec SSL
Sur le firewall il convient d’ouvrir le 7443 à la place du 5066.
Editer le fichier /etc/bigbluebutton/nginx/sip.nginx
Et modifier comme en rouge :
location /ws {
proxy_pass https://
194.57.76.115:7443;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_read_timeout 6h;
proxy_send_timeout 6h;
client_body_timeout 6h;
send_timeout 6h;
}
Configuration de BBB pour charger les sessions en HTTPS
Nous avons configuré nginx pour utiliser SSL maintenant il faut configurer FreeSWITCH pour utiliser https dans les connexions audio.
Il faut éditer :
/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
Dans le fichier il faut mettre à jour la propriété « bigbluebutton.web.serverURL » pour utiliser https :
bigbluebutton.web.serverURL=https://bbb.univ-fcomte.fr
Puis éditer le fichier
/usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties
Et mettre à jour la propriété «jnlpUrl
» et «jnlpFile
» :
streamBaseUrl=rtmp://bbb.univ-fcomte.fr/screenshare
jnlpUrl=https://bbb.univ-fcomte.fr/screenshare
jnlpFile=https://bbb.univ-fcomte.fr/screenshare/screenshare.jnlp
Il faut aussi mettre à jour le fichier /var/www/bigbluebutton/client/conf/config.xml pour indiquer au client BBB de charger les composants en https :
$ sudo sed -e ‘s|http://|https://|g’ -i /var/www/bigbluebutton/client/conf/config.xml
Puis ouvrir le fichier :
/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml
Et changer :
kurento:
wsUrl: ws://bbb.example.com/bbb-webrtc-sfu
en
kurento:
wsUrl: wss://bbb.example.com/bbb-webrtc-sfu
et
note:
enabled: true
url: http://bbb.example.com/pad
en
note:
enabled: true
url:
https://bbb.example.com/pad
Enfin il faut aussi modifier la manière dont les enregistrements sont fournis en modifiant dans le fichier :
/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml
ð playback_protocol: https
Enfin pour valider tout ça on relance les services :
$ sudo bbb-conf –restart
GreenLight
Greenlight est une interface qui permet d’utiliser BBB directement. Il gère les salons, les utilisateurs, et les enregistrements. Il dispose d’une interface d’administration qui permet de configurer BBB suivant ses convenances.
Greenlight ne nécessite pas de disposer d’un système complet, mais doit être suffisamment cloisonné de BBB pour que les deux systèmes ne se perturbent pas. Aussi nous allons utiliser Docker CE.
Installation de Docker sur le serveur
Configuration du repository pour utiliser https :
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
Ajout de la clef GPG officielle de Docker
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
$ sudo add-apt-repository « deb [arch=adm64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable «
Installation du moteur Docker
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
On vérifie ensuite que Docker est opérationnel :
docker -v
Installation de Greenlight
Tout d’abord, on crée un dossier pour conserver les configurations
$ mkdir /opt/greenlight && cd /opt/greenlight
le contenair Greenlight va lire son environnement et sa configuration dans un fichier .env
Pour le générer et installer l’image Docker de Greenlight il faut lancer cette commande :
docker run –rm bigbluebutton/greenlight:v2 cat ./sample.env > .env
Le fichier se trouve /opt/greenlight/.env
Configuration de Greenlight
Greenlight a besoin d’une clef secrète, pour la générer :
docker run –rm bigbluebutton/greenlight:v2 bundle exec rake secret
Cela vous donnera la clef qu’il faut mettre dans le fichier .env à la propriété « SECRET_KEY_BASE
»
Configurer la liaison avec BBB
Il faut utiliser bbb-conf –secret et récupérer l’URL & la clef secrète de BBB afin de remplir dans le fichier .env les propriétés : « BIGBLUEBUTTON_ENDPOINT
» et « BIGBLUEBUTTON_SECRET »
Configuration du host
Pour des raisons de sécurité, nous allons restreindre l’accès à Greenlight à un seul nom de domaine. Par défaut BBB via Greenlight est accessible via https://bbb.univ-fcomte.fr donc il faut remplir la propriété « SAFE_HOSTS=bbb.univ-fcomte.fr » dans le fichier .env
Mise en place de l’authentification LDAP et SMTP et config particulière
Dans le fichier .env il y a des sections consacrées au ldap et au smtp :
- LDAP_SERVER=ldaps.univ-fcomte.fr
- LDAP_PORT=636
- LDAP_METHOD=ssl
- LDAP_UID=uid
- LDAP_BASE=ou=people,dc=univ-fcomte,dc=fr
- LDAP_BIND_DN=cn=bigbluebutton,ou=services,dc=univ-fcomte,dc=fr
- LDAP_PASSWORD=passwordldap
- LDAP_ROLE_FIELD=
Puis :
- SMTP_SERVER=smtp.univ-fcomte.fr
- SMTP_PORT=25
- SMTP_DOMAIN=univ-fcomte.fr
- SMTP_USERNAME=
- SMTP_PASSWORD=
- SMTP_AUTH=
- SMTP_STARTTLS_AUTO=
- SMTP_SENDER=systeme-dsi@univ-fcomte.fr
Enfin on place la configuration de base des salons : la configuration par défaut
- ROOM_FEATURES=mute-on-join,require-moderator-approval,anyone-can-start,all-join-moderator
Vérification de notre configuration
docker run –rm –env-file .env bigbluebutton/greenlight:v2 bundle exec rake conf:check
Les 4 tests doivent être OK.
Configuration Nginx pour diriger tout le trafic de BBB sur Greenlight
Il faut adapter la configuration de nginx de BBB pour que lorsque l’on accède au domaine de bbb on soit automatiquement renvoyé sur Greenlight (ceci afin de forcer l’authentification des utilisateurs pour créer des salons)
docker run –rm bigbluebutton/greenlight:v2 cat ./greenlight.nginx | sudo tee /etc/bigbluebutton/nginx/greenlight.nginx
Puis il faut ajouter en bas du fichier de conf de nginx (/etc/nginx/sites-available/bigbluebutton) :
location = / {
return 3007 /b;
}
Enfin on relance nginx : sudo systemctl restart nginx
Démarrage de Greenlight
Il convient de copier le docket-compose.yml de Greenlight dans le dossier, afin qu’il ne soit pas régénéré à chaque lancement :
docker run –rm bigbluebutton/greenlight:v2 cat ./docker-compose.yml > docker-compose.yml
Il faut ensuite générer un password pour la base de données PostgreSQL et modifier les entrées dans le fichier .env
Pour cela on utilise la commande :
export pass=$(openssl rand -hex 8); sed -i ‘s/POSTGRES_PASSWORD=password/POSTGRES_PASSWORD=’$pass’/g’ docker-compose.yml;sed -i ‘s/DB_PASSWORD=password/DB_PASSWORD=’$pass’/g’ .env
A présent tout est prêt. Il suffit de lancer le contenair :
cd /opt/greenlight/ && docker-compose up
Mises à jours de Greenlight
Pour mettre à jour Greenlight, il suffit d’utiliser la dernière version de l’image sur Dockerhub :
cd /opt/greenlight
docker pull bigbluebutton/greenlight:v2
docker-compose down
docker-compose up
Installation du Composant bbb-download
Il a été demandé comment récupérer les enregistrements sous forme de fichiers vidéos. Actuellement BBB ne prévoit pas cette fonctionnalité. De ce fait il faut ajouter un composant qui va encoder avec ffmpeg les fichiers BBB. Par contre, le tableau blanc, ainsi que le chat ne sont pas présents dans les vidéos.
Pour installer :
cd /opt/
git clone https://github.com/createwebinar/bbb-download.git
cd bbb-download
chmod u+x install.sh
sudo ./install.sh
Si l’on veut encoder toutes les vidéos déjà présentes on utilise :
sudo bbb-record –rebuildall
Pour télécharger la vidéo le lien est :
Tunning BBB
Augmenter le nombre de fichiers ouverts par défaut pour augmenter les capacités d’accueil de BBB :
vi /etc/security/limits.conf
- * – nofile 65535
Changer le tableau blanc :
- On crée son propre tableau dans powerpoint et on l’appelle par ex : ufc.pptx
- On convertit le fichier en pdf
- On copie les fichiers dans /var/www/bigbluebutton-default/
- On modifie le fichier /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
beans.presentationService.defaultUploadedPresentation=${bigbluebutton.web.serverURL}/ufc.pdf
Complément Prometheus pour métrologie
Afin de pouvoir visualiser les ressources du serveur, nous allons ajouter un composant qui va interroger l’API de BBB afin de récupérer des mètrics qui pourront ensuite être utilisable dans des outils comme Grafana
On va utiliser le composant bbb-exporter avec prometheus :
On créé un dossier /opt/bbb-monitoring
On dépose dans ce dossier les fichiers du github : https://github.com/greenstatic/bigbluebutton-exporter/tree/master/extras/all_in_one_monitoring
- bbb_exporter_secrets.env
- docker-compose.yaml
- prometheus.yaml
Dans tous les fichiers il faut modifier les références example.com par bbb.univ-fcomte.fr
On récupère notre BBB secret : bbb-cong –secret
On ajoute les valeurs dans le fichier bbb_exporter_secrets.env
Vu que notre serveur Grafana est extérieur on efface le bloc « grafana » du fichier « docker-compose.yaml »
On modifie l’adresse sur laquelle va écouter Prometheus dans le fichier prometheus.yaml
- remplace [localhost :9090] par [‘194.57.76.115:9090’]
On démarre les services :
cd /opt/bbb-monitoring
docker-compose up –d
De là nous avons notre prometheus qui est dispo et qui va récupérer des métrics : http://bbb.univ-fcomte.fr:9090/ L’interface de Prometheus étant assez rudimentaire, il est donc préférable d’utiliser notre serveur Grafana pour créer les graphiques. Il suffit d’ajouter une source de données Prometheus et de lui mettre l’adresse http://bbb.univ-fcomte.fr:9090/