====== 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 [[[[doc:formations:hebergement:service:apache#reverse_proxy|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 # -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 ===== [[https://github.com/jitsi/docker-jitsi-meet|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 [[doc:formations:hebergement:service:mattermost:scripts#comptes_jitsi_a_partir_de_comptes_mattermost|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; #... }