Ceci est une ancienne révision du document !
Table des matières
Meet jitsi dans un container LXC
Installation du container
lxc-create -t download -n meet -- -d debian -r buster -a amd64
Pas d'ip fixe, config réseau par défaut pour le container
lxc-start visio lxc-ls -f lxc-attach visio root@meet
Génération des certificats ssl letencrypt
Utilisation d'un vhost générique activé pour l'occasion pointant sur un répertoire du host accessible d'apache
certbot certonly --webroot -w /home/adminbox/www/ynh.futuretic.fr -d visio.futuretic.fr
bien sale, on génére le certificat la première fois après renouvelement auto, dans le vhost suivant, on utilise le certificat généré
Plus propre ! Ajouter dans le vhost le-ssl.conf les lignes suivantes avant le ProxyPass :
# proxy pour cetificat DocumentRoot /var/www/html ProxyPass /.well-known !
Faire en sorte que le répertoire /var/www/html soit accessible à www-data
Et modifier la configuration du renouvellement de let'sencrcypt pour correspondre à ce vhost comme suit :
nano nano /etc/letsencrypt/renewal/visio.futuretic.fr.conf
# Options used in the renewal process [renewalparams] account = ***************************** authenticator = webroot server = https://acme-v02.api.letsencrypt.org/directory http01_address = 135.181.129.123 [[webroot_map]] visio.futuretic.fr = /var/www/html
Certbot renew devrait être content
Installation de meet jitsi
Configuration host hostname
Sur le host :
nano /etc/hosts 10.0.3.250 visio.futuretic.fr
Dans le container :
nano /etc/hosts 127.0.1.1 meet visio visio.futuretic.fr root@meet /home # hostname visio
Création des vhost apache pour proxy le traffic vers le container
nano /etc/apache2/sites-available/visio.futuretic.fr.conf
- config
<VirtualHost *:80> ServerAdmin tech@futuretic.fr ServerName visio.futuretic.fr RewriteEngine on RewriteRule ^ https://visio.futuretic.fr%{REQUEST_URI} [END,QSA,R=permanent]
nano /etc/apache2/sites-available/visio.futuretic.fr-le-ssl.conf
- config
<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin tech@futuretic.fr ServerName visio.futuretic.fr SSLEngine on SSLProxyEngine On SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off SSLProxyCheckPeerExpire off SSLCertificateFile /etc/letsencrypt/live/visio.futuretic.fr/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/visio.futuretic.fr/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf ProxyPreserveHost On # ProxyRequests Off # proxy pour cetificat DocumentRoot /var/www/html ProxyPass /.well-known ! ProxyPass / https://visio.futuretic.fr/ ProxyPassReverse / https://visio.futuretic.fr/ # For WebSockets RewriteEngine on RewriteCond %{HTTP:Connection} Upgrade [NC] RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteRule /(.*) wss://visio.futuretic.fr/$1 [P,L] RequestHeader set X-Forwarded-Proto “https” RequestHeader set X-Forwarded-Port “443” #SetEnv proxy-sendchunks 1 <Proxy *> Order deny,allow Allow from all </Proxy> ErrorLog /var/log/apache2/visio.futuretic.fr.error.log LogLevel debug CustomLog /var/log/apache2/visio.futuretic.fr.access.log vhost_combined </VirtualHost> </IfModule>
Réglages Firewall et réseau pour container LXC
Sur l'hote
Ouvrir les ports nécessaires au fonctionnement de jitsi avec ufw :
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 10000/udp sudo ufw allow 22/tcp sudo ufw allow 3478/udp sudo ufw allow 5349/tcp sudo ufw enable
Check du firewall status
sudo ufw status verbose
Il faut transférer certains de ces ports au container jitsi (pour 80 et 443, c'est l'apache du host qui fait le proxy vers le container) : ajouter en début de fichier
nano /etc/ufw/before.rules
*nat :PREROUTING ACCEPT [0:0] # jitsi specific rules -A PREROUTING -i enp35s0 -p udp --dport 10000 -j DNAT --to 10.0.3.211:10000 -A PREROUTING -i enp35s0 -p tcp --dport 3478 -j DNAT --to 10.0.3.211:3478 -A PREROUTING -i enp35s0 -p tcp --dport 5349 -j DNAT --to 10.0.3.211:5349 COMMIT
10.0.3.211 étant l'ip du container
Redémarrer ufw avec
sudo ufw disable && sudo ufw enable
ou
systemctl restart ufw.service
Dans le container Jitsi
Configurer le videobridge
nano /etc/jitsi/videobridge/sip-communicator.properties
org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true ###org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443 # from forum org.jitsi.impl.neomedia.transform.srtp.SRTPCryptoContext.checkReplay=false # add to make it work inside the container org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=10.0.3.211 org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=135.181.129.123
Redémarrer videobridge
systemctl restart jitsi-videobridge2
* voir ce sujet pour embrouilles
Si le container ne ping plus l'extérieur
iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -o eth0 -j MASQUERADE
Trouble shooting
Redémarrer lxc-net service sur l'hote
systemctl restart lxc-net.service
Dans le container
tail -f /var/log/jitsi/jicofo.log tail -f /var/log/jitsi/jvb.log
Configurations complémentaires
Ressources config jitsi
Personnaliser l'interface
Notamment
nano /usr/share/jitsi-meet/interface_config.js
et une redirection pour le logo dans le vhost nginx port 80
location = /images/watermark.png { alias /var/www/jitsi-custom/logo-futuretic-3.png; }
Réglages serveur stun
nano /etc/jitsi/meet/visio.futuretic.fr-config.js
ligne 444
{ urls: 'stun:visio.futuretic.fr:3478' } // { urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }
systemctl restart jitsi-videobridge2.service systemctl restart jicofo.service
Désactiver ipv6 ?!
nano /etc/sysctl.conf
Ajouter la ligne suivante en fin de fichier
net.ipv6.conf.all.disable_ipv6 = 1
Appliquer les changements
sysctl -p
Permettre la diffusion en direct vers autre chose que youtube
- Possible de faire de la multi-diffusion via le vhost nginx
- D'après la documentation, il est possible de mettre l'adresse rtmp, d'un serveur Peertube par exemple, et la clef de stream directement à la place de la clef de youtube (pas réussi à faire marcher)
- Apparemment avec cette technique ça marche !!!
Hébergement d'un colloque en ligne de plus de 200 personnes via Jitsi
Une super doc proposée par Indiehosters sur la config à mettre en place avec l'utilisation complémentaire de owncast
Documentations complémentaires
- Voir la doc d'un chaton avec un jitsi derrière un proxy