* website: add fontmatter & improve image URLs where necessary * website: add docs to website * website: add prismjs for code highlighting * website: change npm install position in web.sh * website: fix an image URL in lang/cs/README.md * website: improve image paths in lang/cs/translations.md * website: add responsiveness & improve stylings of docs * website: add dir to navbar in blog & docs * website: remove scroll in mobile dropdown menu * website: remove rfcs & add guide docs to website * website: remove file renaming script from web.sh * website: add menu to docs in nav * website: add hash list & add scroll to headers * website: customize docs frontmatter through JS * website: remove supported_languages.json * website: move merge_translations.js to JS folder * website: add the following changes to docs - add frontmatter to new doc merged from master - add ignoreForWeb property to frontmatter of README.md docs * website: remove package-lock.json from .gitignore * website: add package-lock.json from .gitignore * website: add no docs message to docs dropdown * website: improve the sidebar of docs * website: add revision date to docs * website: add script to add version to docs frontmatter * website: add layout to display message in docs if its version is old * website: improve nav responsiveness * website: remove frontmatter form main README & rfcs * website: remove rfcs from website folder * website: add ignore condition for rfcs in .eleventy * website: remove frontmatter from lang README docs * website: remove README from website's lang docs * website: add guides menu in nav * website: following changes - add docs_dropdown.json - extend reference menu in nav - remove docs menu from nav * website: fix in docs sidebar * website: revert main docs README.md files * website: revert main docs README.md files * website: move scripts out of js that are for build * website: remove displayAt form guide docs * website: create a docs_sidebar.json & shift to that approach * update navigation * website: set navbar * website: add icons to external links * website: change the approach for docs sidebar creation * website: update docs template * website: add some strings to en.json and map them accordingly * remove icon --------- Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
4.4 KiB
title, revision
| title | revision |
|---|---|
| Utilisation de serveurs WebRTC ICE personnalisés dans SimpleX Chat | 31.01.2023 |
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.
-
Obtenez les certificats
stun.$VOTRE_DOMAINEetturn.$VOTRE_DOMAINE.Nous utilisons Let's Encrypt.
-
Installez le package
coturndepuis le dépôt principal.
apt update && apt install coturn`
- Décommentez
TURNSERVER_ENABLED=1de/etc/default/coturn:
sed -i '/TURN/s/^#//g' /etc/default/coturn
-
Configurez
coturndans/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
- Démarrez et activez le service
coturn:
systemctl enable coturn && systemctl start coturn
- 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.
ufw allow 3478 && \
ufw allow 443 && \
ufw allow 5349 && \
ufw allow 49152:65535/tcp && \
ufw allow 49152:65535/udp
Configurer l'app mobile
Pour configurer votre application mobile afin d'utiliser votre serveur :
-
Ouvrez
Paramètres / Réseau & Serveurs / Serveurs WebRTC ICEet activez la caseConfigurer les serveurs ICE. -
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 5349Vous 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 :
-
Allez sur IceTest.
-
Dans la section Build up ICE Server List, ajoutez :
STUN: stun:<votre_ip_ou_domaine>:<port>et appuyez surAdd STUNTURN: turn:<votre_ip_ou_domaine>:<port>,Username: <votre_login>,Credential: <votre_pass>et appuyez surAdd TURN
Où
<port>est 443 ou 5349. -
Vous devriez voir vos serveurs dans la section ICE server list. Si tout est correctement configuré, cliquez sur
Start test:
-
Dans la section Results, vous devriez obtenir quelque chose comme ceci :
Si les résultats montrent des candidats
srflxetrelay, tout est correctement configuré !
-