Voici un rapide tutoriel pour mettre en oeuvre la solution Jitsi Meet sur votre serveur Debian.
La doc officielle est ici, https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md

Installation des prérequis
D’abord, on s’assure que notre Debian est à jour :
apt update apt full-upgrade
On installe GNUPG qui n’est pas installé de base chez Debian :
apt-get install wget curl gnupg2 apt-transport-https -y
Installation de Jitsi Meet
On ajoute la clé du dépôt Jitsi :
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
Puis on ajoute les sources du dépôt Jitsi :
echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
On met à jour la liste des logiciels :
apt update
Et on installe Jitsi Meet :
apt install jitsi-meet
Durant l’installation, on nous demande le nom de domaine, ici dans mon exemple, c’est hébergé avec le nom de domaine visio.linuxtricks.fr :
┌────────────┤ Configuration de jitsi-videobridge ├─────────────┐
│ The value for the hostname that is set in Jitsi Videobridge │
│ installation. │
│ │
│ The hostname of the current installation: │
│ │
│ mon.domaine.com_________________________________________ │
│ │
│ <Ok> │
│ │
└───────────────────────────────────────────────────────────────┘
Ensuite, vient la question du certificat SSL.
┌────────────────┤ Configuration de jitsi-meet-web-config ├─────────────────┐
│ Jitsi Meet is best to be set up with an SSL certificate. Having no │
│ certificate, a self-signed one will be generated. By choosing │
│ self-signed you will later have a chance to install Let’s Encrypt │
│ certificates. Having a certificate signed by a recognised CA, it can be │
│ uploaded on the server and point its location. The default filenames │
│ will be /etc/ssl/--domain.name--.key for the key and │
│ /etc/ssl/--domain.name--.crt for the certificate. │
│ │
│ SSL certificate for the Jitsi Meet instance │
│ │
│ Generate a new self-signed certificate (You will later ... │
│ I want to use my own certificate │
│ │
│ │
│ <Ok> │
│ │
└───────────────────────────────────────────────────────────────────────────┘
On va générer un nouveau certificat auto-signé. Après, on aura la possibilité d’utiliser un certificat Lets Encrypt via un outil livré avec Jitsi Meet.
On peut aussi choisir d’utiliser son propre certificat si on dispose déjà d’un certificat pour le domaine (wilcard) ou le sous domaine concerné.
Configuration Post Install
Pour le parefeu, si le serveur est protégé, veillez à ouvrir les ports suivants :
80 TCP=> Pour la vérification/le renouvellement du certificat SSL avec Let’s Encrypt. Obligatoire443 TCP=> Pour un accès général à Jitsi Meet. Obligatoire10000 UDP=> Pour les réunions audio/vidéo générales du réseau. Obligatoire22 TCP=> Pour accéder à votre serveur en utilisant SSH (modifiez le port en conséquence si ce n’est pas 22). Obligatoire3478 UDP=> Pour interroger le serveur stun (coturn, facultatif, doit êtreconfig.jsmodifié pour l’activer).5349 TCP=> Pour les communications vidéo/audio réseau de repli sur TCP (lorsque UDP est bloqué par exemple), desservies par coturn. Obligatoire
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 10000/udp sudo ufw allow 22/tcp sudo ufw allow 3478/udp sudo ufw allow 5349/tcp sudo ufw enable
Configurez le fichier hosts avec votre nom d’hôte :
nano /etc/hosts
127.0.0.1 localhost x.x.x.x mon.domaine.xyz
Pour un certicicat SSL lets encrypt, on peut exécuter le script interactif livré :
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
Pour un réseau NATé :
Il est nécessaire d’éditer ce fichier
nano /etc/jitsi/videobridge/sip-communicator.properties
Et d’y ajouter :
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=IPLAN org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=IPWAN
Tester
Pour tester, accéder directement à l’URL du serveur en HTTPS
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.
Procédure d’installation d’un certificat let’s encrypt via certbot :
apt-get install certbot python-certbot-nginx ou 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
Il est nécessaire au préalable de commenter la première ligne de votre fichier de configuration nginx (sinon la demande de certificat échouera).
nano /etc/nginx/sites-enabled/"Votre_nom_de_domaine".conf
Commentez cette ligne :
#server_names_hash_bucket_size 64;
Verrouiller la création de conférence
Par défaut, tout le monde peut créer des salles de conférence dans Jitsi Meet. Pour des raisons de sécurité, il est conseillé de configurer votre serveur Jitsi Meet pour autoriser uniquement les utilisateurs enregistrés à créer des salles de conférence.
Vous pouvez le configurer en éditant le fichier suivant :
nano /etc/prosody/conf.avail/meet.linuxbuz.com.cfg.lua
Modifiez cette ligne :
authentication = "anonymous"
pour obtenir ce qui suit :
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.
Ajoutez ensuite la ligne suivante à la fin du fichier :
VirtualHost "guest.mon.domaine.com"
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.
Enregistrez et fermez le fichier puis modifiez un autre fichier de configuration :
sudo nano /etc/jitsi/meet/your_domain-config.js
Décommentez et modifiez la ligne suivante :
anonymousdomain: 'guest.mon.domaine.com',
Encore une fois, en utilisant le nom d’hôte guest.mon.domaine.com que 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.
Créez une configuration SIP pour activer l’authentification :
nano /etc/jitsi/jicofo/sip-communicator.properties
Et ajoutez la ligne suivante pour compléter les changements de configuration :
org.jitsi.jicofo.auth.URL=XMPP:mon.domaine.com
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.
Exécutez la commande suivante pour ajouter un utilisateur à votre serveur :
sudo prosodyctl register user mon.domaine.com 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.
Modifiez ensuite le fichier de configuration de Jicofo.
sudo nano /etc/jitsi/jicofo/jicofo.conf
Ajoutez les lignes suivantes dans ce fichier.
# Jicofo HOCON configuration. See reference.conf in /usr/share/jicofo/jicofo.jar for
#available options, syntax, and default values.
jicofo {
xmpp: {
client: {
client-proxy: "focus.mon.domaine.xyz"
xmpp-domain: "mon.domaine.xyz"
domain: "auth.mon.domaine.xyz"
username: "focus"
password: "FsGjWJ2Y6Dd7Mggp"
}
trusted-domains: [ "recorder.visio.techtocraft.xyz" ]
}
bridge: {
brewery-jid: "JvbBrewery@internal.auth.visio.techtocraft.xyz"
}
authentication: {
enabled: true
type: XMPP
login-url: mon.domaine.xyz
}
}
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
Vous pouvez vérifier l’état de tous les services à l’aide de la commande suivante :
systemctl status prosody.service jicofo.service jitsi-videobridge2.service
Vous obtiendrez la sortie suivante :
● prosody.service - Prosody XMPP Server
Loaded: loaded (/lib/systemd/system/prosody.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-05-06 03:13:57 UTC; 12s ago
Docs: https://prosody.im/doc
Main PID: 9644 (lua5.2)
Tasks: 1 (limit: 4679)
Memory: 9.5M
CPU: 312ms
CGroup: /system.slice/prosody.service
└─9644 lua5.2 /usr/bin/prosody -F
May 06 03:13:57 debian11 systemd[1]: Started Prosody XMPP Server.
May 06 03:13:57 debian11 prosody[9644]: portmanager: Error binding encrypted port for https: No certificate present in SSL/TLS configuration >
May 06 03:13:57 debian11 prosody[9644]: portmanager: Error binding encrypted port for https: No certificate present in SSL/TLS configuration >
● jicofo.service - LSB: Jitsi conference Focus
Loaded: loaded (/etc/init.d/jicofo; generated)
Active: active (running) since Fri 2022-05-06 03:13:56 UTC; 12s ago
Docs: man:systemd-sysv-generator(8)
Process: 9617 ExecStart=/etc/init.d/jicofo start (code=exited, status=0/SUCCESS)
Tasks: 40 (limit: 4679)
Memory: 172.8M
CPU: 7.447s
CGroup: /system.slice/jicofo.service
└─9622 java -Xmx3072m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Djdk.tls.ephemeralDHKeySize=2048 -Dconfig.file=/etc>
May 06 03:13:56 debian11 systemd[1]: Starting LSB: Jitsi conference Focus...
May 06 03:13:56 debian11 jicofo[9617]: Starting jicofo: jicofo started.
May 06 03:13:56 debian11 systemd[1]: Started LSB: Jitsi conference Focus.
● jitsi-videobridge2.service - Jitsi Videobridge
Loaded: loaded (/lib/systemd/system/jitsi-videobridge2.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-05-06 03:13:57 UTC; 12s ago
Process: 9643 ExecStartPost=/bin/bash -c echo $MAINPID > /var/run/jitsi-videobridge/jitsi-videobridge.pid (code=exited, status=0/SUCCESS)
Main PID: 9642 (java)
Tasks: 51 (limit: 65000)
Memory: 203.5M
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.

Personnalisation de la page web Jitsi
Comme je l’ai dit, nous pouvons le modifier et le régler à notre convenance, on peut changer le fond, changer de couleur, le logo… et nous aurons donc notre site d’entreprise entièrement prêt! Je vous laisse ici une série d’indices si vous êtes intéressé:
- Changer le logo de Jitsi, remplacer le fichier: /usr / share / jitsi-meet / images / watermark.png
- Modifier le texte de couverture (rechercher et remplacer du texte): /usr / share / jitsi-meet / lang / main-es.json
- Changer toujours la langue en ES: /etc / jitsi / meet / FQDN_SITIO_JITSI-config.js et modifiez ‘defaultLanguage: ‘est’,
- Si nous voulons autoriser l’enregistrement des conversations, dans le fichier précédent, sans commentaire:
enregistrement local: {
activée: vrai,
format: «Ogg’
},
- Pour changer l’image d’arrière-plan: Dans la recherche /usr/share/jitsi-meet/css/all.css pour wel .welcome{image de fond:’ et mettre l’url(../images/FONDO.jpg)
- Pour changer la couleur du texte du titre: .en-tête. en-tête-texte-titre{Couleur:#XXXXXX;
- Pour changer la couleur du texte d’accueil: .header .header-text-description{afficher:hériter;Couleur:#XXXXXX;
- Pour changer la couleur du bouton: .bienvenue .welcome-page-button{largeur:51px;largeur min:hériter;la taille:35px;taille de police:14px;font-weight:hériter;Contexte:#XXXXXX;
- Changer la couleur du carré des dernières réunions: .bienvenue .header .tab-container{taille de police:16px;position:relatif;text-align:la gauche;min-hauteur:354px;largeur:710px;Contexte:#XXXX;
- Pour changer la couleur lorsque vous passez la souris sur la réunion sélectionnée dans la zone centrale: .item.with-click-handler:flotter{Couleur de fond:#XXXXXX}
- Pour changer la couleur du texte du nom de la réunion: .liste de réunions{taille de police:14px;Couleur:#XXXXXX
- Changer la couleur du texte de “Démarrer une réunion”: .entrée-chambre-conteneur{largeur:100%;rembourrage:0 8px 5px 0;text-align:la gauche;Couleur:#XXXXXX;
- Finalement, Dans /usr/share/jitsi-meet/interface_config.js, nous pouvons changer des choses comme l’URL vers laquelle cliquer si on clique dessus, quel nom par défaut, changez moi’ à cause de moi’ ou le nom de l’utilisateur par défaut défini lors de la saisie…
DEFAULT_REMOTE_DISPLAY_NAME: 'Sans nom', DEFAULT_LOCAL_DISPLAY_NAME: 'je', SHOW_JITSI_WATERMARK: vrai, JITSI_WATERMARK_LINK: « http://www.openservices.eus »,
Et par la voie, Si nous voulons changer le certificat au service Nginx afin qu’il ne nous donne pas d’erreurs d’accès et place notre certificat, Nous le ferons en éditant le fichier
/etc/nginx/sites-enabled/mon.domaine.xyz.conf
nous allons modifier les sections de ‘ssl_certificate’ y « ssl_certificate_key », où nous mettrons respectivement notre certificat et notre clé privée.
ssl_certificate /etc/letsencrypt/live/mon.domaine.xyz/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mon.domaine.xyz/privkey.pem; # managed by Certbot
