visio/README.md

6.3 KiB

Service VISIO

Service de visio-conférence du candidat chaton de Libre en communs.

Responsable: @human-geek

CPU : 1 (4 core) RAM : 4 Go

INSTALLATION

Généralités

La majorité des éléments d'installation et de configuration sont tirés de la documentation officielle :

https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart/

Sauf indication contraire les commandes sont executées avec les droits administrateurs. La documentation se concentre sur le service et laisse de coté les autres aspects de configurations de la machine.

Pré-requis

Afin de

apt update 
apt install gnupg2 nginx-full apt-transport-https

Àjout du dépot de jitsi-meet

curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null

Configuration Firewall

Afin de permettre à Jitsi de fonctionner correctement un certain nombre de port doivent être ouverts.

  • 80 TCP => Pour la gestion des certificat SSL. Requis
  • 443 TCP => Pour l'accès à l'interface de Jitsi Meet. Requis
  • 10000 UDP => Pour la majorité des flux réseau audio et vidéo. Requis
  • 3478 UDP => Pour interroger le serveur stun (coturn, optionnel, besoin de configurer le fichier config.js).
  • 5349 TCP => Pour les communication réseau audio et vidéo de secours via TCP (quand UDP est bloquée), fournis par coturn . Requis

Les commandes suivantes concerne UFW. C'est à adapter si vous utilisez un autre Firewall.

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 10000/udp
ufw allow 22/tcp
ufw allow 3478/udp
ufw allow 5349/tcp
ufw enable

Certificat TLS

L'installation du certificat TLS se fait via l'utilisation de certbot.

Afin d'éviter les soucis de cron notamment il est conseillé (contrairement à ce qu'indique la documentation officielle) de générer son propre certificat et ne pas laisser jitsi gérer le certificat.

TODO

Installation de Jitsi Meet

L'installation se fait via le paquet debian du dépot officiel de jitsi-meet. L'installation est à même de détecter le serveur web déjà installé.

apt install jitsi-meet

Configurations

Serveur web

/etc/nginx/sites-enabled/visio.chalec.org.conf

   include visio.chalec.org.conf;

Vidéobridge

Éditer le fichier /etc/jitsi/videobridge/sip-communicator.properties

#org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=XXX.XXX.XXX.XXX
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=80.67.179.96
#org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443
org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc
org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=localhost
org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.visio.chalec.org
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=XXXXXXXXXXXXXXXXXXX
org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.visio.chalec.org
org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=XXXXXX-XXXXXX-XXXXXXX-XXXXXXXXX

Statistiques

Éditer le fichier /etc/jitsi/videobridge/config et activer l'api rest :

JVB_OPTS="--apis=rest, "

Il est possible de tester l'api avec le script suivant :

curl http://localhost:8080/about/version
curl http://localhost:8080/colibri/conferences
curl  http://localhost:8080/colibri/stats
curl  http://localhost:8080/colibri/stats 2> /dev/null | jshon -e participants -u

Éléments d'interfaces

Configuration web

Afin de séparer au maximum la configuration fournis en amont et les éléments de personnalisations un fichier de configuration nginx spécifique au service est créé :

  • /etc/nginx/visio.chalec.org.conf
    set $custom_path /var/www/visio.chalec.org;

    location = /interface_config.js {
        alias $custom_path/interface_config.js;
    }

    location = /images/favicon.ico {
        alias $custom_path/images/visio.chalec.org.ico;
    }

    location = /images/watermark.svg {
        alias $custom_path/images/visio.chalec.org.svg;
    }

    location = /images/welcome-background.png {
        alias $custom_path/images/welcome-background.webp;
    }

    location = /static/recommendedBrowsers.html {
        alias $custom_path/static/recommendedBrowsers.html;
    }

    # StatoolInfos.
    include /etc/nginx/statoolinfos.conf;

Il permet de faire des alias et de remplacer les fichiers déclarés par défaut par les nôtres, le tout peut importe leurs noms. Il faut juste que la configuration nginx soit cohérente.

Racine de stockage

L'ensemble des fichiers (images, icônes, etc) sont créés dans le dossier /var/www/visio.chalec.org. À ce titre nous recréons l'arborescence de jitsi.

mkdir -p /var/www/visio.chalec.org/{images/statics}

Favicon, Watermark et fond d'accueil

Les différentes images sont à incorporer dans le dossier :

/var/www/visio.chalec.org/images

Dans notre configuration actuelle les éléments sont nommé comme suis :

  • visio.chalec.org.ico pour le favicon.
  • visio.chalec.org.svg pour le filigrame (watermark), il faut noter que le lien http est à configurer dans la partie javascript.
  • welcome-background.webp pour le fond d'écran d'accueil.

Javascript

Le fichiers javascript permet de configurer certaines informations, aussi nous en fesons une copie puis éditons les valeurs afin de faire correspondre à notre service.

cp /usr/share/jitsi-meet/interface_config.js /var/www/visio.chalec.org/

Une fois cela fait un certain nombre d'éléments sont à personnaliser

  APP_NAME: 'Visio Chalec',
  DEFAULT_LOGO_URL: 'images/watermark.svg',
  DISPLAY_WELCOME_FOOTER: false,
  DISPLAY_WELCOME_PAGE_ADDITIONAL_CARD: true,
  DISPLAY_WELCOME_PAGE_CONTENT: true,
  JITSI_WATERMARK_LINK: 'https://chalec.org',
  OPTIMAL_BROWSERS: [ 'chromium', 'firefox', 'nwjs', 'electron' ],
  PROVIDER_NAME: 'Jitsi et Chalec',

Redémarrer les services

Il est ensuite primordial de redémarrer le serveur web et jitsi.

service nginx restart; 
service jitsi-videobridge2 restart;
service jicofo restart;