Ta visio Open Source comme un pro avec Jitsi

Posted by

Jitsi Meet au secours de la France qui télétravaille

COVID-19 oblige, j’ai un peu modifié l’ordonnancement de mes articles pour reparler d’un sujet que j’avais traité il y a 3-4 ans : la visioconf avec Jitsi Meet. Pourquoi ce sujet ? D’abord parce que pas plus tard qu’il y a 5 jours, NextInpact (mon journal préféré) a relayé les mésaventures de Framasoft suite à l’épidémie.

En effet, Framasoft (que vous connaissez forcément) propose de longue date des outils/services en ligne gratuit. Le souci, c’est que le but est ici d’éduquer les gens et leur montrer qu’on peut autohéberger de nombreux services habituellement payants chez de gros éditeurs (ou gratuits en échange de vos données personnelles).

Mais, pris par la panique de devoir passer tout un tas de gens à l’arrache sur un mode massivement télétravail, beaucoup de gens se sont tournées vers des solutions toutes prêtes, surchargeant au moins de manière temporaire les serveurs de Framasoft.

Mais vous l’avez bien compris, le but, c’est d’apprendre à faire soit-même, comme le fait Framasoft, avec Jitsi Meet :).

Notes additionnelles

Si jamais vous cherchez des solutions toutes faites, sachez que de nombreuses entreprises de la tech mettent à disposition ce genre de solutions de manière temporairement gratuite pour soulager les équipes IT et "faire leur part" pour lutter contre la propagation du virus. Les derniers en date sont OVH qui propose un service de téléconférence gratuit jusqu’à 24h et 50 participants, mais j’ai aussi entendu parlé de discord pour de la visio à 50 et d’autres services qui font sauter leurs limites habituelles dans le contexte Coronavirus.

Parallèlement à cet article sur Jitsi, sachez que NextCloud propose une alternative libre (NextCloud Talk) dans la dernière version. Je ne l’ai pas encore testée, mais la communauté NextCloud FR est très active je suis sûr qu’ils ont du faire des tutos (Genma ?).

Et Jitsi dans tout ça ?

C’est quoi exactement Jitsi ?

Multi-platform open-source video conferencing

  • Share your desktop, presentations, and more
  • Invite users to a conference via a simple, custom URL
  • Edit documents together using Etherpad
  • Pick fun meeting URLs for every meeting
  • Trade messages and emojis while you video conference, with integrated chat.

C’est donc une plateforme relativement complète de visio, a priori plutôt scalable (possibilité de faire des confs à plus de 100), qui permet de partager son écran et de chatter.

Le gros avantage c’est que c’est dans un navigateur et que c’est très simple d’utilisation. On ouvre la page web, on rentre un nom de salle dans une barre de texte, et voilà.

Installation

Avant de commencer, je me suis posé la question du sizing. Nécessairement ça va dépendre fortement de la charge que vous attendez, mais sachez qu’au minimum il vous faudra une machine avec 1 vCPU et 1Go de RAM. Le double serait le mieux, car Jitsi se compose de plusieurs applications Java (c’est donc un peu gourmand même sans charge).

https://github.com/jitsi/jitsi-meet/blob/master/doc/manual-install.md

En soit, l’installation de Jitsi est assez triviale, en particulier sur une Debian ou une Ubuntu récente.

Instruction d’installation disponibles sur https://jitsi.org/downloads/ubuntu-debian-installations-instructions/

Ici, voilà les commandes que j’ai tapé pour installer Jitsi sur une Ubuntu 18.04 vierge :

sudo apt upgrade 
sudo apt install gnupg2

wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -

sudo sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"

sudo apt update
sudo apt install jitsi-meet

Lors de l’installation, le terminal nous promptera pour le nom d’hôte public sur lequel le service sera disponible et si on souhaite générer un certificat ou en fournir un soit même.

Cependant, comme souvent avec les sites qui disent "regardez c’est trop simple d’installer notre soft, c’est juste apt install monsoftgenial", en vrai il manque des bouts ;)

