Projet

Général

Profil

BigBlueButton » Historique » Version 47

mathias.bert-barbedienne, 17/05/2023 09:04

1 1 simon.crespeau
# BigBlueButton
2
3
## Présentation
4
5 3 simon.crespeau
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/
6 4 simon.crespeau
7
## Installation
8
9
### Serveur BigBlueButton
10
11 45 mathias.bert-barbedienne
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
12 4 simon.crespeau
13
BBB fournit un outil en ligne de commande pour gérer le serveur.
14
15
``` bash
16
# État des composants
17
bbb-conf --status
18
19
# Redémarre, démarre et arrête le service
20
bbb-conf --restart
21
bbb-conf --start
22
bbb-conf --stop
23
24
# Plus de commandes
25
bbb-conf --help
26
```
27 1 simon.crespeau
28 45 mathias.bert-barbedienne
### Mise à jour.
29
Un tâche CRON exécutée tous les jours à 7h30 vérifie la présence d'une nouvelle version sur le github.
30 1 simon.crespeau
31 45 mathias.bert-barbedienne
### Mise à jour automatique via script.
32
33
Sous root, lancer le script `/root/Install_BigBlueButton_Lastest_Version.sh`
34
Il est censé tout faire.
35
36
### Mise à jour manuelle, si il faut.
37
NE PAS UTILISER APT POUR FAIRE LES MISE A JOUR, CA NE FONCTIONNE PAS BIEN !
38
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/ `
39
40
On commence donc par activer les dépôts BigBlueButton.
41
`cd /etc/apt`
42
`for file in $(ls -1 bigbluebutton*.list.uncommented)
43
do cp $file $(echo "./sources.list.d/"$file | sed s"/\.uncommented//1" )
44
done`
45
46
47
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)`
48
49
Cette commande met à jour les paquets bbb*, greenlight, le firewall et la config TURN.
50
51
Attendre gentiment que ça finisse.
52
53
Arrêter bbb.
54
`bbb-conf --stop`
55
56
Arrêter les conteneurs docker.
57
`cd /root/greenlight`
58
`docker-compose down`
59
60
Vérifier qu'ils ne sont plus actifs.
61
`docker container ps`
62
63
Les tuer si besoin.
64
`docker container kill <ID>`
65
66
Puis toujours en étant root vérifier et restaurer si besoin les fichiers de configs suivants :
67
`diff /usr/share/bigbluebutton/nginx/sip.nginx{.backup,}` # notamment proxy_pass http et le port 5066 (avant c'était https et port 7443)
68
`diff /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml{.backup,}` # notamment le port 3478 en udp et 3479 en tcp
69
`diff /etc/turnserver.conf{,.backup}`
70
71
Vérifier que /root/greenlight/.env contient toujours la config pour l'authentification ldap.
72
`diff /root/greenlight/.env{,.backup}`
73
74
Relancer les conteneurs docker
75
`cd /root/greenlight`
76
`docker-compose up -d`
77
78
Redémarrer bbb
79
`bbb-conf --start`
80
81
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 !
82
83
Enfin, supprimer les dépôts `bigbluebutton*` dans `/etc/apt/sources.list.d/`
84
`rm -f /etc/apt/sources.list.d/bigbluebutton*`
85
86 5 simon.crespeau
### Greenlight
87 6 simon.crespeau
88 1 simon.crespeau
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
89
90 45 mathias.bert-barbedienne
Greenlight est déployé dans un environnement docker. Tous les fichiers nécessaires sont présents sur `/root/greenlight`.
91
Attention, l'installation se fait par défaut dans le répertoire $HOME de l'utilisateur (root en l'occurrence).
92 1 simon.crespeau
93 6 simon.crespeau
#### Authentification
94 5 simon.crespeau
95 45 mathias.bert-barbedienne
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éé.
96 6 simon.crespeau
97 47 mathias.bert-barbedienne
#### Authentification locale
98
99
En cas de création d'utilisateurs locaux (non LDAP), pour les supprimer, désactiver temporairement la redirection vers /b
100
`mv /usr/share/bigbluebutton/nginx/greenlight-redirect.nginx{,.disabled}`
101
`systemctl reload nginx.service`
102
103
Créer un compte d'admin temporaire
104
`docker exec -it greenlight-v3 bundle exec rake admin:create`
105
106
Se loguer avec, supprimer les comptes locaux présents puis le compte d'admin
107
108
Ré activer la redrection vers /b
109
`mv /usr/share/bigbluebutton/nginx/greenlight-redirect.nginx{.disabled,}`
110
`systemctl reload nginx.service`
111
112 6 simon.crespeau
#### Configuration de Greenlight
113
114 45 mathias.bert-barbedienne
Le fichier de configuration se situe sur `/root/greenlight/.env`.
115 6 simon.crespeau
116 1 simon.crespeau
#### Service
117 6 simon.crespeau
118
Greenlight se gère dans un environnement `docker` grâce à `docker-compose`.
119
120
``` bash
121 45 mathias.bert-barbedienne
cd /root/greenlight
122 6 simon.crespeau
123 1 simon.crespeau
# Arrêter le service
124
sudo docker-compose down
125 6 simon.crespeau
126
# Relancer le service
127
sudo docker-compose up -d
128 45 mathias.bert-barbedienne
Parfois ça ne fonctionne pas, certains conteneurs sont toujours actifs malgré la commande d'arrêt.
129
Les tuer avec la commande sudo docker container kill <ID>
130 6 simon.crespeau
131
# État des conteneurs
132
sudo docker container ps
133
```
134
135
On peut voir que Greenlight intègre deux conteneurs docker:
136
137 7 simon.crespeau
* L'application web qui écoute sur 127.0.0.1:5000
138
* La base de données postgres qui écoute sur 127.0.0.1:5432
139
140
### Serveur web
141
142 8 simon.crespeau
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.
143
144 7 simon.crespeau
Les visiteurs sont redirigés vers `/b`, qui est un reverse proxy vers 127.0.0.1:5000, l'application web de Greenlight.
145
146
#### Certificat
147
148
Le certificat `blabla.aquilenet.fr` est géré par letsencrypt.
149
150
TODO: Réaliser une tâche cron pour le renouvellement du certificat
151
152
``` bash
153
# Renouvellement du certificat
154
sudo certbot renew --standalone --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
155 1 simon.crespeau
```
156 7 simon.crespeau
157
### Serveur coturn
158
159
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).
160
161 45 mathias.bert-barbedienne
Il a été installé en suivant cette page: https://docs.bigbluebutton.org/admin/setup-turn-server.html
162 7 simon.crespeau
163
#### Configuration
164
165
Le fichier de configuration de **coturn** se situe sur `/etc/turnserver.conf`. À noter que le service utilise le certificat letsencrypt `echo.aquilenet.fr`
166
167
``` bash
168
# Redémarrer coturn
169 1 simon.crespeau
sudo systemctl restart coturn
170
```
171
172
#### Liaison avec BigBlueButton
173
174 7 simon.crespeau
La liaison entre **coturn** et BigBlueButton se fait grâce au fichier `/usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml`
175
176 45 mathias.bert-barbedienne
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`.
177
Par précaution ce fichier est sauvegardé en .backup aussi.
178
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.
179
180
il faut redémarrer BigBlueButton à chaque changement avec `sudo bbb-conf --restart`.
181 9 simon.crespeau
182
## Supervision
183
184 46 sacha
https://bigbluebutton-exporter.greenstatic.dev/installation/bigbluebutton_exporter/
185
186 10 sacha
https://grafana.aquilenet.fr/d/HIbd_CXZz2/bigbluebutton-server-instance-netdata
187
188
## Test de charge
189
190
https://www.octopuce.fr/retour-dexperience-sur-bigbluebutton-a-fort-charge/