Comment installer un serveur STUN/TURN avec coturn dans Ubuntu 18.04

Partagez sur:

Dans ce tutoriel, nous allons voir pas à pas comment installer et configurer un serveur Stun/Turn avec coturn dans Ubuntu à partir de zero.

Ces derniers jours, nous avons dû implémenter une application de visioconférence basée sur WebRTC utilisant PeerJS avec Node.js.

Comme mentionné dans les notes officielles de démarrage de cette technologie, la plupart du temps pour faire fonctionner des applications comme celle-ci, vous aurez besoin d’un type spécial de serveur chargé de relayer le trafic entre pairs, car parfois une socket directe est souvent pas possible entre les clients (sauf s’ils résident sur le même réseau local).

Ceci est connu sous le nom de serveur TURN, qui signifie Traversal Using Relay NAT et est un protocole permettant de relayer le trafic réseau.

Comme il est assez difficile de trouver un serveur TURN gratuit, car il n’y en a pas, nous avons fini par implémenter notre propre serveur STUN/TURN et nous souhaitons partager avec vous comment nous l’avons implémenté.

Dans ce didacticiel, nous vous expliquerons comment installer et configurer coturn à partir de zéro pour créer votre propre serveur STUN/TURN dans Ubuntu 18.04.

1. Comment installer Coturn

Pour implémenter votre propre serveur STUN/TURN, nous nous appuierons sur le projet Coturn.

Coturn est une implémentation gratuite et open source d’un serveur TURN et STUN pour VoIP et WebRTC.

