Table des matières
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 standardTZ=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; #... }