19
0
Fork 0
wiki/HowtoJitsi.md

179 lines
8.0 KiB
Markdown
Raw Permalink Normal View History

---
title: Howto Jitsi
category: Communication
...
2023-06-27 11:57:44 +02:00
- Documentation : [https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart)
- Code : [https://github.com/jitsi/jitsi-meet](https://github.com/jitsi/jitsi-meet)
- Licence : [Apache License 2.0](https://github.com/jitsi/jitsi-meet/blob/master/LICENSE)
- Language : Java, Javascript et Lua (Prosody)
- Rôle Ansible : (à venir)
2023-06-27 11:57:44 +02:00
**Jitsi Meet** est une application de visionconférence riche en fonctionnalités et compatible avec les principaux navigateurs Web. Lorsqu'il n'y a que deux participants dans une conférence, la communication audio-vidéo se fait en pair-à-pair via WebRTC. Dès qu'il y a un troisième participant, on bascule en mode client-serveur.
## Installation
2020-05-02 09:47:27 +02:00
### Pré-requis
Il est important que `/tmp` et `/usr/share/jitsi` soient en sur des partitions montées en `read-write` et en `exec`.
2023-06-27 11:57:44 +02:00
Si `/tmp` n'est pas "exec", l'audio/video ne marchera pas.
2023-01-08 23:33:27 +01:00
Si `/usr/share/jitsi` n'est pas accessible en écriture, jicofo se plaindra de ne pas pouvoir acquérir de lock.
2020-05-02 09:47:27 +02:00
2023-06-27 11:57:44 +02:00
### Requis
2023-06-27 11:57:44 +02:00
Un nom de domaine configuré sur l'adresse IP de la machine qui hébergera les composants serveur de Jitsi Meet.
2023-09-28 18:03:32 +02:00
L'ouverture dans le pare-feu du serveur des ports `TCP/443` et `UDP/10000`.
2023-06-27 11:57:44 +02:00
### Paquets Debian
2023-06-27 12:06:29 +02:00
Nous installons Jitsi Meet depuis les paquets Debian officiels (branch stable) sur un serveur Debian 11 (Bullseye).
2023-06-27 11:57:44 +02:00
Les principaux composants de Jitsi Meet sont :
* [Meet](https://github.com/jitsi/jitsi-meet) : application Javascript chargée côté client dans le navigateur ou l'appli mobile des participants
* [Jicofo](https://github.com/jitsi/jicofo) : JItsi COnference FOcus, gère notamment les sessions Jingle (extension média de XMPP) des participants (Java)
* [Videobridge ou JVB](https://github.com/jitsi/jitsi-videobridge) : routeur audio-vidéo compatible WebRTC (Java)
* [Prosody](https://prosody.im/) : serveur de messagerie instantanée compatible XMPP (Lua)
* Nginx ou Apache : serveur web et proxy
2023-06-27 12:13:04 +02:00
Pour obtenir ces composants et leurs dépendances, il faut ajouter le dépôt de Jitsi (et sa clé gpg) aux sources de apt :
~~~
2023-01-08 23:33:27 +01:00
# curl https://download.jitsi.org/jitsi-key.gpg.key | gpg --dearmor > /etc/apt/keyrings/jitsi.gpg
# chmod 644 /etc/apt/keyrings/jitsi.gpg
# echo 'deb [signed-by=/etc/apt/keyrings/jitsi.gpg] https://download.jitsi.org stable/' | tee /etc/apt/sources.list.d/jitsi.list > /dev/null
# chmod 644 /etc/apt/sources.list.d/jitsi.list
# curl https://prosody.im/files/prosody-debian-packages.key | gpg --dearmor > /etc/apt/keyrings/prosody.gpg
# chmod 644 /etc/apt/keyrings/prosody.gpg
# echo 'deb [signed-by=/etc/apt/keyrings/prosody.gpg] http://packages.prosody.im/debian $(lsb_release -sc) main' | tee /etc/apt/sources.list.d/prosody.list > /dev/null
# chmod 644 /etc/apt/sources.list.d/prosody.list
~~~
2023-06-27 11:57:44 +02:00
Ensuite, recharger la liste des dépôts du système et installer le paquet `apt-transport-https`.
~~~
2023-01-08 23:33:27 +01:00
# apt update
2023-06-27 11:57:44 +02:00
# apt install apt-transport-https
~~~
2023-06-27 12:06:29 +02:00
Lors de l'installation du paquet `jitsi-meet`, celui-ci vérifie si un serveur web, Apache ou Nginx est présent et configurera un vhost.
2023-01-08 23:33:27 +01:00
Si aucun serveur web n'est présent sur la machine, il installera et configurera Nginx.
2022-04-12 16:06:38 +02:00
~~~
2023-01-08 23:33:27 +01:00
# apt install jitsi-meet
~~~
2023-06-27 11:57:44 +02:00
Suite à l'installation, on peut vérifier que les principaux services systemd sont fonctionnels comme ceci :
2020-03-13 14:20:08 +01:00
~~~
2023-01-08 23:33:27 +01:00
# systemctl status jitsi-videobridge2.service
● jitsi-videobridge2.service - Jitsi Videobridge
Loaded: loaded (/lib/systemd/system/jitsi-videobridge2.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2023-01-08 22:55:09 CET; 27min ago
Main PID: 7052 (java)
Tasks: 85 (limit: 65000)
Memory: 453.6M
CPU: 49.299s
CGroup: /system.slice/jitsi-videobridge2.service
└─7052 java -Xmx3072m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Djdk.tls.ephemeralDHKeySize=2048 -Dconfig.file=/etc/jitsi/videobridge/jvb.conf -Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jit>
2020-03-13 14:20:08 +01:00
2023-01-08 23:33:27 +01:00
Jan 08 22:55:09 jitsi01 systemd[1]: Starting Jitsi Videobridge...
Jan 08 22:55:09 jitsi01 systemd[1]: Started Jitsi Videobridge.
2020-03-13 14:20:08 +01:00
~~~
2023-06-27 11:57:44 +02:00
Même chose pour `jicofo.service`, `prosody.service` et `nginx.service`.
2020-03-13 14:20:08 +01:00
### Générer un certificat SSL Let's Encrypt
2023-01-08 23:33:27 +01:00
**Il faut bien vérifier que le nom de domaine configurer pour Jitsi pointe bien vers le serveur au niveau des DNS.**
À l'installation initiale, Jitsi va proposer de créer un certificat Let's Encrypt pour le domaine choisi, mais il est aussi possible de le faire plus tard.
2023-06-27 11:57:44 +02:00
Si on choisi de le faire plus tard, on peut exécuter un script fournit par Jitsi :
~~~
# /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
~~~
2023-01-08 23:33:27 +01:00
Par défaut Jitsi utilise [acme.sh](/HowtoAcme.sh) pour la gestion des certificats. Le renouvellement est configuré dans la crontab de `root`.
2023-06-27 11:57:44 +02:00
## Mises à jour
La mise à jour des paquets se fait de la manière habituelle :
~~~
# apt update
# apt list --upgradable
# apt upgrade
~~~
IMPORTANT : avant de se lancer dans la mise à jour des paquets, il est une bonne pratique de lire les [notes de version](https://github.com/jitsi/jitsi-meet/releases).
## Configuration
2023-10-19 21:50:27 +02:00
### Tableau des principaux fichiers
2023-06-27 11:57:44 +02:00
|Fichier(s) |Chemin |
|--------------------|----------------------------------------------------|
|Conf. Meet | /etc/jitsi/meet/meet.exemple.org-config.js |
|SSL pour Meet | /etc/jitsi/meet/meet.exemple.org.crt et .key |
|Conf. Jicofo | /etc/jiti/jicofo/jicofo.conf |
|Conf. Videobridge | /etc/jitsi/videobridge/jvb.conf |
|Conf. Videobridge | /etc/jitsi/videobridge/sip-communicator.properties |
|Conf. Prosody | /etc/prosody/conf.d/meet.exemple.org.cfg.lua |
|SSL pour Prosody | /etc/prosody/certs/* |
|Conf. Nginx (vhost) | /etc/nginx/sites-enabled/meet.exemple.org.conf |
2020-05-07 11:56:59 +02:00
2023-10-19 21:50:27 +02:00
### Serveur TURN (coturn) sur le port TCP/443
Le pare-feu de plusieurs entreprises empêchera les participants de communiquer en sortie sur le port `UDP/10000`.
Une [solution de rechange](https://jitsi.github.io/handbook/docs/devops-guide/turn#use-turn-server-on-port-443) peut être configurée pour remédier à ce problème.
Cette solution de rechange via `TCP/443` et en passant par nginx, coturn et un nom de domaine secondaire (exemple : `turn.meet.exemple.org`) est moins performante que la communication directe via `UDP/10000` et n'a pas vocation à la remplacer.
### Serveur STUN (coturn) sur le port UDP/3478
La configuration initiale de Jitsi Meet fait appel à un serveur STUN externe (`meet-jit-si-turnrelay.jitsi.net`) qui écoute sur le port `UDP/443` (oui `UDP`, pas `TCP`).
2023-10-19 21:53:21 +02:00
Si on désire plutôt utiliser son propre serveur, il est possible de le faire avec coturn, qui est déjà installé par défaut et écoute sur le port `UDP/3478`.
2023-10-19 21:50:27 +02:00
2023-06-27 12:00:22 +02:00
## Utilisation
Lancer un navigateur web (ou l'appli mobile ou de bureau) et entrer le nom de domaine, ou l'adresse ip, que l'on a renseigné dans la configuration de Jitsi.
Par défaut Jitsi génère un certificat auto-signé, il faut accepter celui-ci.
2023-06-27 11:57:44 +02:00
## Maintenance
2023-06-27 12:00:22 +02:00
### Conférences actives
Il est possible d'avoir un aperçu des conférences actives grâce à la commande suivante :
~~~
# tail -f /var/log/jitsi/jvb.log | grep "conf_name="
~~~
2023-06-27 11:57:44 +02:00
## FAQ
### API applis mobiles et bureau
Si on désire que l'instance Jitsi soit fonctionnelle avec l'application mobile ou de bureau (Electron), il faut autoriser l'accès à l'API, ce qui est le cas dans le vhost généré automatiquement lors de l'installation. Si vous avez vhost nginx personnalisé, vous devrez vous assurer d'avoir ces lignes :
2020-05-07 11:56:59 +02:00
~~~
location /external_api.js {
alias /usr/share/jitsi-meet/libs/external_api.min.js;
}
~~~
2023-06-27 11:57:44 +02:00
### Entêtes bloquantes
Il faut aussi vérifié que les Headers suivants ne soit pas activé dans nginx, car cela bloquera l'accès à l'instance par l'application :
2020-05-07 11:56:59 +02:00
~~~
Content-Security-Policy "frame-ancestors 'none'";
X-Frame-Options "DENY";
~~~