Firewall

A moins d’avoir une machine chez un cloud provider pas trop regardant et sur laquelle vous installez le soft sans se poser de question, vous allez probablement avoir mis (ou vouloir mettre) du filtrage de port devant vos serveurs.

Comme vous vous en doutez, il va falloir ouvrir des ports pour que ça fonctionne correctement. On trouve l’info des ports utilisés par Jitsi dans la documentation d’installation (un peu plus complète) disponible sur Github.

Grosso modo, si tous les composants de jitsi sont installés sur la même machine, vous avez les ports suivants à ouvrir sur Internet (ou en LAN si vous ne souhaitez utiliser Jitsi que sur votre réseau Interne) :

  • 443/TCP pour le serveur web de la page d’accueil
  • 4443/TCP (jitsi-meet videostream)
  • 10000 => 20000 en TCP et en UDP

La dernière plage de 10000 port est très probablement bien trop grande dans une grande majorité des cas et peut normalement être configurée dans Jitsi (mais je n’ai pas les commandes exactes).

Jitsi dans un réseau NATé

Je n’allais pas commander une nouvelle machine juste pour mes tests Jitsi. J’ai donc installé une VM sur mes hyperviseurs persos, dans lequel le réseau virtuel est NATé.

Et manque de bol, dans ce cas là, il faut ajouter deux lignes dans un fichier de configuration (deux lignes que j’ai mis du temps à trouver mais qui sont là aussi, dans la doc… Passons).

Dans la machine sur laquelle vous avez installé Jitsi, ouvrez le fichier suivant et ajoutez y les deux lignes qui suivent (en remplaçant bien entendu les parties entre crochets par les vraies IPs).

vi /etc/jitsi/videobridge/sip-communicator.properties
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=[IP_MACHINE_LAN]
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=[IP_PUBLIQUE_SERVICE]

Premier test

Maintenant qu’on a configuré le firewall et la configuration spécifique pour le NAT, on essaye de faire sa première conf et … voilà ce que ça donne :

Comme vous pouvez le voir sur ce superbe cliché, j’ai connecté 3 devices, dont un smartphone, depuis mon wifi vers mon serveur chez Hetzner.

J’ai testé avec Chrome et Firefox, les deux fonctionnent mais il arrive que Jitsi conseille plutôt d’utiliser Chrome. Historiquement, c’était bien mieux supporté, en tout cas.

Pour le smartphone, il existe une application sur l’Android Store et sur F-Droid qui m’a paru assez complète.

Partage d’écran

C’était une des déceptions que j’avais eu il y a 3 ans lorsque j’avais essayé l’outil. On teste et on se dit : "Cool, la vidéo fonctionne… Mais qu’en est-il ?"

