Jitsi est un ensemble de logiciels open-source et multiplateformes permettant de mettre en oeuvre simplement un serveur de vidéo-conférence. Jitsi est également capable de partager l'écran d'un participant pour qu'il soit visible de tous. Un système de messagerie instantanée vient compléter la panoplie.
Une fois n'est pas coutume, j'ai choisi d'utiliser une distribution Debian pour cet article.
En effet, après de nombreuses tentatives d'installation de la dernière version de Jitsi sur un serveur CentOS 8, aussi bien en bare metal qu'avec Docker, j'ai choisi de partir sur la distribution officielle de Jitsi qui est Debian.
Si, comme moi, vous n'êtes pas familier de l'installation d'un serveur Debian, je vous invite à vous référer à l'article qui traite de l'Installation d'un VPS Debian 9 (stretch) chez mon hébergeur habituel (OVH).
Nous allons suivre ensemble les étapes du guide d'installation rapide de Jisti Meet dont l'original peut être consulté à l'adresse suivante : Jitsi Meet quick install
Vérifications préalables
Avant de procéder à l'installation proprement dite, vous devez vous assurer que le FQDN (Fully Qualified Domain Name), c'est à dire le nom complet de la machine avec le suffixe de domaine, est bien configuré dans les fichiers /etc/hostname et /etc/hosts.
Ajout du dépôt de Jitsi
su -c "echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list"
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
Ouverture des ports sur le pare-feu
Les ports suivants doivent être ouvert sur le pare-feu de la machine :
- 80 TCP
- 443 TCP
- 10000 UDP
Nous disposons sur notre serveur de ufw, nous allons donc passer les commandes suivantes :
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
Nous devons ensuite recharger les règles du pare-feu avec la commande :
sudo ufw reload
Vous pouvez vérifier que les règles ont bien été définies en tapant la commande :
sudo ufw status
La commande renvoi un résultat qui doit ressembler à celui-ci :
Status: active
To Action From
-- ------ ----
22/tcp LIMIT Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
10000/udp ALLOW Anywhere
22/tcp (v6) LIMIT Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
10000/udp (v6) ALLOW Anywhere (v6)
Installation de Jitsi Meet
L'installeur va regarder si Nginx ou Apache est présent (dans cet ordre). Si c'est le cas, il sera capable de configurer un virtualhost pour l'hébergement de Jitsi Meet. Dans le cas contraire, le script procédera à l'installation de Nginx. Si vous utilisez déjà Nginx sur le port 443 la configuration du server turn sera omise, car il en résulterai un conflit avec le port 443 configuré.
La commande suivante nous assure que apt supporte les dépôts en accès https :
sudo apt install apt-transport-https
Nous allons également mettre à jour apt après l'ajout du nouveau dépôt :
sudo apt update
Puis viens l'installation de Jitsi Meet proprement dite :
sudo apt -y install jitsi-meet
Au cours de l'installation, il vous sera demandé de renseigner le nom d'hôte de l'instance Jitsi Meet. Il s'agit d'entrer le même FQDN que vous avez préalablement renseigné dans les fichiers /etc/hostname et /etc/hosts. Bien entendu, pour que votre installation fonctionne, il faudra que ce hostname puisse être résolu par un DNS.
Si vous votre hostname n'est pas connu de votre DNS, vous pouvez entrer une adresse IP à la place.
La question qui vous est posée ensuite concerne le certificat SSL.
Nous allons utiliser un certificat Let's Encrypt, nous devons donc choisir la première option qui est : Generate a new self-signed certificate (You will later get a chance to obtain a Let's Encrypt certificate).
Génération d'un certificat Let's Encrypt
L'utilisation d'un certificat valide (comme celui que nous allons obtenir de Let's Encrypt) est indispensable pour faire fonctionner l'application mobile. Il sera impossible de se connecter via l'application mobile à un serveur disposant d'un certificat auto-signé.
A l'heure où j'écrit cet article, il y a un bug dans le script de création du certificat Let's Encrypt.
Il y a donc lieu d'effectuer une action de contournement en saisissant les commandes suivantes :
sudo mkdir -p /etc/letsencrypt/renewal-hooks/deploy/
sudo touch /etc/letsencrypt/renewal-hooks/deploy/
0000-coturn-certbot-deploy.sh
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/
0000-coturn-certbot-deploy.sh
Une fois l'installation terminée, vous pouvez lancer la commande suivante pour obtenir un certificat SSL Let's Encrypt.
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
Après avoir renseigné une adresse email valide, la génération du certificat peut commencer.
Let's Encrypt API V2
A compter du 1er juin 2020, Let's Encrypt rend obligatoire l'usage de leur API ACME en version 2.
Afin d'assurer le bon renouvellement de notre certificat, nous devons donc modifier le script qui s'execute chaque semaine et dont le rôle est de s'assurer de la validité du certificat.
Pour cela, il faut éditer le fichier /etc/cron.weekly/letsencrypt-renew et ajouter l'option --server suivie de l'url permettant d'accéder à cette API ACME V2.
Le fichier devra donc ressembler à çà :
#!/bin/bash
/usr/local/sbin/certbot-auto renew --server https://acme-v02.api.letsencrypt.org/directory >> /var/log/le-renew.log
service nginx reload