Pour commencer, il existe tout un tas d'explications dans la base de connaissance du collectif chatons.org : https://wiki.chatons.org/doku.php/la_visio-conference_avec_jitsi
Nous détaillerons ici des éléments d'architecture et de configuration pour compléter la documentation d'installation proposée par Jitsi
Ce document reprend en partie la page de la configuration de Framasoft
Le service comprend 4 composants :
Les services XMPP, JVB et Jifoco sont packagés ensemble sous Jitsi Meet pour Debian et Ubuntu.
Dépendances :
Il faudra donc prévoir différentes machines afin de partager les demandes en ressources des différents composants logiques.
Chez Chatours, on a tout mis sur la même machine car on est tout petits. La machine qui sert au service de vidéo-conférence pendant la période de confinement a été offerte gracieusement par l'entreprise Castle-IT située à Larcay dans le 37 (merci).
On séparera tout de même logiquement les serveurs à l'aide des enregistrements du fichier de zone DNS même si physiquement c'est le même matériel.
Un serveur dédié avec les caractéristiques suivantes :
Système d'exploitation : Ubuntu Server 18.04
Si vous voulez éviter de faire une installation à l'arrache, il vaut mieux chercher à comprendre quels sont ces pré-requis. Ceci a un impact sur la qualité du service que vous rendrez. Il est aussi question de respect de la vie privée de vos utilisateurs car le service STUN et TURN fourni par défaut dans la configuration de Jitsi Meet est chez Google. Le service TURN étant un serveur de relais des paquets de VoIP entre les navigateurs quand un des NAT des conférencier·e·s n'est pas très gentil, ca risque de ne pas plaire à tout le monde :)
Il y a aussi et peut-être une contrainte réglementaire et de sécurité. Le serveur TURN peut permettre à une ou un méchant internaute de se cacher. En utilisant ces serveurs, vous déléguez (ou pas) votre responsabilité d'hébergeur à Google. En cas de réquisition judiciaire, on pourrait sortir les paquets de pop-corns ;)
sudo apt install etckeeper fail2ban
Si possible configurer etckeeper de façon à ce qu'il effectue un push automatiquement vers un dépôt distant de façon à identifier les changements et permettre de restaurer une configuration en cas de gros pépins.
Il faut au moins ouvrir les ports 443 et 4443 en TCP et depuis l'Internet vers la machine et idem pour 10000 en UDP.
En fonction de l'installation si vous utilisez plusieurs machines, il faudra jouer avec les ports applicatifs cités plus haut.
On nommera d'abord le serveur dont le nom sera associé à un enregistrement de type A et de type AAAA. Ensuite on ajoutera 2 enregistrements de type CNAME qui associent les noms de service au nom du serveur.
tombili 10800 IN A 185.88.196.128 visioconf 10800 IN CNAME tombili.chatours.org. turn 10800 IN CNAME tombili.chatours.org. stun 10800 IN CNAME tombili.chatours.org. callcontrol.visioconf 10800 IN CNAME tombili.chatours.org. conference.visioconf 10800 IN CNAME tombili.chatours.org. focus.visioconf 10800 IN CNAME tombili.chatours.org. jirecon.visioconf 10800 IN CNAME tombili.chatours.org.
Le dépôt Ubuntu 18.04 pour coturn est dans le dépôt “universe” https://ubuntu.pkgs.org/18.04/ubuntu-updates-universe-amd64/coturn_4.5.0.7-1ubuntu2.18.04.1_amd64.deb.html
Donc il faudra bien s'assurer d'avoir les sources main restricted et universe avec leurs dépots update et security respectifs.
sudo apt install coturn
On s'inspirera de cette configuration officielle : https://github.com/coturn/coturn/wiki/CoturnConfig
L'ajout d'utilisateurs va permettre de désactiver la connexion sans authentification. Il y a d'abord besoin d'ajouter un utilisateur administrateur à l'aide de la commande turnadmin :
sudo turnadmin -A -u ${user} -r ${domaine} -p ${password}
Ensuite un utilisateur à long terme pour notre service de visio:
sudo turnadmin -a -u ${user} -r ${domaine} -p ${password}
Pour vérifier :
# liste les comptes administrateurs sudo turnadmin -L -u ${user} -r ${domaine} # liste les comptes utilisateurs sudo turnadmin -l -u ${user} -r ${domaine}
On va modifier quelques configurations par défaut :
Modifier les noms de fichiers de logs qui sont tout moches sous /etc/turnserver.conf:
log-file=/var/log/turn.log
Activer turn en retirant le commentaire de cette ligne sous /etc/default/coturn
TURNSERVER_ENABLED=1
Puis redémarrer coturn
sudo service coturn restart
Edit du 30/03/2020 par marctapages : modification du fichier /etc/turnserver.conf selon la doc https://meetrix.io/blog/webrtc/coturn/installation.html
realm=coturn.meetrix.io fingerprint listening-ip=0.0.0.0 external-ip=<EXTERNAL_IP>/<INTERNAL_IP> listening-port=3478 min-port=10000 max-port=20000 verbose user=<YOUR_USERNAME>:<YOUR_PASSWORD> lt-cred-mech
Ca ne résoud pas le problème d'appel du port UDP 10000 sur l'adresse privé du serveur, mais Jitsi continue de fonctionner.
Là, on se servira de la documentation officielle “quick install” https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md
A noter aussi que sous Ubuntu, le paquet Jitsi-meet dépend de paquets dans le dépôt universe donc il faut l'avoir ajouté si vous ne l'avez pas fait pour coturn.
C'est une manipulation importante pour permettre l'établissement de conexions SCTP https://github.com/jitsi/jitsi-meet/issues/2780, il faut absolument mettre le nom de domaine complet du service au niveau de l'IP de la boucle locale :
127.0.0.1 localhost tombili.chatours.org visioconf.chatours.org
Ajouter APT sur https.
sudo apt install apt-transport-https
Ajouter le dépôt et sa signature.
sudo su 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 | apt-key add - exit
Installer Jitsi
sudo apt update sudo apt install jitsi-meet
Lorsque l'installateur le demande, renseigner le nom d'hôte.
visioconf.chatours.org
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
Les fichiers sont sous /etc/jitsi/jicofo/
Il n'y a rien à changer pour /etc/jitsi/jicofo/config. On peut changer le niveau de logs de Jicofo (par défaut à INFO) dans /etc/jitsi/jicofo/logging.properties
sudo vim /etc/jitsi/videobridge/sip-communicator.properties
org.jitsi.videobridge.NAT_HARVESTER_LOCAL_ADDRESS=${IP réseau local} org.jitsi.videobridge.NAT_HARVESTER_PUBLIC_ADDRESS=185.88.196.128
On pourra aller voir aussi le niveau de log de VideoBridge ici qui est plutôt verbeux par défaut pour xmpp (FINE) :
sudo vim /etc/jitsi/videobridge/logging.properties
Modifier la valeurs suivantes :
org.jitsi.videobridge.xmpp.ComponentImpl.level=WARNING
Il y a aussi un fichier config qui est sensé être bien généré lors de l'installation.
Ensuite redémarrer le service jitsi-videobridge :
sudo service jitsi-videobridge restart
On va dire à Jitsi Meet d'utiliser notre serveur stun plutôt que ceux de Google :
sudo vim /etc/jitsi/meet/visioconf.chatours.org-config.js
stunServers: [ //{ urls: 'stun:stun.l.google.com:19302' }, //{ urls: 'stun:stun1.l.google.com:19302' }, { urls: 'stun:chaturne:${password}@stun.chatours.org' } ],
le fichier de configuration se trouve sous /etc/prosody/conf.avail/[NomInstance].cfg.lua
La configuration de base avec le package Debian (ou Ubuntu server 18.04 LTS) configure automatiquement le serveur XMPP. Il n'y a pas forcément besoin de modifier la configuration de base.
Elle concerne :
Sous Chrome, la réécriture de l'url http vers https n'est pas faite automatiquement donc j'ai rajouté un nginx avec redirection du port 80 :
sudo apt install nginx
Puis rajouter le fichier /etc/nginx/sites-available/visioconf.chatours.org.conf :
server { listen 80; server_name visioconf.chatours.org; return 301 https://visioconf.chatours.org$request_uri; }
Ainsi que le lien symbolique et le rechargement de nginx
sudo ln -s /etc/nginx/sites-available/visioconf.chatours.org /etc/nginx/sites-enabled/visioconf.chatours.org sudo systemctl reload nginx