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.js
modifiĂ© 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