Configurer Nextcloud Talk
Introduction
Pour faire fonctionner Nextcloud Talk de manière optimale, vous aurez besoin d’un serveur capable de gérer la communication en temps réel entre vos utilisateurs. Bien que les appels audio/vidéo puissent fonctionner directement entre deux personnes, dès que plusieurs participants sont impliqués ou que les clients se trouvent derrière des NAT/pare-feux, un serveur STUN/TURN devient indispensable. C’est précisément le rôle de Coturn, qui va assurer la fiabilité et la fluidité des appels. Ce tutoriel ne couvre pas le serveur haute performance vous pourrez donc faire des appels avec 2 à 3 personnes.
Pré-requis
Avant d’installer et de configurer Coturn, assurez-vous que votre serveur est à jour et que vous disposez des droits administrateur (sudo/root). Vous aurez également besoin d’un nom de domaine ou d’une adresse IP publique correctement configurée. Un certificat SSL/TLS valide est fortement recommandé pour sécuriser les échanges. Enfin, n’oubliez pas d’ouvrir dans votre pare-feu les ports nécessaires (par défaut 3478 pour STUN/TURN et 5349 pour TLS).
Qu’est-ce que Coturn ?
Coturn est un serveur STUN/TURN qui agit comme un relais pour le trafic multimédia (voix, vidéo, données) dans les communications WebRTC, comme celles utilisées par Nextcloud Talk. Lorsque deux clients ne peuvent pas établir de connexion directe en raison de NAT ou de pare-feu, Coturn prend le rôle d’intermédiaire et relaie le flux entre eux. Ainsi, même dans des environnements réseaux complexes, les appels restent fluides, stables et accessibles à tous les participants.
Nextcloud Talk a besoin d’un serveur STUN/TURN pour gérer correctement les appels audio/vidéo, surtout avec plusieurs participants.
Coturn est le serveur le plus utilisé pour ce rôle : il sert de relais lorsque les clients sont derrière un NAT ou un pare-feu.
Pré-requis :
Serveur Linux à jour avec accès sudo/root
Nom de domaine ou IP publique
Certificat SSL/TLS valide (recommandé)
Ports ouverts : 3478 (STUN/TURN) et 5349 (TLS)
- Enregistrement A dans votre domaine. turn.votredomaine.com et (optionnel stun.votredomaine.com)
Avantage principal : garantir une communication fluide, stable et sécurisée même dans des environnements réseaux complexes.
Mise à jour
sudo apt update && sudo apt upgrade -y
Installation de coturn
sudo apt install coturn
Une fois installé, vous pouvez vérier le statut de coturn
sudo systemctl status coturn
Si il n’est pas démarré vous pouvez le démarrer
sudo systemctl start coturn
Aussi le démarrer automatiquement au démarrage
sudo systemctl enable coturn
Nous allons éditer son fichier de configuration
sudo nano /etc/turnserver.conf
Par défaut, toutes les lignes de ce fichier sont commentées. Ci-dessous se trouve un exemple de configuration que vous pouvez copier et coller dans votre fichier.
Remplacez votredomainenextcloud par le nom de domaine de votre instance Nextcloud ou Spreed WebRTC.
Remplacez 123.45.67.89 par l’adresse IP publique de votre serveur.
Définissez une clé secrète longue et sécurisée pour l’authentification. (Vous pouvez utiliser la commande
openssl rand -base64 20pour générer une chaîne aléatoire.)
# --- Interfaces & ports ---
listening-device=eth0 # Ou l'interface qui porte ton IP locale
listening-port=3478 # STUN/TURN en clair (UDP/TCP)
# --- IPs ---
listening-ip=192.168.2.5 # IP locale du serveur (LAN)
relay-ip=192.168.2.5 # IP de relais (souvent la même locale)
external-ip=PUBLIC_IP # Ton IP publique (MAJ auto via script/cron)
# Option avancée si NAT avec IP privée différente :
# external-ip=PUBLIC_IP/192.168.2.5
# --- Plage de ports relayés (RTP) ---
min-port=49160
max-port=49200
# --- Authentification (Nextcloud Talk "clé partagée") ---
use-auth-secret
static-auth-secret=VOTRE_CLE_SECRETE_LONGUE_ET_ALEATOIRE
realm=turn.VOTREDOMAINE.COM
server-name=turn.VOTREDOMAINE.COM
# --- WebRTC & sécurité ---
fingerprint
lt-cred-mech
stale-nonce
no-multicast-peers
# --- Quotas & bande passante (0 = illimité) ---
total-quota=100
bps-capacity=0
# --- Compte service (créé par le paquet) ---
proc-user=turnserver
proc-group=turnserver
Enregistrez et fermez le fichier. Puis redémarrez le serveur Coturn avec
sudo systemctl restart coturn
Redirigez les ports de votre routeur
Vous redirigez le traffic vers votre serveur turn
Faire le script de récupération d’adresse ip publique
Allez dans votre dossier utilisateur avec la commande
cd
Créez le dossiers Scripts
sudo mkdir -p Scripts
Allez dans votre dossier Scripts avec la commande
cd Scripts/
Créez le script avec la commande
sudo nano update_coturn_server.sh
Collez le contenu suivant et sauvegardez
#!/bin/bash
# On récupère l'IP publique
PUBLIC_IP=$(curl -s ifconfig.me)
# Fichier de config
CONF_FILE="/etc/turnserver.conf"
# Remplace la ligne external-ip=... par la nouvelle IP
sed -i "s/^external-ip=.*/external-ip=$PUBLIC_IP/" "$CONF_FILE"
# Redémarre coturn si l’IP a changé
systemctl restart coturn
Rendre la script exécutable
sudo chmod +x update_coturn_server.sh
Automatisez la tâche du script avec crontab
sudo crontab -e
Ajouter la ligne suivante en changeant davidgrenier par votre utilisateur ubuntu
0 */2 * * * /home/davidgrenier/Scripts/update-turn-ip.sh
Enregistrement DNS
Dans la Section DNS de votre domaine, par exemple chez cloudflare, ajoutez les deux enregistrements (A) suivants
- turn.votredomaine.com
- stun.votredomaine.com
Les deux enregistrements doivent pointer vers votre adresse ip publique fournie par votre fournisseur d’accès internet (FAI)
Téléchargez Nextcloud Talk
Dans l’interface de Nextcloud allez dans applications packs d’applications et recherchez Nextcloud Talk pour ensuite la télécharger et l’activer
Allez dans paramètres d’administration et à gauche cliquez sur talk pour le configurer
Dans la section serveurs STUN vous pouvez ajouter un nouveau serveur STUN au format suivant
- stun.votredomaine.com:3478
Ouvrir les ports du par feu
Pour laisser passer le traffic vous devez ouvrir les ports suivants
# Port TURN/STUN standard (TCP/UDP) - communications clients
sudo ufw allow 3478/tcp comment 'TURN server TCP'
sudo ufw allow 3478/udp comment 'TURN server UDP'
# Port TURN sur TLS - recommandé pour compatibilité avec NAT /pare-feux stricts (si vous utilisez TLS)
sudo ufw allow 5349/tcp comment 'TURN server TLS TCP'
# Plage de ports relayés UDP (RTP/Media) - nécessaire pour l’audio/vidéo
sudo ufw allow 49160:49200/udp comment 'TURN server UDP relay range'
Suite à quoi vous verrez que la connexion est maintenant établie avec le crochet vert
Vous aurez accès à Nextcloud Talk