Notre configuration
Ceci n'est pas une configuration complète. Il s'agit d'éléments de configuration qu'il nous a semblé important de documenter.
Avant-propos
Cette page décrit quelques éléments de configuration utiles, au delà des la procédure d'installation disponible.
Par exemple : la modification de la configuration nginx (/etc/nginx/sites-available/bigbluebutton) permet deux choses importantes :
- La création d'URL de visioconférence simples de type https://visio.exemple.fr/maconf au lieu de https://visio.exemple.fr/rooms/exm-nch-pqs-hro/join utile quand il s'agit de communiquer ou de créer, par exemple, un salon de visio pour une salle de réunion (l'URL https://visio.exemple.fr/masalle étant beaucoup plus simple à communiquer par téléphone).
- La rétrocompatibilité des anciennes adresses BBB, qui incluaient un /b/ vers le nouveau nommage des URL
Notre serveur
Notre solution tourne sur une machine virtuelle sous Ubuntu serveur. Les ressources : 8 cœurs et 16 Go de mémoire.
Cette configuration nous a permis d'organiser, par exemple, un échange en visioconférence avec 100 participants et plus de 40 caméras activées.
BigBlueButton
Suivi de la procédure : https://docs.bigbluebutton.org/administration/install/
Configuration dans /etc/bigbluebutton
Configuration de FreeSWITCH
Dans les fichiers de conf dans /opt/freeswitch/etc/freeswitch/vars.xml, mettre l’adresse ip du serveur à external_sip_ip
Fichier bbb-html5.yml
Mettre wss et le nom de domaine (au lieu de ws et l’adresse IP)
public:
kurento:
wsUrl: wss://visio.exemple.fr/bbb-webrtc-sfu
private:
prometheus:
enabled: true
Fichier turn-stun-servers.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!--
We need turn0 for FireFox to workaround its limited ICE implementation.
This is UDP connection. Note that port 3478 must be open on this BigBlueButton
and reachable by the client.
Also, in 2.5, we previously defined turn:$HOST:443?transport=tcp (not 'turns')
to workaround a bug in Safari's handling of Let's Encrypt. This bug is now fixed
https://bugs.webkit.org/show_bug.cgi?id=219274, so we omit the 'turn' protocol over
port 443.
-->
<bean id="stun0" class="org.bigbluebutton.web.services.turn.StunServer">
<constructor-arg index="0" value="stun:turn.exemple.fr:3478"/>
</bean>
<bean id="turn0" class="org.bigbluebutton.web.services.turn.TurnServer">
<constructor-arg index="0" value="d6232c99eb49204bf9cb759d980fb407"/>
<constructor-arg index="1" value="turns:turn.exemple.fr:443?transport=tcp"/>
<constructor-arg index="2" value="86400"/>
</bean>
<bean id="turn1" class="org.bigbluebutton.web.services.turn.TurnServer">
<constructor-arg index="0" value="d6232c99eb49204bf9cb759d980fb407"/>
<constructor-arg index="1" value="turn:turn.exemple.fr:443?transport=tcp"/>
<constructor-arg index="2" value="86400"/>
</bean>
<bean id="stunTurnService"
class="org.bigbluebutton.web.services.turn.StunTurnService">
<property name="stunServers">
<set>
<ref bean="stun0"/>
</set>
</property>
<property name="turnServers">
<set>
<ref bean="turn0"/>
<ref bean="turn1"/>
</set>
</property>
</bean>
</beans>
webrtc-sfu/production.yml
Mettre l’adresse IP du serveur dans announcedIp
mediasoup:
webrtc:
listenIps:
- ip: 0.0.0.0
announcedIp: <IP>
plainRtp:
listenIp:
ip: 0.0.0.0
announcedIp: <IP>
Configuration nginx
/usr/share/bigbluebutton/nginx/sip.nginx
Mettre proxy_pass https://<IP>:7443;
/etc/nginx/sites-available/bigbluebutton
server_tokens off;
server {
listen 80;
listen [::]:80;
server_name visio.exemple.fr;
access_log /var/log/nginx/bigbluebutton.access.log;
error_log /var/log/nginx/bigbluebutton.error.log;
include include/redirect_ssl;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name visio.exemple.fr;
include include/ssl_keys_srv-bigbluebutton;
access_log /var/log/nginx/bigbluebutton.access.log;
error_log /var/log/nginx/bigbluebutton.error.log;
# Redirections (URL simples)
rewrite ^/maconf/?$ https://visio.exemple.fr/rooms/exm-nch-pqs-hro/join redirect;
rewrite ^/masalle/?$ https://visio.exemple.fr/rooms/exm-nai-pls-psm/join redirect;
# This variable is used instead of $scheme by bigbluebutton nginx include
# files, so $scheme can be overridden in reverse-proxy configurations.
set $real_scheme $scheme;
# BigBlueButton landing page.
location / {
root /var/www/bigbluebutton-default/assets;
try_files $uri @bbb-fe;
}
# Migrate from old bbb: redirect /b/whatever to /whatever
location ~ ^/b/(.*)$ {
return 301 https://$server_name/$1;
}
# Include specific rules for record and playback
include /etc/bigbluebutton/nginx/*.nginx;
}
Configuration TURN
Nous avons suivi ce qu’il y a dans la documentation, mais nous avons du commenter la ligne lt-cred-mech
sur le serveur TURN pour qu’il fonctionne.
Auteur original de cette documentation : Marc Langevin.