Passer au contenu principal

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

BigBlueButton est le logiciel de visioconférence et de formation à distance de la ville d'Échirolles depuis plusieurs années. Associé à un serveur Turn, il permet d'échanger avec un niveau de qualité constant, même avec un grand nombre d'utilisateurs. L'enregistrement et la relecture des événements est simple et efficace.

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.

serveur-bbb.png

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.