====== 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;
#...
}