L'auteur a choisi le Open Internet/Free Speech Fund pour recevoir un don dans le cadre du programme Write for Donations.

Introduction

Jitsi Meet est une application de vidéoconférence open-source basée sur WebRTC. Un serveur Jitsi Meet met à disposition des salles de visioconférence à plusieurs auxquelles vous pouvez accéder en utilisant rien de plus que votre navigateur, et offre des fonctionnalités comparables à celles d'une conférence téléphonique Zoom ou Skype. L'avantage d'une conférence Jitsi est que toutes vos données passent uniquement par votre serveur, et le cryptage TLS de bout en bout garantit que personne ne peut espionner pendant l'appel. Avec Jitsi, vous pouvez être sûr que vos informations privées le restent.

Dans ce tutoriel, vous allez installer et configurer un serveur Jitsi Meet sur Debian 10. La configuration par défaut permet à quiconque de créer une nouvelle salle de conférence. Ce n'est pas idéal pour un serveur qui est publiquement disponible sur Internet. Vous devrez donc également configurer Jitsi Meet de manière à ce que seuls les utilisateurs enregistrés puissent créer de nouvelles salles de conférence. Une fois que vous avez créé la salle de conférence, tous les utilisateurs peuvent s'y joindre, à condition d'avoir l'adresse unique et le mot de passe facultatif.

Conditions préalables

Avant de commencer ce guide, vous aurez besoin des éléments suivants :

  • Un serveur Debian 10 configuré en suivant le tutoriel Configuration initiale du serveur avec Debian 10, y compris un utilisateur compatible sudo non root. La taille du serveur dont vous aurez besoin dépend principalement de la bande passante disponible et du nombre de participants que vous prévoyez d'utiliser le serveur. La table suivante vous donnera une idée de ce qui est nécessaire.
  • Un nom de domaine configuré pour pointer vers votre serveur. Vous pouvez apprendre comment faire pointer des domaines vers les Droplets DigitalOcean en suivant le tutoriel Comment configurer un nom d'hôte avec DigitalOcean. Tout au long de ce guide, l'exemple de nom de domaine jitsi.your-domain est utilisé. 

Lorsque vous choisissez un serveur pour exécuter votre instance Jitsi Meet, vous devez tenir compte des ressources système nécessaires pour accueillir les salles de conférence. Les informations de référence suivantes ont été recueillies à partir d'une machine virtuelle à noyau unique utilisant des paramètres vidéo de haute qualité :

CPU Bande passante du serveur
Deux participants 3 % 30Kbps en haut, 100Kbps en bas
Trois participants 15 % 7Mbps en haut, 6,5Mbps en bas

Le saut dans l'utilisation des ressources entre deux et trois participants est dû au fait que Jitsi acheminera les données d'appel directement entre les clients lorsqu'ils sont deux. Lorsque plus de deux clients sont présents, les données des appels sont acheminées par le serveur Jitsi Meet.

Étape 1 — Définition du nom d'hôte du système

Au cours de cette étape, vous changerez le nom d'hôte du système pour qu'il corresponde au nom de domaine que vous avez l'intention d'utiliser pour votre instance de Jitsi Meet et vous résoudrez ce nom d'hôte en le remplaçant par l'IP localhost, 127.0.0.1. Jitsi Meet utilise ces deux paramètres lorsqu'il installe et génère ses fichiers de configuration.

Tout d'abord, définissez le nom d'hôte du système sur le nom de domaine que vous utiliserez pour votre instance Jitsi. La commande suivante permet de définir le nom d'hôte actuel et de modifier le fichier /etc/hostname qui conserve le nom d'hôte du système entre deux redémarrages : 

  • sudo hostnamectl set-hostname jitsi.your-domain

La commande que vous avez exécutée se décompose comme suit :

  • hostnamectl est un utilitaire de la suite d'outils systemd pour gérer le nom d'hôte du système.
  • set-hostname définit le nom d'hôte du système.

Vérifiez que cela a réussi en effectuant les opérations suivantes :

  • hostname

Le nom d'hôte que vous avez défini avec la commande hostnamectl vous sera alors renvoyé :

Output
jitsi.your-domain

Ensuite, vous établirez une correspondance locale entre le nom d'hôte du serveur et l'adresse IP de rebouclage, 127.0.0.1. Faites-le en ouvrant le fichier /etc/hosts avec un éditeur de texte : 

  • sudo nano /etc/hosts

