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édenteDernière révisionLes deux révisions suivantes | ||
meet_jitsi_un_container_lxc [2020/12/05 16:25] – Benjamin Labomedia | meet_jitsi_un_container_lxc [2022/06/17 21:59] – [Configuration host hostname] 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' | + | ==== Ressources config jitsi ==== |
+ | * https:// | ||
+ | |||
+ | ==== 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.txt · Dernière modification : 2023/12/01 00:53 de Labomedia