| 31.01.2023 | FR, EN, CZ |

Utilisation de serveurs WebRTC ICE personnalisés dans SimpleX Chat

Déployer un serveur STUN/TURN

Pour ce guide, nous utiliserons l'implémentation de serveur STUN/TURN la plus complète et la plus testée - coturn et la distribution Linux Ubuntu 20.04 LTS.

  1. Obtenez les certificats stun.$VOTRE_DOMAINE et turn.$VOTRE_DOMAINE.

    Nous utilisons Let's Encrypt.

  2. Installez le package coturn depuis le dépôt principal.

apt update && apt install coturn`
  1. Décommentez TURNSERVER_ENABLED=1 de /etc/default/coturn :
sed -i '/TURN/s/^#//g' /etc/default/coturn
  1. Configurez coturn dans /etc/turnserver.conf :

    Veuillez également consulter les commentaires relatifs pour chacune des options.

# tls sur le port 443
alt-tls-listening-port=443
# Utiliser les empreintes dans les messages TURN
fingerprint
# Utiliser le mécanisme d'identification à long terme
lt-cred-mech
# Vos informations d'identification
user=$VOTRE_LOGIN:$VOTRE_MOT_DE_PASSE
# Le domaine de votre serveur
server-name=$VOTRE_DOMAINE
# Le domaine par défaut à utiliser pour les utilisateurs lorsqu'aucune relation explicite origine/domaine n'a été trouvée
realm=$VOTRE_DOMAINE
# Chemin vers vos certificats. Assurez-vous qu'ils sont lisibles par l'utilisateur/groupe du processus cotun
cert=/var/lib/turn/cert.pem
pkey=/var/lib/turn/key.pem
# Utiliser la clé DH TLS prédéfinie de 2066 bits
dh2066
# Log sur journalctl
syslog
# Utilisateur/groupe qui exécutera le service coturn
proc-user=turnserver
proc-group=turnserver
# Désactiver le chiffrement faible
no-tlsv1
no-tlsv1_1
no-tlsv1_2
  1. Démarrez et activez le service coturn :
systemctl enable coturn && systemctl start coturn
  1. Optionnellement, si vous utilisez le pare-feu ufw, ouvrez les ports appropriés :
  • 3478 – "simple" TURN/STUN;
  • 5349 – TURN/STUN over TLS;
  • 443 – TURN/STUN over TLS, qui peuvent contourner les pare-feu;
  • 49152:65535 – plage de ports que Coturn utilisera par défaut pour le relais TURN.
# Pour Ubuntu
sudo ufw allow 3478 && \
sudo ufw allow 443 && \
sudo ufw allow 5349 && \
sudo ufw allow 49152:65535/tcp && \
sudo ufw allow 49152:65535/udp

# Pour Fedora
sudo firewall-cmd --permanent --add-port=443/tcp && \
sudo firewall-cmd --permanent --add-port=443/udp && \
sudo firewall-cmd --permanent --add-port=5349/tcp && \
sudo firewall-cmd --permanent --add-port=5349/udp && \
sudo firewall-cmd --permanent --add-port=49152:65535/tcp && \
sudo firewall-cmd --permanent --add-port=49152:65535/udp && \
sudo firewall-cmd --reload

Configurer l'app mobile

Pour configurer votre application mobile afin d'utiliser votre serveur :

  1. Ouvrez Paramètres / Réseau & Serveurs / Serveurs WebRTC ICE et activez la case Configurer les serveurs ICE.

  2. Entrez toutes les adresses des serveurs dans le champ, une par ligne, par exemple si vos serveurs sont sur le port 5349 :

stun:stun.example.com:5349
turn:username:password@turn.example.com:5349

Voilà, vous pouvez désormais passer des appels audio et vidéo via votre propre serveur, sans partager aucune donnée avec nos serveurs (autre que l'échange de clés avec votre contact dans les messages cryptés E2E).

Dépannage

  • Déterminer si un serveur est disponible :

    Exécutez cette commande dans votre terminal :

    ping <votre_ip_ou_domaine>
    

    Si des paquets sont transmis, le serveur est opérationnel !

  • Déterminez si les ports sont ouverts :

    Exécutez cette commande dans votre terminal :

    nc -zvw10 <votre_ip_ou_domaine> 443 5349
    

    Vous devriez voir :

    Connection to <votre_ip_ou_domaine> 443 port [tcp/https] succeeded!
    Connection to <votre_ip_ou_domaine> 5349 port [tcp/*] succeeded!
    
  • Testez la connectivité STUN/TURN :

    1. Allez sur IceTest.

    2. Dans la section Build up ICE Server List, ajoutez :

      • STUN: stun:<votre_ip_ou_domaine>:<port> et appuyez sur Add STUN
      • TURN: turn:<votre_ip_ou_domaine>:<port>, Username: <votre_login>, Credential: <votre_pass> et appuyez sur Add TURN

      <port> est 443 ou 5349.

    3. Vous devriez voir vos serveurs dans la section ICE server list. Si tout est correctement configuré, cliquez sur Start test :

    4. Dans la section Results, vous devriez obtenir quelque chose comme ceci :

      Si les résultats montrent des candidats srflx et relay, tout est correctement configuré !

© 2020-2023 SimpleX | Projet Open-Source