Ensuite, ajoutez la ligne suivante :

/etc/hosts
127.0.0.1 jitsi.your-domain

Faire correspondre le nom de domaine de votre serveur Jitsi Meet à 127.0.0.1 permet à votre serveur Jitsi Meet d'utiliser plusieurs processus en réseau qui acceptent des connexions locales entre eux sur l'adresse IP 127.0.0.1. Ces connexions sont authentifiées et cryptées avec un certificat TLS qui est enregistré à votre nom de domaine. Le mappage local du nom de domaine à 127.0.0.1 permet d'utiliser le certificat TLS pour ces connexions au réseau local.

Enregistrez et fermez votre fichier

Votre serveur a maintenant le nom d'hôte dont Jitsi a besoin pour l'installation. Dans l'étape suivante, vous ouvrirez les ports du pare-feu dont Jitsi et l'installateur du certificat TLS ont besoin.

Étape 2 — Configurer le pare-feu

Lorsque vous avez suivi le guide Configuration initiale du serveur avec Debian 10, vous avez activé le pare-feu UFW et ouvert le port SSH. Le serveur Jitsi a besoin que certains ports soient ouverts afin de pouvoir communiquer avec les clients d'appel. De même, le processus d'installation de TLS doit avoir un port ouvert afin de pouvoir authentifier la demande de certificat.

Les ports que vous allez ouvrir sont les suivants :

  • 80/tcp utilisé dans la demande de certificat TLS.
  • 443/tcp utilisé pour la page web de création de la salle de conférence.
  • 4443/tcp,10000/udp utilisé pour transmettre et recevoir le trafic d'appels cryptés. 

Exécutez les commandes ufw suivantes pour ouvrir ces ports : 

  • sudo ufw allow 80/tcp
  • sudo ufw allow 443/tcp
  • sudo ufw allow 4443/tcp
  • sudo ufw allow 10000/udp

Vérifiez qu'ils ont tous été ajoutés avec la commande ufw status :

  • sudo ufw status

Vous verrez le résultat suivant si ces ports sont ouverts :

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere 4443/tcp ALLOW Anywhere 10000/udp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6) 4443/tcp (v6) ALLOW Anywhere (v6) 10000/udp (v6) ALLOW Anywhere (v6)

Le serveur est maintenant prêt pour l'installation de Jitsi, que vous compléterez dans la prochaine étape.

Étape 3 — Installer Jitsi Meet

Dans cette étape, vous allez ajouter le dépôt stable Jitsi à votre serveur et ensuite installer le paquet Jitsi Meet à partir de ce dépôt. Vous serez ainsi assuré de toujours utiliser le dernier paquet stable de Jitsi Meet.

Tout d'abord, installez le paquet gnupg, qui permet au système de gérer les clés cryptographiques GPG

  • sudo apt install gnupg

Ensuite, téléchargez la clé Jitsi GPG avec l'utilitaire de téléchargement wget :

  • wget https://download.jitsi.org/jitsi-key.gpg.key

Le gestionnaire de paquets apt utilisera cette clé GPG pour valider les paquets que vous téléchargerez depuis le dépôt Jitsi.

Maintenant, ajoutez la clé GPG que vous avez téléchargée au porte-clés d’apt à l'aide de l'utilitaire apt-key :

  • sudo apt-key add jitsi-key.gpg.key

Vous pouvez maintenant supprimer le fichier de la clé GPG car il n'est plus nécessaire :

  • rm jitsi-key.gpg.key

Maintenant, vous allez ajouter le dépôt Jitsi à votre serveur en créant un nouveau fichier source qui contient le dépôt Jitsi. Ouvrez et créez le nouveau fichier avec votre éditeur :

  • sudo nano /etc/apt/sources.list.d/jitsi-stable.list

Ajoutez cette ligne au fichier pour le dépôt Jitsi :

/etc/apt/sources.list.d/jitsi-stable.list
deb https://download.jitsi.org stable/

Sauvegardez et quittez votre éditeur.

Enfin, effectuez une mise à jour du système pour recueillir la liste des paquets à partir du dépôt Jitsi et installez ensuite le paquet jitsi-meet : 

  • sudo apt update
  • sudo apt install jitsi-meet

Lors de l'installation de jitsi-meet, vous serez invité à saisir le nom de domaine (par exemple, jitsi.your-domain) que vous voulez utiliser pour votre instance Jitsi Meet. 