Et là c’est (c’était) le drame. A l’époque, j’avais surtout fais le tuto pour cette partie, car il était nécessaire de compiler soit même une extension pour chaque navigateur (et je n’avais réussi à faire fonctionner que celle de Chrome (cf mon précédent article).

Heureusement, aujourd’hui, ça fonctionne out of the box !

Avec quelques limitations tout de même. Si sur Chrome, j’ai pu partager n’importe quelle de mes fenêtres ouvertes, je n’ai réussi à partager que mon navigateur avec Firefox. Je ne sais pas si c’est un souci de mon côté ou une limitation de l’outil.

Quelques features sympa

Dans les fonctionnalités "nice to have", il existe comme dans un autre outil propriétaire qui en fait massivement la pub à la télé, la possibilité de flouter le fond pour qu’on ne voit pas le bazar que c’est chez vous par exemple. Ça marche assez bien mais ça consomme énormément de CPU (surtout si vous avez un portable avec un CPU un peu faiblard) et ça rajoute quand même un peu de latence.

On peut espérer que cette fonctionnalité encore en bêta finira par s’améliorer.

Ma tête n’est pas floutée, c’est l’essentiel…

Le chat fonctionne bien mais la gestion des emoji se limite à une 15aine de signe. Quand on est habitué à Slack et aux émoji personnalisés, c’est vraiment pauvre…

Il existe bien entendu une fonction pour demander la parole (et ainsi éviter que ça soit le bazar quand on est nombreux), ainsi que des fonctions pour se mute ou couper sa caméra.

On peut également choisir sa qualité vidéo et voir la bande passante sur le poste local.

Mais quelques manques

Je n’ai pas eu le temps de jouer extensivement avec l’outil, mais il me semble qu’une partie de mes remarques d’il y a 3 ans sont cependant toujours d’actualité.

L’outil se veut simple : pas d’inscription nécessaire et réunion simple à créer. Le corollaire est que l’outil est parfois simpliste. Pas d’interface d’administration pour vérifier (voire limiter) les consommations de bande passante au niveau global sur le serveur, qui est connecté et quand, etc.

De même, n’importe qui, de base peut créer une conférence. Si on est un peu parano on peut s’imaginer plein de choses… (A noter, on peut protéger l’accès à une conférence par un mot de passe une fois qu’on l’a créée).

Bref, quelques points encore à améliorer pour avoir une solution 100% équivalente aux acteurs payants. Ces mêmes points qu’il y a 3 ans et qui avaient des solutions de contournement mais non triviales (notamment Openfire). Donc à voir si c’est toujours le cas aujourd’hui.

Mais en attendant que je me penche là dessus, enjoy :)

Sources et bonus


Vous aimez ce blog ? Partagez-le avec vos amis !   Twitter Facebook Linkedin email

Vous pouvez également soutenir le blog financièrement :
Tipeee

