Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

BigBlueButton

Installation et mise à jour

Version 3.0 :

wget -qO- https://raw.githubusercontent.com/bigbluebutton/bbb-install/v3.0.x-release/bbb-install.sh | bash -s -- -w -v jammy-300 -s bbb-test.paquerette.eu -e postmaster@paquerette.eu -g
  • -w installation de 'the uncomplicated firewall' (UFW) pour restreindre l'accès aux ports 22, 80, et 443, et la plage de port UDP 16384-32768.
  • -v jammy-300 installation de la dernière version 3.0
  • -s le nom de l'hôte server (par exemple bbb.paquerette.eu)
  • -e ajouter une adresse mail pour la validation du certificat Let's Encrypt.
  • -g Installer Greenlight version 3

Customisation/Configuration Pâquerette

Ajouter la génération des enregistrements vidéos

https://docs.bigbluebutton.org/administration/customize/#enable-generating-mp4-h264-video-output

Ajouter un bouton télécharger direct à l'interface

  • aller dans le conteneur docker exec -it greenlight-v3 /bin/bash
  • ajouter dans le fichier /usr/src/app/app/javascript/components/recordings/RecordingRow.jsx entre <td className="border-start-0"> et {adminTable les lignes suivantes
 <a download="enregistrement.m4v" href={`/playback/video/${recording.record_id}/video-0.m4v`}>
   <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" stroke-width="1.5" class="hi-s text-muted" viewBox="0 0 512 512">
     <path d="M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 242.7-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7 288 32zM64 352c-35.3 0-64 28.7-64 64l0 32c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-32c0-35.3-28.7-64-64-64l-101.5 0-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352 64 352zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"/>
    </svg>
  </a>

Présentation cachée par défaut

la configuration est disponible ici : /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml L'option s'appelle userdata-bbb_hide_presentation_on_join

Création d'un url sur mesure pour salle

Il est possible de changer l'url pour une de son choix en ligne de commande dans BBB. cf issue

greenlight v2

docker exec -it greenlight-v2 bash
bundle exec rails c
Room.find_by(uid: "CURRENT_ROOM_ID").update_attribute(:uid, "NEW_CUSTOM_ID")

Greenlight v3

docker exec -it greenlight-v3 bash
bundle exec rails c
Room.find_by(friendly_id: "CURRENT_ROOM_ID").update_attribute(:friendly_id, "NEW_CUSTOM_ID")

Changer l'adresse d'un utilisateur

docker exec -it postgres /usr/local/bin/psql -U postgres greenlight-v3-production
SELECT id, email FROM users WHERE email = 'MONADRESSE@paquerette.eu';
UPDATE users
SET email = 'NOUVEAUMAIL@paquerette.eu'
WHERE id = '31193b1a-bfee-400f-b180-086d04def4c9';
SELECT id, email FROM users WHERE id = '31193b1a-bfee-400f-b180-086d04def4c9';

Migration Greenlight V2 vers Greenlight V3

Les migrations ne fonctionnaient pas car le "provider" nommé "greenlight" n'était pas présent dans le programme de migration.

Nous avons donc modifié le code avec les éléments suivant

--- migrations.rake.old 2024-06-06 16:40:12.502232922 +0200
+++ migrations.rake     2024-06-06 16:53:53.872925118 +0200
@@ -68,7 +68,7 @@
         .where.not(roles: { name: COMMON[:filtered_user_roles] }, deleted: true)
         .find_each(start: start, finish: stop, batch_size: COMMON[:batch_size]) do |u|
       role_name = infer_role_name(u.role.name)
-      params = { user: { name: u.name, email: u.email, external_id: u.social_uid, language: u.language, role: role_name } }
+      params = { user: { name: u.name, email: u.email, external_id: u.social_uid, language: u.language, role: role_name, provider: 'greenlight' } }

       response = Net::HTTP.post(uri('users'), payload(params), COMMON[:headers])

@@ -81,7 +81,7 @@
         puts red "Unable to migrate User:"
         puts yellow "UID: #{u.uid}"
         puts yellow "Name: #{params[:user][:name]}"
-        puts red "Errors: #{JSON.parse(response.body.to_s)['errors']}"
+        puts red "Errors: #{JSON.parse(response.body.to_s)}"
         has_encountred_issue = 1 # At least one of the migrations failed.
       end
     end
@@ -133,7 +133,8 @@
                          last_session: r.last_session&.to_datetime,
                          owner_email: r.owner.email,
                          room_settings: room_settings,
-                         shared_users_emails: shared_users_emails } }
+                         shared_users_emails: shared_users_emails,
+                         provider: 'greenlight' } }

       response = Net::HTTP.post(uri('rooms'), payload(params), COMMON[:headers])

