Outils pour utilisateurs

Outils du site


installer_un_serveur_stun_turn_bigbluebutton

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
installer_un_serveur_stun_turn_bigbluebutton [2021/05/09 21:50] n1c0installer_un_serveur_stun_turn_bigbluebutton [2023/04/11 21:50] (Version actuelle) – [Lier BigBlueButton au serveur coturn] Benjamin Labomedia
Ligne 5: Ligne 5:
 Normalement, l'accès à un serveur BigBlueButton implique l'accès à des ports rarement ouverts dans les firewall. Le serveur TURN/STUN permet de passer par les ports généralement ouverts 443 et 3478, relayés ensuite vers le serveur BigBlueButton et ses ports. Normalement, l'accès à un serveur BigBlueButton implique l'accès à des ports rarement ouverts dans les firewall. Le serveur TURN/STUN permet de passer par les ports généralement ouverts 443 et 3478, relayés ensuite vers le serveur BigBlueButton et ses ports.
  
-Dans ce tutoriel, traduit, adapté et augmenté à partir du [[https://docs.bigbluebutton.org/2.2/setup-turn-server.html|tutoriel original]], on utilisera une [[https://www.ubuntu-fr.org/|Ubuntu 20.04 server]] permettant d'installer le package [[https://packages.ubuntu.com/groovy/coturn|coturn]] dans sa version 4.5.1 minimum.+Dans ce tutoriel, traduit, adapté et augmenté à partir du [[https://docs.bigbluebutton.org/admin/setup-turn-server.html|tutoriel original]], on utilisera une [[https://www.ubuntu-fr.org/|Ubuntu 20.04 server]] permettant d'installer le package [[https://packages.ubuntu.com/groovy/coturn|coturn]] dans sa version 4.5.1 minimum.
  
 On considère que le nom de domaine **coturn.mondomaine.org** pointe sur le serveur. On considère que le nom de domaine **coturn.mondomaine.org** pointe sur le serveur.
Ligne 33: Ligne 33:
 </code> </code>
  
-On crée le certificat pour le nom de domaine coturn.mondomaine.org :+On crée le certificat pour le nom de domaine coturn.mondomaine.org, **attention** il faut arrêter apache qui écoute sur le port 80 et empêchera certbot d'utiliser le plugin standalone qui va écouter aussi sur le 80 :
  
 <code bash> <code bash>
Ligne 50: Ligne 50:
   * 443 (TCP/UDP) : accès au certificat TLS   * 443 (TCP/UDP) : accès au certificat TLS
   * 3478 (TCP/UDP) : port d'écoute de coturn   * 3478 (TCP/UDP) : port d'écoute de coturn
 +  * 5349 (TCP/UDP) : port d'écoute TLS de coturn
  
 Et communiquera avec les ports du serveur BigBlueButton via l'interval de ports 32768-65535 (UDP). Et communiquera avec les ports du serveur BigBlueButton via l'interval de ports 32768-65535 (UDP).
Ligne 62: Ligne 63:
 #!/bin/bash -e #!/bin/bash -e
 for certfile in fullchain.pem privkey.pem ; do for certfile in fullchain.pem privkey.pem ; do
- cp -L /etc/letsencrypt/live/coturn.mondomaine.org/« ${certfile}" /etc/turnserver/"${certfile}".new+ cp -L /etc/letsencrypt/live/coturn.mondomaine.org/"${certfile}" /etc/turnserver/"${certfile}".new
  chown turnserver:turnserver /etc/turnserver/"${certfile}".new  chown turnserver:turnserver /etc/turnserver/"${certfile}".new
  mv /etc/turnserver/"${certfile}".new /etc/turnserver/"${certfile}"  mv /etc/turnserver/"${certfile}".new /etc/turnserver/"${certfile}"
Ligne 86: Ligne 87:
 <code bash> <code bash>
 listening-port=3478 listening-port=3478
-tls-listening-port=443+tls-listening-port=5349
  
 listening-ip=<IP> listening-ip=<IP>
Ligne 99: Ligne 100:
 cert=/etc/turnserver/fullchain.pem cert=/etc/turnserver/fullchain.pem
 pkey=/etc/turnserver/privkey.pem pkey=/etc/turnserver/privkey.pem
-# From https://ssl-config.mozilla.org/ Intermediate, openssl 1.1.0g, 2020-01 
 cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384" cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
 dh-file=/etc/turnserver/dhp.pem dh-file=/etc/turnserver/dhp.pem
Ligne 162: Ligne 162:
 ==== Configuration du démarrage du service ==== ==== Configuration du démarrage du service ====
  
-Quand le service **coturn** démarrera, il faut qu'il se lie (bind) au port 443. Il faut aussi augmenter le nombre de fichier que le service peut gérer. On crée un dossier **/etc/systemd/system/coturn.service.d** : +Quand le service **coturn** démarrera, il faut qu'il se lie (bind) au port 5349 (TLS). Il faut aussi augmenter le nombre de fichier que le service peut gérer. On crée un dossier **/etc/systemd/system/coturn.service.d** : 
  
 <code bash> <code bash>
Ligne 181: Ligne 181:
 ==== Logs (et rotation) ==== ==== Logs (et rotation) ====
  
 +On crée le dossier de logs de coturn en lui donnant les bons droits :
  
 +<code bash>
 +mkdir -p /var/log/turnserver && chown turnserver:turnserver /var/log/turnserver
 +</code>
 +
 +Puis on configure la rotation en créant un fichier **/etc/logrotate.d/coturn** dans lequel on met :
 +
 +<code bash>
 +/var/log/turnserver/*.log
 +{
 + rotate 7
 + daily
 + missingok
 + notifempty
 + compress
 + postrotate
 + /bin/systemctl kill -s HUP coturn.service
 + endscript
 +}
 +</code>
 +
 +Redémarrer le serveur coturn ! (voir ci-dessous)
 +
 +===== Commandes =====
 +
 +A faire la 1ère fois seulement, on copie les clefs TLS dans le dossier /etc/turnserver en utilisant le script créé plus haut pour le renouvellement du certificat par certbot :
 +
 +<code bash>
 +/etc/letsencrypt/renewal-hooks/deploy/coturn
 +</code>
 +
 +On s’assure que le daemon prend en compte le fichier override.conf créé plus haut :
 +
 +<code bash>
 +systemctl daemon-reload
 +</code>
 +
 +On redémarre le service :
 +
 +<code bash>
 +systemctl restart coturn
 +</code>
 +
 +===== Lier BigBlueButton au serveur coturn =====
 +
 +Sur le serveur qui héberge BigBlueButton, modifier le fichier **/usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml** tel que ci-dessous.
 +
 +Remplacer <VALEUR_SECRETE> par la valeur donnée à la variable **static-auth-secret** dans le fichier **/etc/turnserver.conf** précédemment configuré. 
 +
 +<code xml>
 +<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
 +            ">
 +
 +    <bean id="stun1" class="org.bigbluebutton.web.services.turn.StunServer">
 +        <constructor-arg index="0" value="stun:coturn.mondomaine.org"/>
 +    </bean>
 +
 +    <!--bean id="stun2" class="org.bigbluebutton.web.services.turn.StunServer">
 +        <constructor-arg index="0" value="stun:stun2.example.com"/>
 +    </bean-->
 +
 +    <!--bean id="iceCandidate1" class="org.bigbluebutton.web.services.turn.RemoteIceCandidate">
 +        <constructor-arg index="0" value="192.168.0.1"/>
 +    </bean-->
 +
 +    <!-- Turn servers are configured with a secret that's compatible with
 +         http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00
 +         as supported by the coturn and rfc5766-turn-server turn servers -->
 +
 +    <bean id="turn1" class="org.bigbluebutton.web.services.turn.TurnServer">
 +        <constructor-arg index="0" value="<VALEUR_SECRETE>"/>
 +        <constructor-arg index="1" value="turns:coturn.mondomaine.org:443?transport=tcp"/>
 +        <constructor-arg index="2" value="86400"/>
 +    </bean>
 +
 +    <bean id="turn2" class="org.bigbluebutton.web.services.turn.TurnServer">
 +        <constructor-arg index="0" value="<VALEUR_SECRETE>"/>
 +        <constructor-arg index="1" value="turn:coturn.mondomaine.org?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="stun1" />
 +                <!--ref bean="stun2" /-->
 +            </set>
 +        </property>
 +        <property name="turnServers">
 +            <set>
 +                <ref bean="turn1" />
 +                <ref bean="turn2" />
 +            </set>
 +        </property>
 +        <property name="remoteIceCandidates">
 +            <set>
 +                <!--ref bean="iceCandidate1" /-->
 +                <!--ref bean="iceCandidate2" /-->
 +            </set>
 +        </property>
 +    </bean>
 +</beans>
 +</code>
 +
 +Redémarrer BigBlueButton :
 +
 +<code bash>
 +bbb-conf --restart
 +</code>
 +
 +Pour tester si le serveur coturn jour son rôle de relay, utiliser la méthode décrite dans le [[https://docs.bigbluebutton.org/admin/setup-turn-server.html#test-your-turn-server|tutoriel original]].
 +
 +{{tag>n1c0 serveur streaming tutoriel futuretic }}
installer_un_serveur_stun_turn_bigbluebutton.1620597005.txt.gz · Dernière modification : 2021/05/09 21:50 de n1c0