Outils pour utilisateurs

Outils du site


configuration:visio_conference_avec_jitsi

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

Architecture et configuration du service de visio-conférence chez ChaTours

Architecture logique

Le service comprend 4 composants :

  • Un service XMPP
  • Un service TURN et STUN
  • Un service JVB (Jitsi Video Bridge)
  • Un service Jifoco (Jitsi Conference Focus) : Documentation
  • Les navigateurs web des internautes qui sont clients HTTP

Les services XMPP, JVB et Jifoco sont packagés ensemble sous Jitsi Meet pour Debian et Ubuntu.

Dépendances :

  • XMPP n'a pas de dépendances à prendre en compte
  • TURN et STUN n'ont pas de dépendances à prendre en compte.
  • JVB dépend de
  • Jifoco dépend de XMPP car il crée des salons de discussion
  • Les navigateurs web dépendent d'un serveur http embarqué par Jifoco, d'un serveur turn embarqué par coturn et des flux WebRTC entre navigateurs web via du js poussé coté client par Jifoco

Architecture technique

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.

Ports applicatifs

  • STUN :
    • 3478 (UDP et TCP)
    • 5349 (UDP et TCP) pour prise en charge tls (optionnel : coturn sait reconnaitre automatiquement si la communication est chiffrée sur tls ou non)
    • La plage de ports 49152-65535 (UDP) pour les endpoint
  • XMPP :
    • Port utilisé par Jicofo : 5222 (TCP) et 5347 (TCP)
    • JVB utilise aussi 5347 (TCP)
    • 5280
  • HTTPS :
    • Utilisé par le navigateur de l'internaute : 443 (TCP)
    • Utilisé par le navigateur de l'internaute : 4443 (TCP)
  • ICE (Interactive Connectivity Establishment protocol):
    • Utilisé par le navigateur de l'internaute pour discuter avec Videobridge en parlant ICE : 10000 (UDP)

Matériel

Un serveur dédié avec les caractéristiques suivantes :

  • Processeur : 1x Intel® Xeon® E3-1230v6 4c/8t 3.5GHz
  • Mémoires Vives : 16 Go DDR4
  • Disques : 1x 512 Go SSD

Système d'exploitation : Ubuntu Server 18.04

Prérequis à la configuration

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 ;)

Installer quelques composants de sécurité et de supervision

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.

Réglage du pare feu

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.

Préparer les enregistrements DNS

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.

Installation de Coturn

Ajout du dépot et téléchargement du package

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

Configuration

On s'inspirera de cette configuration officielle : https://github.com/coturn/coturn/wiki/CoturnConfig

Ajout d'utilisateurs

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}

Configuration

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.

Installation de Jitsi Meet

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.

Installation

Ajouter le nom du service dans /etc/hosts

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 les dépôts, télécharger les paquets et installer

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

Installer un certificat let's encrypt

sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Configurer les composants logiciels

Jifoco

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

VideoBridge

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

Jitsi Meet

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' }
        ],

Prosody

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 :

  • L'activation ou non de l'authentification (par défaut: désactivée)
  • Les certificats de chiffrement pour les échanges avec le protocole XMPP over SSL
  • Les modules activés (bosh, pubsub et ping)
  • Les options de chiffrement entre client et serveur (c2s) (non obligatoire par défaut)
  • Le paramétrage de l'authentification pour le composant XMPP spécifique à Jitsi-videobridge

Redirection du port 80

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
configuration/visio_conference_avec_jitsi.txt · Dernière modification: 2020/05/23 14:57 (modification externe)