Outils pour utilisateurs

Outils du site


doc:formations:hebergement:service:visioconference_jitsii

Videoconférence avec Jitsi meet

On utilise ici comme exemple le DNS meet.kideba.com

Prérequis

Prérequis:

apt install nginx docker-compose
add-apt-repository ppa:certbot/certbot
apt install python-certbot-nginx

Configurez votre site web (ici nginx): créez /etc/nginx/sites-available/meet.kideba.com. Notez qu'on y a mis déjà le proxy de redirection vers le futur service jitsi:

server {
    server_name meet.kideba.com;
    root /var/www/html;
    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         "http://127.0.0.1:9800";
    }
    listen 443 ssl;
}

server {
    listen 80 ;
    listen [::]:80 ;
    server_name meet.kideba.com;
    root /var/www/html;
}

Puis activez le site et son certificat:

cd /etc/nginx/sites-enabled; ln -s ../sites-available/meet.example.com
nginx -t  # pour tester
service nginx reload
certbot  --nginx $(grep server_name /etc/nginx/sites-enabled/*|sed 's/.*server_name \(.*\)\s*;\s*#*.*/\1/'| tr ' ' '\n'|sort -u|grep .|xargs -L 1 echo -n " -d")

Installation de jitsi

cd /opt
git clone https://github.com/jitsi/docker-jitsi-meet
cd docker-jitsi-meet
mkdir -p ~/.jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody,jicofo,jvb}
cp env.example .env

Changez dans .env ces entrées:

  • HTTP_PORT=9800 conseillé pour ne pas garder le port standard
  • TZ=Europe/Paris
  • PUBLIC_URL="https://meet.example.com" (avec votre URL bien sûr)
  • DISABLE_HTTPS=1 car c'est votre serveur web qui va s'en charger

Testez déjà le docker en premier plan. Notez qu'il faut attendre pas mal avant que le service ne soit lancé (le journal vous indiquera web_1 | [services.d] done. quand il sera prêt).

docker-compose up     # <Control>-C pour finir

Note: s'il y a une erreur de type "ERROR: Version in "./docker-compose.yml" is unsupported.", plutôt que de chercher à mettre à jour docker, vous pouvez aussi changer la version dans docker-compose.yml de 3 à 2, ca semble marcher.

Dans une autre session SSH sur votre serveur, vérifiez que "ça tourne":

netstat -tanp | grep docker

Ainsi qu'en allant sur votre site, s'il est accessible:

http://meet.example.com:9800

Pour le relancer en tache de fond:

docker-compose up -d

Sécurisation HTTPS

Vous pouvez maintenant bloquer le service HTTP direct de jitsi pour l'extérieur, en ajoutant le préfixe 127.0.0.1 aux ports dans le fichier /opt/docker-jitsi-meet/docker-compose.yml

ports:
  - '127.0.0.1:${HTTP_PORT}:80'
  - '127.0.0.1:${HTTPS_PORT}:443'

Et relancez tout le monde: service nginx reload; docker-compose down; docker-compose up -d

Contrôle d'accès

Ref.

:!: bizarrement, le contrôle est effectué APRES la demande d'accès à une conférence

Pour ajouter un contrôle d'accès (utilisateur / mot de passe):

Reconfigurez votre /opt/docker-jitsi-meet/.env:

ENABLE_AUTH=1      # seuls les utilisateurs identifiés peuvent créer des sessions
#ENABLE_GUESTS=1   # si vous autorisez les invités sans compte (ils ne peuvent créer des salles)
AUTH_TYPE=internal

Relancez le service:

docker-compose down
rm -r ~/.jitsi-meet-cfg/   # c'est important!
docker-compose up -d

Pour gérer les comptes vous devez vous logguer dans le docker:

docker-compose exec prosody /bin/bash

Puis pour ajouter un compte, on passe par le serveur XMPP (c'est celui qui assure le "chat" dans jitsi):

prosodyctl --config /config/prosody.cfg.lua register USERNAME meet.jitsi PASSWORD

Ou pour supprimer un compte:

prosodyctl --config /config/prosody.cfg.lua deluser jeremie@meet.jitsi

Voyez aussi ces scripts avancés.

Bug? Avec le ENABLE_GUESTS ? =⇒ https://github.com/jitsi/docker-jitsi-meet/issues/27

OPTIMISATIONS

Vous pouvez apporter quelques modifications dans ~/docker-jitsi-meet/web/rootfs/defaults/config.js, notamment pour brider la résolution et donc l'usage de la bande passante:

    (...)
    
    // Sets the preferred resolution (height) for local video. Defaults to 720.
    resolution: 240,

    // w3c spec-compliant video constraints to use for video capture. Currently
    // used by browsers that return true from lib-jitsi-meet's
    // util#browser#usesNewGumFlow. The constraints are independency from
    // this config's resolution value. Defaults to requesting an ideal aspect
    // ratio of 16:9 with an ideal resolution of 720.
    constraints: {
        video: {
            aspectRatio: 16 / 9,
            height: {
                ideal: 240,
                max: 480,
                min: 240
            }
        }
    },

    (...)

Voyez aussi le champ

defaultLanguage: 'fr',

Bigbluebutton

(:!: section minimaliste)

C'est une solution qui va plus loin que la visio mais qui offre un peu de e-learning, ainsi que des options intéressantes comme la possibilité de gribouiller par dessus l'écran.

Installation:

git clone https://github.com/bigbluebutton/docker.git
mv docker bigbluebutton-docker
cd bigbluebutton-docker
git checkout v2.2.x   # la dernière version pose des problèmes avec la commande suivante!
docker build -t bigbluebutton .
HOSTIP="127.0.0.1"  # pour limiter l'accès externe
docker run --rm -p $HOSTIP:41080:80/tcp -p $HOSTIP:411935:1935 -p $HOSTIP:413478:3478 -p $HOSTIP:413478:3478/udp bigbluebutton -h $HOSTIP

Puis mappez les ports via nginx comme indiqué ci-dessus.

Pour un proxying UDP:

    server {
        listen 2555 udp;
        proxy_pass receiving_servers;
        proxy_responses: 0;
        proxy_bind 5.0.0.0;
        #... 
    }
doc/formations/hebergement/service/visioconference_jitsii.txt · Dernière modification : 2022/08/17 07:30 de jeremie