Image montrant le dialogue de nom d'hôte de l'installation de jitsi-meet

Note : Vous déplacez le curseur à partir du champ du nom d'hôte pour mettre en évidence le <OK> avec la touche TAB. Appuyez sur ENTER lorsque <OK> est mis en évidence pour soumettre le nom d'hôte.

Une nouvelle boîte de dialogue vous demande si vous souhaitez que Jitsi crée et utilise un TLS auto-signé ou utilise un certificat existant que vous possédez déjà : 

Image montrant la boîte de dialogue du certificat d'installation de jitsi-meet

Si vous n'avez pas de certificat TLS pour votre domaine Jitsi, sélectionnez la première option, Générer un nouveau certificat auto-signé.

Votre instance Jitsi Meet a maintenant été installée en utilisant un certificat TLS auto-signé. Cela entraînera des avertissements au niveau du navigateur, de sorte que vous obtiendrez un certificat TLS signé à l'étape suivante.

Étape 4 — Obtenir un certificat TLS signé

Jitsi Meet utilise des certificats TLS pour crypter le trafic des appels afin que personne ne puisse écouter votre appel lorsqu'il circule sur l'internet. Les certificats TLS sont les mêmes certificats qui sont utilisés par les sites web pour activer les URL HTTPS.

Jitsi Meet fournit un programme permettant de télécharger automatiquement un certificat TLS pour votre nom de domaine qui utilise l'utilitaire Certbot. Vous devrez installer ce programme avant d'exécuter le script d'installation du certificat.

D'abord, installez le paqeut certbot avec la commande suivante :

  • sudo apt install certbot

Votre serveur est maintenant prêt à exécuter le programme d'installation du certificat TLS fourni par Jitsi Meet :

  • sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Lorsque vous exécutez le script, vous verrez apparaître l'invite suivante pour une adresse électronique :

Output
------------------------------------------------------------------------- This script will: - Need a working DNS record pointing to this machine(for domain jitsi.example.com) - Download certbot-auto from https://dl.eff.org to /usr/local/sbin - Install additional dependencies in order to request Let’s Encrypt certificate - If running with jetty serving web content, will stop Jitsi Videobridge - Configure and reload nginx or apache2, whichever is used - Configure the coturn server to use Let's Encrypt certificate and add required deploy hooks - Add command in weekly cron job to renew certificates regularly You need to agree to the ACME server's Subscriber Agreement (https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf) by providing an email address for important account notifications Enter your email and press [ENTER]:

Cette adresse électronique sera communiquée à l'émetteur du certificat https://letsencrypt.org et sera utilisée pour vous informer sur la sécurité et d'autres questions liées au certificat TLS. Vous devez entrer une adresse électronique ici pour procéder à l'installation. L'installation s'achèvera alors sans autre indication.

Lorsqu'elle se terminera, votre instance Jitsi Meet sera configurée pour utiliser un certificat TLS signé pour votre nom de domaine. Les renouvellements de certificats se feront aussi automatiquement car l'installateur a placé un script de renouvellement à /etc/cron.weekly/letsencrypt-renew qui se lancera chaque semaine. 

Votre serveur Jitsi Meet est maintenant opérationnel et disponible pour des tests. Ouvrez un navigateur et dirigez-le vers votre nom de domaine. Vous pourrez créer une nouvelle salle de conférence et inviter d'autres personnes à vous rejoindre.

La configuration par défaut pour Jitsi Meet est que toute personne visitant la page d'accueil de votre serveur Jitsi Meet peut créer une nouvelle salle de conférence. Cela utilisera les ressources système de votre serveur pour faire fonctionner la salle de conférence et n'est pas souhaitable pour les utilisateurs non autorisés. Dans l'étape suivante, vous configurerez votre instance Jitsi Meet pour permettre uniquement aux utilisateurs enregistrés de créer des salles de conférence.

Étape 5 — Verrouiller la création de conférence

Dans cette étape, vous configurerez votre serveur Jitsi Meet pour ne permettre qu'aux utilisateurs enregistrés de créer des salles de conférence. Les fichiers que vous allez éditer ont été générés par l'installateur et sont configurés avec votre nom de domaine.

La variable your_domain sera utilisée à la place d'un nom de domaine dans les exemples suivants. 

Tout d'abord, ouvrez /etc/prosody/conf.avail/your_domain.cfg.lua avec un éditeur de texte :

  • sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua

Modifiez cette ligne :

/etc/prosody/conf.avail/your_domain.cfg.lua
...
        authentication = "anonymous"
...

pour obtenir ce qui suit :

/etc/prosody/conf.avail/your_domain.cfg.lua
...
        authentication = "internal_plain"
...

Cette configuration indique à Jitsi Meet de forcer l'authentification du nom d'utilisateur et du mot de passe avant d'autoriser la création d'une salle de conférence par un nouveau visiteur.

Ensuite, dans le même fichier, ajoutez la section suivante à la fin du fichier :

/etc/prosody/conf.avail/your_domain.cfg.lua
...
VirtualHost "guest.your_domain"
    authentication = "anonymous"
    c2s_require_encryption = false

Cette configuration permet à des utilisateurs anonymes de rejoindre des salles de conférence qui ont été créées par un utilisateur authentifié. Toutefois, le client doit disposer d'une adresse unique et d'un mot de passe facultatif pour accéder à la salle.

Ici, vous avez ajouté un invité au début de votre nom de domaine. Par exemple, pour jitsi.your-domain, vous devez mettre guest.jitsi.your-domain. Le nom d'hôte de l’invité n'est utilisé qu'en interne par Jitsi Meet. Vous n'aurez jamais à le saisir dans un navigateur ou à créer un enregistrement DNS pour lui.

Ouvrez un autre fichier de configuration à l'adresse /etc/jitsi/meet/your_domain-config.js avec un éditeur de texte :

  • sudo nano /etc/jitsi/meet/your_domain-config.js

Modifiez cette ligne :

/etc/jitsi/meet/your_domain-config.js
...
        // anonymousdomain: 'guest.example.com',
...

pour obtenir ce qui suit :

/etc/jitsi/meet/your_domain-config.js
...
        anonymousdomain: 'guest.your_domain',
...

Encore une fois, en utilisant le nom d'hôte guest.your_domainque vous avez utilisé précédemment, cette configuration indique à Jitsi Meet quel nom d'hôte interne utiliser pour les invités non authentifiés. 

Ensuite, ouvrez /etc/jitsi/jicofo/sip-communicator.properties: 

  • sudo nano /etc/jitsi/jicofo/sip-communicator.properties

Et ajoutez la ligne suivante pour compléter les changements de configuration :

/etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.auth.URL=XMPP:your_domain

Cette configuration dirige l'un des processus Jitsi Meet vers le serveur local qui effectue l'authentification de l'utilisateur qui est maintenant requise.

Votre instance Jitsi Meet est maintenant configurée de manière à ce que seuls les utilisateurs enregistrés puissent créer des salles de conférence. Après la création d'une salle de conférence, n'importe qui peut la rejoindre sans avoir besoin d'être un utilisateur enregistré. Ils n'auront besoin que de l'adresse unique de la salle de conférence et d'un mot de passe facultatif défini par le créateur de la salle.

Maintenant que Jitsi Meet est configuré pour exiger des utilisateurs authentifiés pour la création de salles, vous devez enregistrer ces utilisateurs et leurs mots de passe. Vous utiliserez l'utilitaire prosodyctl pour le faire.

Exécutez la commande suivante pour ajouter un utilisateur à votre serveur :

  • sudo prosodyctl register user your_domain password

L'utilisateur que vous ajoutez ici n'est pas un utilisateur du système. Ils ne pourront que créer une salle de conférence et ne pourront pas se connecter à votre serveur via SSH.

Enfin, redémarrez les processus Jitsi Meet et Nginx pour charger la nouvelle configuration :

  • sudo systemctl restart prosody.service
  • sudo systemctl restart jicofo.service
  • sudo systemctl restart jitsi-videobridge2.service
  • sudo systemctl restart nginx

Désormais, lors de la création d'une salle de conférence, l'instance Jitsi Meet demandera un nom d'utilisateur et un mot de passe par le biais d'une boîte de dialogue.

Image montrant la boîte du nom d'utilisateur et du mot de passe Jitsi

Votre serveur Jitsi Meet est maintenant installé et configuré de manière sécurisée.

Conclusion

Dans cet article, vous avez déployé un serveur Jitsi Meet que vous pouvez utiliser pour héberger des salles de visioconférence sécurisées et privées. Vous pouvez développer votre instance Jitsi Meet en suivant les instructions du Wiki Jitsi Meet.

0 Comments

Creative Commons License