Ceci est une ancienne révision du document !
Table des matières
Meet jitsi dans un container LXC
On suppose que LXC et certbot sont installés, et que l'on veut installer Meet Jitsi sur visio.futuretic.fr.
Inspirations :
Installation du container
On crée un container nommé meet, sous Debian Buster (10) :
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.
On démarre le container :
lxc-start meet
On peut voir les congainers ouverts avec la commande :
lxc-ls -f
On rentre dans le container avec la commande :
lxc-attach meet
Génération des certificats ssl letencrypt
On utilise le virtual host par défaut d'apache écoutant le port 80 et pointant vers un dossier accessible par apache : /var/www/html. Il servira à amorcer la création des certificats.
Executer cette commande pour générer les certificats :
certbot certonly --webroot -w /var/www/html -d visio.futuretic.fr
Maintenant que les certificats sont créés, la création des virtual hosts sur les ports 80 (http) et 443 (https) sera abordé plus bas.
Installation de meet jitsi
Entrer dans le container et installer Jitsi comme décrit dans la doc officielle.
Configuration host hostname
Sur le host, ajouter dans /etc/hosts (changer l'IP du container par la votre) :
10.0.3.211 visio.futuretic.fr
Dans le container, ajouter dans /etc/hosts :
127.0.1.1 meet visio visio.futuretic.fr 10.0.3.211 visio.futuretic.fr
et dans le fichier /etc/hostname :
visio.futuretic.fr
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