@@ -188,7 +189,7 @@
       glRequireAuthentication: infer_room_config_value(setting.get_value('Room Authentication'))
     }.compact

-    params = { settings: { site_settings: site_settings, room_configurations: room_configurations } }
+    params = { settings: { site_settings: site_settings, room_configurations: room_configurations, provider: 'greenlight' } }

     response = Net::HTTP.post(uri('settings'), payload(params), COMMON[:headers])

@@ -197,7 +198,7 @@
       puts green "Successfully migrated Settings"
     else
       puts red "Unable to migrate Settings"
-      puts red "Errors: #{JSON.parse(response.body.to_s)['errors']}"
+      puts red "Errors: #{response}"
       has_encountred_issue = 1 # At least one of the migrations failed.
     end
cd greenlight/
  • Migration des rôles (pas important dans le cas de Pâquerette car pas très utilisé)
docker exec -it greenlight-v2 bundle exec rake migrations:roles
* Migration des comptes
docker exec -it greenlight-v2 bundle exec rake migrations:users
* Migration des salles
docker exec -it greenlight-v2 bundle exec rake migrations:rooms

Problèmes rencontré.

  • Parfois, le passage des mises à jours système et/ou les mises à jours des conteneurs créer des erreurs de connexion audio (surtout des micro) avec des erreurs 1006 Il faut donc repasser le script d'installation.

  • GreenLight V3:

Il y avait de nombreux bug d'affichage qui sont résolu actuellement avec la version 3.0.4 Un bug d'upload était encore présent du à la configuration Nginx (peut-être lié à la version 2 de Greenlight). Il faut retirer la fin de la configuration comme expliqué ici : https://github.com/bigbluebutton/greenlight/issues/4810

Dans le fichier /usr/share/bigbluebutton/nginx/greenlight.nginx (ce qui est lié à rails).

Non support de l'ipv6

Par défaut, BBB ne supporte que l'ipv4. pour ajouter l'ipv6, il faut modifier le fichier /etc/haproxy/haproxy.cfg

frontend nginx_or_turn
+  bind :::443 v4v6 ssl crt /etc/haproxy/certbundle.pem ssl-min-ver TLSv1.2 alpn h2,http/1.1,stun.turn +
-  bind *:443 ssl crt /etc/haproxy/certbundle.pem ssl-min-ver TLSv1.2 alpn h2,http/1.1,stun.turn -
  mode tcp

Migrations de serveur vers une nouvelle version

On fait en sorte que le serveur de destination soit avec les mêmes configurations que le serveur actuel.

1- Arrêt du service GreenLight sur le serveur actuel et sur le serveur de destination

cd /root/greenlight-v3
docker compose down

2- Sauvegarde de la configuration du service existant sur le serveur de destination

cp -rf /root/greenlight-v3 /root/greenlight-v3.old

2- Transfert du service GreenLight à partir du serveur actuel

rsync -av /root/greenlight-v3 root@SERVEURORIGINE:/root/greenlight-v3

3- Transfert des vidéos depuis le serveur actuel

rsync -av /var/bigbluebutton/published/ root@SERVEURORIGINE:/var/bigbluebutton/published/
rsync -av /var/bigbluebutton/unpublished/ root@SERVEURORIGINE:/var/bigbluebutton/unpublished/
rsync -av /var/bigbluebutton/recording/raw/ root@SERVEURORIGINE:/var/bigbluebutton/recording/raw/