Ce projet a évolué à partir du projet rfc5766-turn-server (https://code.google.com/p/rfc5766-turn-server/).

Il existe de nombreuses nouvelles spécifications TURN avancées qui vont bien au-delà du document RFC 5766 original.

Ce projet prend le code de rfc5766-turn-server comme démarreur et y ajoute de nouvelles fonctionnalités avancées.

Avant de procéder à l’installation de coturn, assurez-vous de mettre à jour le référentiel apt-get vers sa dernière version avec la commande suivante :

sudo apt-get -y update

 

Ensuite, installez le package coturn avec la commande suivante :

sudo apt-get install coturn

 

Cela installera le projet coturn TURN sur votre serveur, une implémentation open source gratuite des serveurs TURN et STUN.

Assurez-vous d’arrêter le service après avoir installé le package avec la commande suivante, car il sera automatiquement démarré une fois l’installation terminée :

systemctl stop coturn

 

Vous allez maintenant pouvoir suivre la suite du tutoriel. Pour plus d’informations sur le projet coturn, assurez-vous de visiter le référentiel officiel sur Github pour consulter la documentation.

2. Activer le coturn

Après l’installation, vous devrez activer le serveur TURN dans le fichier de configuration de coturn. Pour ce faire, décommentez la propriété TURNSERVER_ENABLED dans le fichier /etc/default/coturn. Vous pouvez utiliser nano pour éditer le fichier depuis le terminal :

nano /etc/default/coturn

 

Assurez-vous que le contenu du fichier a la propriété non commenté, comme ceci :

TURNSERVER_ENABLED=1

Enregistrez les modifications et passez à l’étape suivante.

3. Sauvegardez et créez un fichier de configuration

Maintenant que le serveur Turn est activé, vous devez modifier le fichier de configuration en fonction de vos besoins. Assurez-vous de sauvegarder le fichier de configuration d’origine qui répertorie toutes les options possibles de Coturn, au cas où vous auriez besoin de restaurer à une autre occasion. Vous pouvez utiliser la commande suivante pour ce faire :

# Move the original turnserver configuration file to a backup in the same directory

mv /etc/turnserver.conf /etc/turnserver.conf.original

 

Cela renommera essentiellement le fichier. Ensuite, procédez à la création du fichier de configuration dans le même répertoire :

nano /etc/turnserver.conf

 

Et collez dessus le contenu suivant :

# /etc/turnserver.conf

# STUN server port is 3478 for UDP and TCP, and 5349 for TLS.

# Allow connection on the UDP port 3478

listening-port=3478

# and 5349 for TLS (secure)

tls-listening-port=5349

# Require authentication

fingerprint

lt-cred-mech

# We will use the longterm authentication mechanism, but if

# you want to use the auth-secret mechanism, comment lt-cred-mech and

# uncomment use-auth-secret

# Check: https://github.com/coturn/coturn/issues/180#issuecomment-364363272

#The static auth secret needs to be changed, in this tutorial

# we'll generate a token using OpenSSL

# use-auth-secret

# static-auth-secret=replace-this-secret

# ----

# If you decide to use use-auth-secret, After saving the changes, change the auth-secret using the following command:

# sed -i "s/replace-this-secret/$(openssl rand -hex 32)/" /etc/turnserver.conf

# This will replace the replace-this-secret text on the file with the generated token using openssl.

# Specify the server name and the realm that will be used

# if is your first time configuring, just use the domain as name

server-name=yourdomain.com

realm=yourdomain.com

# Important:

# Create a test user if you want

# You can remove this user after testing

user=guest:somepassword

total-quota=100

stale-nonce=600



# Specify the process user and group

proc-user=turnserver

proc-group=turnserver

 

Cette configuration de base fonctionne généralement pour la plupart des besoins, mais si vous devez configurer autre chose, assurez-vous de visiter la documentation officielle des propriétés de configuration ici.

N’oubliez pas que dans ce cas, nous avons inclus un utilisateur test dans le fichier pour tester le serveur TURN ultérieurement, cependant vous êtes libre de le supprimer et de le créer plus tard avec turnadmin.

Jusqu’à présent, tout ce que nous devons configurer sur notre serveur doit être fait.

4. Créez un utilisateur à long terme en utilisant turnadmin

Turnadmin est inclus dans le package par défaut de coturn, cette application est un outil d’administration de relais TURN qui vous permet de gérer les utilisateurs de votre serveur turn/stun. Les clients auront besoin d’informations d’identification pour se connecter à votre serveur Turn, vous pouvez donc les enregistrer comme ceci :

sudo turnadmin -a -u USERNAME -r REALM -p PASSWORD

 

Par exemple, pour créer un utilisateur test, j’exécuterais la commande suivante (nom d’utilisateur adminturn domaine yourdomain.com et mot de passe 12345) :

sudo turnadmin -a -u adminturn -r yourdomain.com -p 12345

 

Notez que nous avons créé précédemment un seul utilisateur sur le fichier /etc/turnserver.conf avec du texte brut définissant le nom d’utilisateur comme invité et le mot de passe somepassword.

5. Démarrer le serveur Coturn

Après avoir créé les utilisateurs et configuré correctement coturn, vous pourrez démarrer le service afin que les clients puissent s’y connecter. Procédez à l’initialisation du service avec la commande suivante :

systemctl start coturn

 

Cela démarrera le service de coturn sur le serveur. Vous pouvez vérifier l’état du service avec la commande suivante :

systemctl status coturn

 

Ce qui devrait produire quelque chose de similaire à :

7. Test du serveur TURN/STUN

Heureusement, il existe un formidable outil en ligne qui vous permet de vérifier la fonctionnalité des serveurs STUN/TURN. Cet outil est Trickle ICE, un projet de page WebRTC qui teste la fonctionnalité trickle ICE dans une implémentation WebRTC standard. Il crée une PeerConnection avec les ICEServers spécifiés (qui contiendront les informations de notre serveur récemment implémenté), puis démarre la collecte de candidats pour une session avec un seul flux audio. Au fur et à mesure que les candidats sont rassemblés, ils sont affichés dans la zone de texte ci-dessous, accompagnés d’une indication lorsque la collecte des candidats est terminée.

Lire aussi: Comment installer .NET 8 sur Ubuntu 24.04

Pour commencer, ouvrez le site Web de l’outil dans un nouvel onglet de navigateur et commencez à remplir le formulaire des serveurs ICE. Dans le formulaire, vous devrez fournir respectivement l’URI STUN ou TURN avec les informations d’identification (uniquement pour le serveur TURN) comme ceci :

stun:stun.yourdomain.com:5349

turn:turn.yourndomain.com:5349

 

Comme vous pouvez le voir, les URI suivent le modèle protocole:domaine:port. Le formulaire serait rempli comme ceci :

 

Puis en bas de page dans les options ICE, lancez le test en appuyant sur le bouton Rassembler les candidats :

Test TURN/STUN server online

 

 

Le test devrait générer quelque chose de similaire à :

 

 

 

Notez que cela se produit parce que l’outil a un bug sur la plupart des navigateurs récents, mais tant que vous pouvez réexécuter le test en appuyant encore et encore sur Rassembler les candidats (afin que le bouton Rassembler les candidats ne bloque pas), tout devrait bien se passer. le serveur STUN/TURN.

 

 

 


Partagez sur: