Jitsi

De Reliable Brain

Généralités

JITSI est un serveur de visio-conférence libre et gratuit.

Les premiers essais n'ont pas été très conclusifs pour les raisons suivantes :

  • Ne fonctionne bien qu'avec Chrome et les applications Jitsi-Meet, mais aussi avec les applications basées sur Electron.
  • Ne fonctionne pas avec Firefox hélas
  • Je n'avais pas employé le FQDN pour la création du serveur... En reprenant tout, c'est passé comme une lettre à la poste.

Nouveautés

Il existe désormais un site qui reprend toutes les informations : https://jitsi.github.io/handbook/

Installation

Ubuntu Server 20.04

  • Prérequis :
apt install curl

Ubuntu 18.04

J'utilise un CT avec Ubuntu Server 18.04.4

Il faut bien suivre scrupuleusement ces sites, et utilisant systématiquement le FQDN créé.

  1. Installation de base : https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart
  2. Customisation : https://framacloud.org/fr/cultiver-son-jardin/jitsi-meet
  3. Sécurisation : https://crosstalksolutions.com/how-to-enable-jitsi-server-authentication/

Modifications effectuées

Fichier /etc/jitsi/meet/visio.<domaine>-config.js =

   enableInsecureRoomNameWarning: true,
   enableAutomaticUrlCopy: true,
   enableDisplayNameInStats: true,
   disableThirdPartyRequests: true,
   defaultLocalDisplayName: 'moi',
   defaultRemoteDisplayName: 'Autre participant',
   defaultLanguage: 'fr',
   noticeMessage: 'Bienvenue sur la plateforme de webconférence sécurisée de l\'Ambassade de France en Italie !',
   hideLobbyButton: true, 
   disableInviteFunctions: true,
   enableLipSync: true,
   
   liveStreamingEnabled: false,
   requireDisplayName: true,

A tester :video hideConferenceSubject: false, hideConferenceTimer: false,nan hideParticipantsStats: true,

   toolbarButtons: [
       'camera',
       'chat',
       'closedcaptions',
   /    'desktop',
   //    'download',
   //    'embedmeeting',
   //    'etherpad',
   //    'feedback',
   //    'filmstrip',
       'fullscreen',
       'hangup',
       'help',
   //    'invite',
   //    'livestreaming',
       'microphone',
       'mute-everyone',
       'mute-video-everyone',
       'participants-pane',
       'profile',
       'raisehand',
   //    'recording',
       'security',
   //    'select-background',
       'settings',
   //    'shareaudio',
       'sharedvideo',
       'shortcuts',
       'stats',
       'tileview',
       'toggle-camera',
       'videoquality',
       '__end'
   ],

Fichier /var/www/jitsi-custom/interface_config.js

On va maintenant copier le fichier suivant dans un répertoire accessible de NGINX

mkdir /var/www/jitsi-custom
cp /usr/share/jitsi-meet/interface_config.js /var/www/jitsi-custom/interface_config.js

Puis on modifie le fichier ainsi copié :

nano /var/www/jitsi-custom/interface_config.js
    BRAND_WATERMARK_LINK: 'https://it.ambafrance.org/',
    DISABLE_VIDEO_BACKGROUND: true,
    DISPLAY_WELCOME_FOOTER: false,
    ENABLE_DIAL_OUT: false,
    GENERATE_ROOMNAMES_ON_WELCOME_PAGE: false,a
    HIDE_INVITE_MORE_HEADER: true,
    LANG_DETECTION: false, // Allow i18n to detect the system language
    SHOW_BRAND_WATERMARK: true,

Puis on modifie le fichier de configuration de Nginx afin qu'il utilise les ressources modifiées

cp /etc/nginx/sites-available/visio.domaine.fr.conf /etc/nginx/sites-available/visio.domaine.fr.conf.bak
nano /etc/nginx/sites-available/visio.domaine.fr.conf

On ajoute les redirections suivantes :

    location = /interface_config.js {
        alias /var/www/jitsi-custom/interface_config.js;
    }
    location = /images/watermark.png {
        alias /var/www/jitsi-custom/watermark.png;
    }
   location = /images/watermark.svg {
       alias /var/www/jitsi-custom/watermark.png;
   }

Et on relance le serveur Nginx pour prendre en compte ces modifs

nginx -t && nginx -s reload

Enfin on modifie directement le fichier des libellés :

