Outils pour utilisateurs

Outils du site


meet_jitsi_un_container_lxc

Ceci est une ancienne révision du document !


Meet jitsi dans un container LXC

Installation du container

En suivant ce déroulé

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

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
meet_jitsi_un_container_lxc.1616206439.txt.gz · Dernière modification : 2021/03/20 02:13 de Benjamin Labomedia