13 comments

  1. merci de ce partage, je viens de tester, avec docker j arrive sur le lan local entre différents ordi mais pas avec le téléphone androïde , une conf spécial ? de le tel avec l’apli ou sur un des conteneurs ?

  2. Bonjour,

    @thierry
    Si ton Android est en Wifi, donc sur ton LAN, il n’y a rien à faire de plus. Cela fonctionne via un navigateur Web (je n’ai essayé qu’avec Firefox mobile) ou bien avec l’app.

    Si tu es en 4G sur ton mobile, il y a de la configuration à faire sur ton routeur pour le NAT comme l’a expliqué zwindler.

    @ zwindler
    As-tu essayé de fermer Jitsi Meet au utilisateurs non authentifiés ? J’ai trouvé sur le Net des explications sur comment faire mais il faut créer des comptes manuellement. Ce que je souhaiterai c’est de le connecter à mon Active Directory. Mais je ne trouve pas de documentation recente et fonctionnelle. Aurais-tu cela sous le coude ?

    Merci.

  3. Malheureusement non je n’ai pas encore exploré cette possibilité. J’avais essayé il y a quelques années sans succès et je m’y remettrai bientôt

  4. Bonjour

    J’ai installé sur mon serveur debian.
    A 2 tout fonctionne mais une fois qu’une troisième personne se joint, plus de micro plus de caméra
    Avez vous rencontrez ce problème

    Merci

  5. Est ce que tous les ports sont bien ouverts ? Il existe un mode peer to peer (activé par défaut je crois) on peut le désactiver pour voir (ou l’inverse si c’est pas activé par défaut)

  6. Bonjour,

    @jf
    En effet, à 2, la communication se fait en p2p. Au-delà, ça passe par le serveur. Il faut donc que les ports UDP de 10 000 à 20 000 soient :
    – « forwardés » si le serveur est derrière un firewall
    – « ouverts » si le serveur est en front

    Ce qu’il peut se passer, également, c’est que l’upload du serveur (à partir de 3 utilisateurs, donc) n’est pas assez suffisant pour servir tout le monde. A voir s’il y a une amélioration en baissant la résolution des caméras de chacun. Ou encore, en les coupant. Avec mes collègues, à 7, on dégrade la connexion fibre pour tous les autres utilisateurs en télétravail dès qu’on met les caméras. En ayant juste l’audio, ça fonctionne très bien pour tout le monde.
    J’ai l’impression qu’avec l’application sur mobile c’est un peu mieux.

    @zwindler
    Concernant la connexion à un AD (je pense qu’avec un LDAP, c’est pareil), afin de pouvoir authentifier toute création de salon de discussion, j’ai réussi \o/
    Si ça peut servir et en espérant ne rien oublier (je considère que jitsi-meet est installé et fonctionnel) :
    – apt-get install prosody-modules
    – création du fichier /etc/prosody/conf.available/ldap.cfg.lua
    autentication = « ldap2 »;
    ldap = {
    hostname = ‘x.x.x.x:389’,
    bind_dn = ‘CN=ldap_user,CN=users,DC=domaine,DC=com’,
    bind_password = ‘secret,
    user = {
    basedn = ‘ou=OU_des_users,dc=domaine,dc=com’,
    usernamefield = ‘sAMAccountName’,
    namefield = ‘cn’,
    },
    }

    ln -s /etc/prosody/conf.available/ldap.cfg.lua /etc/prosody/conf.d/ldap.cfg.lua
    /etc/prosody/conf.avail/jitsi.domaine.com :
    consider_bosh_secure = true; (à mettre avant le « VirtualHost » qui concerne votre instance Jitsi, ici « jitsi.domaine.com »)

    ensuite, dans la section « VirtualHost » :
    — authentication = « anonymous »
    authentication = « ldap2 »;

    on redémarre les services :
    systemctl restart jitsi-videobridge.service
    systemctl restart jvb.service
    systemctl restart prosody.service

    La page Web est ensuite accessible sans aucun changement, par contre, dès que vous allez rejoindre ou créer un salon, un bandeau vous demandant de vous authentifier va apparaître en haut de la fenêtre. Dans mon cas, pour l’identifiant, c’est juste le nom de l’utilisateur qu’il faut renseigner, pas de « @domaine.com » comme montré dans le placeholder de l’input (du coup, j’ai modifié le code HTML pour le faire disparaitre).

  7. Génial merci pour ton retour, j’essayerai de tester (faudra que je monte un LDAP par contre…) et de mettre à jour l’article.
    Encore merci !

  8. Salut a tous et merci du detail sur ton blog.
    J’ai installé cela il y a quelques jours et tout fonctionnait.
    Par contre deux jours apres en reessayant je me suis retrouvé avec la meme erreur cité plus haut, pas plus de deux dans la room, et pas de video/micro qui fonctionnent.
    J’ai un peu de mal a comprendre. A deux ca fonctionne sans probleme, meme depuis une connexion exterieur en 4G par exemple, mais si on rajoute du monde plus de connexion plus rien; Et pourtant on a essayé a 4 et quelques jours en arriere tout fonctionnait;
    Je suis un peu perdu :/
    Si quelqu’un peu me commenter cela :D
    En vous remerciant et vous remerciant tous !

  9. j’ai trouvé mon erreur, j’ai rajouté les IPs necessaire sur le fichier demandé


    If installation is on a machine behind NAT further configuration of jitsi-videobridge is needed in order for it to be accessible. Provided that all required ports are routed (forwarded) to the machine that it runs on. By default these ports are (TCP/443 or TCP/4443 and UDP 10000). The following extra lines need to be added the file

    /etc/jitsi/videobridge/sip-communicator.properties:

    org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address>
    org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>

    et la ca fonctionne on va voir si ca va durer.
    :)

  10. Oui, justement : j’avais mis un paragraphe là dessus dans l’article ;-)

    (Jitsi dans un réseau NATé)

  11. Salut Zwindler
    On est d’accord que NATé veux bien dire que l’ordinateur (le serveur qui heberge Jitsi), est connecté en réseau directement sur la box, et ou les ports de la box 443, 4443 et 10000 sont redirigés vers l’ordinateur en question avec les mêmes numéros de ports.
    Parce que je pense que le manque de sommeil me fait faire de la m….
    Merci encore.
    :D

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.