Fichier /usr/share/jitsi-meet/lang/main-fr.json

       "headerTitle": "Plateforme de visioconférence de l'Ambassade de France en Italie",
       "headerSubtitle": "Webconférences sécurisées",

Voir aussi ici :

Autres supports pertinents

SIP et Jigasi

  1. Installer JIGASI
    apt install jigasi
  2. Modifier le fichier "/etc/jitsi/jigasi/sip-communicator.properties"
  3. Créer un compte jigasi :
    prosodyctl register jigasi visio.cahuet.fr mdp_jigasi

prosodyctl check prosodyctl cert generate example.org auth.example.org

I went into /etc/prosody/conf.d/domain.com.cfg.lua and changes storage="empty" to storage="memory". Suddenly it started working.

Modifier les fichiers nano /etc/jitsi/videobridge/config JVB_ENABLE_APIS=rest,colibri

nano /etc/jitsi/videobridge/sip-communicator.properties org.jitsi.videobridge.ENABLE_STATISTICS=true org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri org.jitsi.videobridge.STATISTICS_INTERVAL=5000

Voir https://community.jitsi.org/t/quick-install-cant-get-colibri-stats-working/26461 http://192.168.100.208:8080/colibri/stats

upgrades

Documentation

Particularités

  • Je n'hébergeais pas de serveur jusqu'à présent sur mon proxmox. Il a donc fallu faire quelques adaptations pour mettre en place ce service.
  • Créer un dyndns qui pointe vers mon adresse IP publique (via OVH et pfSense, pas de difficulté)
  • Créer les règles de nattage afin de renvoyer les flux http, https et 10000 vers le serveur en DMZ
  • Mise en DMZ du pfSense sur le modem opérateur

Clients

Ordinateurs

Sur Mac, Windows ou Linux, nécessité d'utiliser le navigateur Chrome de Google.

Sinon, télécharger le logiciel Jitsi Meet adapté à votre environnement sur https://github.com/jitsi/jitsi-meet-electron/releases/tag/v2.0.0 ou ici : https://github.com/jitsi/jitsi-meet-electron

Pour Mac

Installer homebrew si ce n'est pas déjà fait, et utiliser la commande :

brew cask install jitsi-meet

Android ou iPhone/iPad

Installer le logiciel Jitsi Meet puis configurer le serveur avec https://jitsi.cahuet.fr En profiter pour renseigner votre prénom.

Effectuer la demande de certificats Let's Encrypt

Executer le script suivant, et bien renseigner le FQDN

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

Automatiser la mise à jour des certificats

modifier le fichier crontab et ajouter les deux lignes suivantes : crontab -e

  • 4 * * 0 /usr/local/sbin/certbot-auto renew >> /var/log/certificates-renew.log
  • 4 * * 0 systemctl restart nginx

Supervision

Voir Supervision Serveurs

http://172.30.1.101:3000/d/mcfIHGrZz/serveur-visioconference?orgId=1&refresh=30s

  1. Installer Grafana : https://grafana.com/docs/grafana/latest/installation/debian/
  2. installer InfluxDB : https://portal.influxdata.com/downloads/
  3. Récupérer le numéro du DashBoard : 11969 (https://grafana.com/grafana/dashboards/11969)
  4. Créer son propre Dashboard : https://community.jitsi.org/t/how-to-to-setup-grafana-dashboards-to-monitor-jitsi-my-comprehensive-tutorial-for-the-beginner/38696

Architecture

Tuning

LoadBalancing

Extensions Navigateurs

Jibri

Customisation

Ajout des fonctions de diffusion

Cela passe par l'isntallation d'un serveur JIBRI qui permet de diffuser une visioconférence sur YouTube : https://community.jitsi.org/t/tutorial-jibri-overview-troubleshooting-tips-tricks-solve-your-jibri-problems-quickly/86054

Comparatif solutions visio

Quelques références

  1. Installation de base : https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md
  2. Customisation : https://framacloud.org/fr/cultiver-son-jardin/jitsi-meet
  3. Promotheus Exporter : https://github.com/karrieretutor/jitsi-prom-exporter
  1. Jitsi-Videobridge : https://jitsi.org/jitsi-videobridge/
  2. Evaluation des performances : https://jitsi.org/jitsi-videobridge-performance-evaluation/
  3. https://www.howtoforge.com/tutorial/how-to-create-your-own-video-conference-using-jitsi-meet-on-ubuntu-1804/
  4. https://www.scaleway.com/en/docs/setting-up-jitsi-meet-videoconferencing-on-debian-buster/