diff --git a/HowtoJitsi.md b/HowtoJitsi.md index 8f7a347f..5ed65611 100644 --- a/HowtoJitsi.md +++ b/HowtoJitsi.md @@ -3,9 +3,13 @@ title: Howto Jitsi category: Communication ... -* +- 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) -Jitsi Meet is an open-source (Apache) WebRTC JavaScript application that uses Jitsi Videobridge to provide high quality, secure and scalable video conferences. +**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 @@ -13,12 +17,28 @@ Jitsi Meet is an open-source (Apache) WebRTC JavaScript application that uses Ji Il est important que `/tmp` et `/usr/share/jitsi` soient en sur des partitions montées en `read-write` et en `exec`. -Si `/tmp` n'est pas "exec", l'audio/video ne marchera pas. +Si `/tmp` n'est pas "exec", l'audio/video ne marchera pas. Si `/usr/share/jitsi` n'est pas accessible en écriture, jicofo se plaindra de ne pas pouvoir acquérir de lock. -### Installation +### Requis -* Ajouter le dépôt de Jitsi dans apt ainsi que la clé gpg du dépôt : +Un nom de domaine configuré sur l'adresse IP de la machine qui hébergera les composants serveur de Jitsi Meet. + +L'ouverture dans le pare-feu du serveur des ports `22 TCP`, `80 TCP`, `443 TCP`, `10000 UDP`, `3478 UDP` et `5349 TCP`. + +### Paquets Debian + +Nous installation Jitsi Meet depuis les paquets Debian officiels (branch stable) sur un serveur Debian 11 (Bullseye). + +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 + +Pour obtenir ces composants et leurs dépendances, il faut jouter le dépôt de Jitsi (et sa clé gpg) aux sources de apt : ~~~ # curl https://download.jitsi.org/jitsi-key.gpg.key | gpg --dearmor > /etc/apt/keyrings/jitsi.gpg @@ -33,10 +53,11 @@ Si `/usr/share/jitsi` n'est pas accessible en écriture, jicofo se plaindra de n ~~~ -* Recharger la liste des dépôts du système et installation du paquet apt-transport-https +Ensuite, recharger la liste des dépôts du système et installer le paquet `apt-transport-https`. ~~~ # apt update +# apt install apt-transport-https ~~~ * Installer le paquet `jitsi-meet` @@ -48,7 +69,7 @@ Si aucun serveur web n'est présent sur la machine, il installera et configurera # apt install jitsi-meet ~~~ -Le daemon *jitsi-videobridge2* se contrôle avec une unité systemd : +Suite à l'installation, on peut vérifier que les principaux services systemd sont fonctionnels comme ceci : ~~~ # systemctl status jitsi-videobridge2.service @@ -66,6 +87,7 @@ Jan 08 22:55:09 jitsi01 systemd[1]: Starting Jitsi Videobridge... Jan 08 22:55:09 jitsi01 systemd[1]: Started Jitsi Videobridge. ~~~ +Même chose pour `jicofo.service`, `prosody.service` et `nginx.service`. ### Générer un certificat SSL Let's Encrypt @@ -73,7 +95,7 @@ Jan 08 22:55:09 jitsi01 systemd[1]: Started Jitsi Videobridge. À 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. -Le paquet Jitsi incorpore un script qui permet de générer un certificat SSL Let's Encrypt, il faut exécuter le script suivant : +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 @@ -81,9 +103,37 @@ Le paquet Jitsi incorpore un script qui permet de générer un certificat SSL Le Par défaut Jitsi utilise [acme.sh](/HowtoAcme.sh) pour la gestion des certificats. Le renouvellement est configuré dans la crontab de `root`. -### Autorisé l'accès à l'API pour l'utilisation de l'application Jitsi desktop : +## Mises à jour -Si on désire que l'instance Jitsi soit fonctionnelle avec l'application Jitsi desktop, application Electron, il faut autoriser l'accès à l'API, exemple de configuration dans un vhost nginx : +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 + +|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 | + +## Maintenance + +## 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 : ~~~ location /external_api.js { @@ -91,7 +141,9 @@ location /external_api.js { } ~~~ -Il faut aussi vérifié que les Headers suivants ne soit pas activé dans nginx, car cela bloque l'accès à l'instance par l'application : +### 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 : ~~~ Content-Security-Policy "frame-ancestors 'none'"; @@ -111,3 +163,4 @@ Il est possible d'avoir un aperçu des conférences actives grâce à la command ~~~ # tail -f /var/log/jitsi/jvb.log | grep "conf_name=" ~~~ +