meet_jitsi_un_container_lxc
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| meet_jitsi_un_container_lxc [2020/12/05 16:25] – Benjamin Labomedia | meet_jitsi_un_container_lxc [2023/12/01 00:53] (Version actuelle) – [Ressources config jitsi] Labomedia | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Meet jitsi dans un container LXC ====== | ====== 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 : | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| ===== Installation du container ===== | ===== Installation du container ===== | ||
| - | [[https:// | + | |
| + | On crée un container nommé **meet**, sous Debian Buster (10) : | ||
| lxc-create -t download -n meet -- -d debian -r buster -a amd64 | 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 | + | Pas d'ip fixe, config réseau par défaut pour le container. |
| + | |||
| + | On démarre le container : | ||
| + | |||
| + | lxc-start | ||
| + | |||
| + | On peut voir les congainers ouverts avec la commande : | ||
| lxc-ls -f | lxc-ls -f | ||
| - | lxc-attach | + | |
| - | | + | On rentre dans le container avec la commande : |
| + | |||
| + | | ||
| + | | ||
| + | ===== Création des certificats SSL letsencrypt ===== | ||
| + | |||
| + | On utilise le virtual host par défaut d' | ||
| + | |||
| + | Executer cette commande pour générer les certificats : | ||
| - | ===== Génération des certificats ssl letencrypt ===== | + | |
| - | Utilisation d'un vhost générique activé pour l' | + | |
| - | | + | 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. |
| - | bien sale, on génére le certificat | + | |
| ===== Installation de meet jitsi ===== | ===== Installation de meet jitsi ===== | ||
| - | [[https://wiki.pielo.net/jitsi-meet-sur-lxc|En suivant ce déroulé]] | + | |
| + | Entrer dans le container et installer Jitsi comme décrit dans la [[https://jitsi.github.io/handbook/ | ||
| ===== Configuration host hostname ===== | ===== Configuration host hostname ===== | ||
| - | Sur le host : | + | |
| - | nano / | + | Sur le host, ajouter dans **/etc/hosts** (changer l'IP du container par la votre) : |
| - | 10.0.3.250 visio.futuretic.fr | + | |
| - | Dans le container | + | 10.0.3.211 visio.futuretic.fr |
| - | nano / | + | |
| - | 127.0.1.1 | + | Dans le container, ajouter dans **/etc/hosts** : |
| - | | + | |
| - | visio | + | 127.0.1.1 |
| + | | ||
| + | |||
| + | et dans le fichier **/etc/hostname** : | ||
| + | | ||
| + | visio.futuretic.fr | ||
| ===== Création des vhost apache pour proxy le traffic vers le container ===== | ===== Création des vhost apache pour proxy le traffic vers le container ===== | ||
| + | |||
| + | On crée d' | ||
| + | |||
| nano / | nano / | ||
| - | <file php config> | + | |
| + | Avec dedans : | ||
| + | |||
| + | <code bash config> | ||
| < | < | ||
| - | | + | |
| - | ServerName visio.futuretic.fr | + | |
| + | ServerName | ||
| RewriteEngine on | RewriteEngine on | ||
| RewriteRule ^ https:// | RewriteRule ^ https:// | ||
| - | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Puis le vhost du port 443 : | ||
| nano / | nano / | ||
| - | <file php config> | + | |
| + | Avec dedans : | ||
| + | |||
| + | <code bash config> | ||
| < | < | ||
| + | |||
| < | < | ||
| - | | ||
| - | | ||
| - | SSLEngine on | + | ServerAdmin |
| - | SSLProxyEngine On | + | ServerName |
| + | |||
| + | # Headers for security | ||
| + | < | ||
| + | # Deja fourni par Jitsi | ||
| + | # Header always set Strict-Transport-Security " | ||
| + | Header set X-XSS-Protection "1; mode=block" | ||
| + | Header set X-Frame-Options " | ||
| + | Header set X-Content-Type-Options " | ||
| + | </ | ||
| - | SSLCertificateFile / | + | # SSL config |
| - | SSLCertificateKeyFile / | + | SSLEngine on |
| - | Include / | + | |
| + | | ||
| + | SSLProxyCheckPeerCN off | ||
| + | SSLProxyCheckPeerName off | ||
| + | SSLProxyCheckPeerExpire off | ||
| - | | + | # SSL certificates |
| - | ProxyPass | + | |
| - | ProxyPassReverse | + | |
| + | Include / | ||
| - | <Proxy *> | + | # Proxy base parameters |
| - | Order deny,allow | + | |
| - | Allow from all | + | |
| - | </Proxy> | + | # Proxy pour certificat |
| + | DocumentRoot / | ||
| + | ProxyPass / | ||
| + | ProxyPass / https:// | ||
| + | ProxyPassReverse / https:// | ||
| + | #ProxyPass "/" | ||
| + | # | ||
| + | |||
| + | # Set WebSockets | ||
| + | RewriteEngine on | ||
| + | RewriteCond %{HTTP: | ||
| + | RewriteCond %{HTTP: | ||
| + | RewriteRule /(.*) wss:// | ||
| + | |||
| + | RequestHeader set X-Forwarded-Proto “https” | ||
| + | RequestHeader set X-Forwarded-Port “443” | ||
| + | #SetEnv proxy-sendchunks 1 | ||
| + | |||
| + | # Set rights | ||
| + | <Proxy *> | ||
| + | Order deny,allow | ||
| + | Allow from all | ||
| + | </ | ||
| + | |||
| + | # Logs | ||
| ErrorLog / | ErrorLog / | ||
| LogLevel error | LogLevel error | ||
| Ligne 69: | Ligne 151: | ||
| </ | </ | ||
| - | </file> | + | </code> |
| + | |||
| + | ===== Réglages Firewall et Réseau ===== | ||
| + | ==== Dans le container ==== | ||
| + | |||
| + | Installer UFW et autoriser les ports suivant : | ||
| + | |||
| + | <code bash> | ||
| + | sudo ufw allow 22/tcp | ||
| + | sudo ufw allow 80/tcp | ||
| + | sudo ufw allow 443/tcp | ||
| + | sudo ufw allow 3478/udp | ||
| + | sudo ufw allow 5349/tcp | ||
| + | sudo ufw allow 10000/udp | ||
| + | sudo ufw enable | ||
| + | </ | ||
| + | |||
| + | Configurer le videobridge en modifiant le fichier **/ | ||
| + | |||
| + | <code bash> | ||
| + | org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true | ||
| + | # On ne configure pas de serveur STUN pour le moment | ||
| + | # | ||
| + | # Apparemment c'est bien de mettre cette instruction aussi : | ||
| + | org.jitsi.impl.neomedia.transform.srtp.SRTPCryptoContext.checkReplay=false | ||
| + | # Pour faire fonctionner dans un container LXC, on précise l'IP locale et publique | ||
| + | org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=10.0.3.211 | ||
| + | # Remplacer XXX.XXX.XXX.XXX par votre IP publique de l' | ||
| + | org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=XXX.XXX.XXX.XXX | ||
| + | org.jitsi.videobridge.ENABLE_STATISTICS=true | ||
| + | org.jitsi.videobridge.STATISTICS_TRANSPORT=muc | ||
| + | org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=localhost | ||
| + | </ | ||
| + | |||
| + | Puis redémarrer videobridge : | ||
| + | |||
| + | | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | ==== Sur l'hote ==== | ||
| + | |||
| + | Installer UFW et autoriser les ports suivant : | ||
| + | |||
| + | <code bash> | ||
| + | sudo ufw allow 22/tcp | ||
| + | sudo ufw allow 80/tcp | ||
| + | sudo ufw allow 443/tcp | ||
| + | sudo ufw allow 3478/udp | ||
| + | sudo ufw allow 5349/tcp | ||
| + | sudo ufw allow 10000/udp | ||
| + | sudo ufw enable | ||
| + | </ | ||
| + | |||
| + | Vérifier le status du firewall : | ||
| + | |||
| + | sudo ufw status verbose | ||
| + | |||
| + | Il faut transférer certains de ces ports au container jitsi (pour 80 et 443, c'est apache sur l'hote qui fait le proxy vers le container). | ||
| + | |||
| + | Dans le fichier **/ | ||
| + | |||
| + | <code bash> | ||
| + | *nat | ||
| + | :PREROUTING ACCEPT [0:0] | ||
| + | # jitsi specific rules | ||
| + | -A PREROUTING -i enp8s0 -p udp --dport 10000 -j DNAT --to-destination 10.0.3.211: | ||
| + | -A PREROUTING -i enp8s0 -p udp --dport 3478 -j DNAT --to-destination 10.0.3.211: | ||
| + | -A PREROUTING -i enp8s0 -p tcp --dport 5349 -j DNAT --to-destination 10.0.3.211: | ||
| + | # General postrouting for LXC containers | ||
| + | -A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE | ||
| + | COMMIT | ||
| + | </ | ||
| + | |||
| + | 10.0.3.211 étant l'ip du container. Penser à remplacer l' | ||
| + | |||
| + | Redémarrer ufw avec | ||
| + | |||
| + | sudo ufw disable && sudo ufw enable | ||
| + | |||
| + | ou | ||
| + | |||
| + | systemctl restart ufw.service | ||
| + | |||
| + | |||
| + | |||
| + | ==== Trouble shooting ==== | ||
| + | Redémarrer lxc-net service sur l' | ||
| + | systemctl restart lxc-net.service | ||
| + | |||
| + | Dans le container | ||
| + | tail -f / | ||
| + | tail -f / | ||
| ===== Configurations complémentaires ===== | ===== Configurations complémentaires ===== | ||
| - | Personnaliser l' | + | |
| + | ==== Personnaliser l' | ||
| * Voir [[https:// | * Voir [[https:// | ||
| + | Notamment | ||
| + | nano / | ||
| + | et une redirection pour le logo et interface dans le vhost nginx (copier les fichiers correspondants) | ||
| + | < | ||
| + | location = /body.html { | ||
| + | alias / | ||
| + | } | ||
| + | location = / | ||
| + | alias / | ||
| + | } | ||
| + | location = / | ||
| + | alias / | ||
| + | } | ||
| + | </ | ||
| + | ==== Réglages serveur STUN ==== | ||
| + | |||
| + | On va utiliser ici le serveur STUN proposé officiellement par Meet Jitsi : meet-jit-si-turnrelay.jitsi.net | ||
| + | |||
| + | Dans le container, dans le fichier **/ | ||
| + | |||
| + | org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net: | ||
| + | |||
| + | Puis dans le fichier **/ | ||
| + | |||
| + | <code bash> | ||
| + | p2p: { | ||
| + | // Enables peer to peer mode. When enabled the system will try to | ||
| + | // establish a direct connection when there are exactly 2 participants | ||
| + | // in the room. If that succeeds the conference will stop sending data | ||
| + | // through the JVB and use the peer to peer connection instead. When a | ||
| + | // 3rd participant joins the conference will be moved back to the JVB | ||
| + | // connection. | ||
| + | enabled: true, | ||
| + | |||
| + | // The STUN servers that will be used in the peer to peer connections | ||
| + | stunServers: | ||
| + | { urls: ' | ||
| + | ] | ||
| + | </ | ||
| + | |||
| + | Enfin, on redémarre le videobridge et jicofo : | ||
| + | |||
| + | systemctl restart jitsi-videobridge2.service && systemctl restart jicofo.service | ||
| + | |||
| + | Pour voir si le serveur STUN est utilisé, toujours dans le container, executer la commande : | ||
| + | |||
| + | tcpdump host meet-jit-si-turnrelay.jitsi.net | ||
| + | |||
| + | ==== Désactiver ipv6 ?! ==== | ||
| + | |||
| + | nano / | ||
| + | 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 [[https:// | ||
| + | * D' | ||
| + | * Apparemment [[https:// | ||
| + | |||
| + | {{:: | ||
| + | |||
| + | ==== Hébergement d'un colloque en ligne de plus de 200 personnes via Jitsi ==== | ||
| + | Une [[https:// | ||
| + | |||
| + | ==== Documentations complémentaires ==== | ||
| + | * [[https:// | ||
| + | |||
| + | {{tag> bj, serveur, futuretic, lxc, meet_jitsi, jitsi, streaming}} | ||
meet_jitsi_un_container_lxc.1607185547.txt.gz · Dernière modification : de Benjamin Labomedia
