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 [2022/05/25 00:16] – [Installation du container] n1c0 | 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. | + | 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 ===== | ||
| Ligne 8: | Ligne 17: | ||
| 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 | + | 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 | + | 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 | ||
| + | |||
| + | ===== Création | ||
| - | On crée un virtual host basique | + | On utilise le virtual host par défaut d' |
| Executer cette commande pour générer les certificats : | Executer cette commande pour générer les certificats : | ||
| Ligne 22: | Ligne 39: | ||
| certbot certonly --webroot -w / | certbot certonly --webroot -w / | ||
| | | ||
| - | Maintenant que les certificats sont créés, la création | + | Maintenant que les certificats sont créés, la création |
| ===== Installation de meet jitsi ===== | ===== Installation de meet jitsi ===== | ||
| - | Entrer dans le container | + | Entrer dans le container |
| - | + | ||
| - | [[https://wiki.pielo.net/jitsi-meet-sur-lxc|En suivant ce déroulé]] | + | |
| ===== 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> | ||
| < | < | ||
| < | < | ||
| - | ServerAdmin | + | ServerAdmin |
| ServerName | 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 " | ||
| + | </ | ||
| - | SSLEngine on | + | # SSL config |
| - | SSLProxyEngine On | + | |
| - | SSLProxyVerify none | + | SSLProxyEngine On |
| - | SSLProxyCheckPeerCN off | + | SSLProxyVerify none |
| - | SSLProxyCheckPeerName off | + | SSLProxyCheckPeerCN off |
| - | SSLProxyCheckPeerExpire off | + | SSLProxyCheckPeerName off |
| + | SSLProxyCheckPeerExpire off | ||
| + | # SSL certificates | ||
| SSLCertificateFile / | SSLCertificateFile / | ||
| SSLCertificateKeyFile / | SSLCertificateKeyFile / | ||
| Include / | Include / | ||
| - | ProxyPreserveHost | + | # Proxy base parameters |
| - | # | + | |
| - | + | ||
| - | # proxy pour cetificat | + | # Proxy pour certificat |
| DocumentRoot / | DocumentRoot / | ||
| ProxyPass / | ProxyPass / | ||
| - | | + | |
| - | ProxyPassReverse / https:// | + | ProxyPassReverse / https:// |
| + | #ProxyPass "/" | ||
| + | # | ||
| - | # For WebSockets | + | # Set WebSockets |
| RewriteEngine on | RewriteEngine on | ||
| RewriteCond %{HTTP: | RewriteCond %{HTTP: | ||
| Ligne 91: | Ligne 137: | ||
| #SetEnv proxy-sendchunks 1 | #SetEnv proxy-sendchunks 1 | ||
| - | <Proxy *> | + | # Set rights |
| - | Order deny, | + | |
| - | Allow from all | + | Order deny, |
| - | </ | + | Allow from all |
| + | </ | ||
| + | # Logs | ||
| ErrorLog / | ErrorLog / | ||
| - | LogLevel | + | LogLevel |
| CustomLog / | CustomLog / | ||
| Ligne 103: | Ligne 151: | ||
| </ | </ | ||
| + | </ | ||
| - | </ | + | ===== Réglages Firewall et Réseau ===== |
| + | ==== Dans le container ==== | ||
| - | ===== Réglages Firewall | + | Installer UFW et autoriser les ports suivant : |
| - | ==== Sur l'hote ==== | + | |
| - | Ouvrir les ports nécessaires au fonctionnement de jitsi avec ufw : | + | < |
| - | < | + | sudo ufw allow 22/tcp |
| sudo ufw allow 80/tcp | sudo ufw allow 80/tcp | ||
| sudo ufw allow 443/tcp | sudo ufw allow 443/tcp | ||
| + | sudo ufw allow 3478/udp | ||
| + | sudo ufw allow 5349/tcp | ||
| sudo ufw allow 10000/udp | 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 22/tcp | ||
| + | sudo ufw allow 80/tcp | ||
| + | sudo ufw allow 443/tcp | ||
| sudo ufw allow 3478/udp | sudo ufw allow 3478/udp | ||
| sudo ufw allow 5349/tcp | sudo ufw allow 5349/tcp | ||
| + | sudo ufw allow 10000/udp | ||
| sudo ufw enable | sudo ufw enable | ||
| </ | </ | ||
| - | Check du firewall | + | |
| + | Vérifier le status | ||
| sudo ufw status verbose | 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) | + | |
| - | nano / | + | Il faut transférer certains de ces ports au container jitsi (pour 80 et 443, c' |
| - | < | + | Dans le fichier **/ |
| + | |||
| + | < | ||
| *nat | *nat | ||
| :PREROUTING ACCEPT [0:0] | :PREROUTING ACCEPT [0:0] | ||
| # jitsi specific rules | # jitsi specific rules | ||
| - | -A PREROUTING -i enp35s0 | + | -A PREROUTING -i enp8s0 |
| - | -A PREROUTING -i enp35s0 | + | -A PREROUTING -i enp8s0 |
| - | -A PREROUTING -i enp35s0 | + | -A PREROUTING -i enp8s0 |
| + | # General postrouting for LXC containers | ||
| + | -A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE | ||
| COMMIT | COMMIT | ||
| </ | </ | ||
| - | 10.0.3.211 étant l'ip du container | + | 10.0.3.211 étant l'ip du container. Penser à remplacer l' |
| Redémarrer ufw avec | Redémarrer ufw avec | ||
| + | |||
| sudo ufw disable && sudo ufw enable | sudo ufw disable && sudo ufw enable | ||
| + | | ||
| ou | ou | ||
| + | |||
| systemctl restart ufw.service | systemctl restart ufw.service | ||
| - | ==== Dans le container Jitsi ==== | ||
| - | |||
| - | Configurer le videobridge | ||
| - | nano / | ||
| - | < | ||
| - | org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true | ||
| - | ### | ||
| - | # 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 | ||
| - | | ||
| - | |||
| - | * [[https:// | ||
| - | Si le container ne ping plus l' | ||
| - | iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -o eth0 -j MASQUERADE | ||
| ==== Trouble shooting ==== | ==== Trouble shooting ==== | ||
| Redémarrer lxc-net service sur l'hote | Redémarrer lxc-net service sur l'hote | ||
| Ligne 172: | Ligne 246: | ||
| ===== Configurations complémentaires ===== | ===== Configurations complémentaires ===== | ||
| - | ==== Ressources config jitsi ==== | ||
| - | * https:// | ||
| ==== Personnaliser l' | ==== Personnaliser l' | ||
| Ligne 180: | Ligne 252: | ||
| Notamment | Notamment | ||
| nano / | nano / | ||
| - | et une redirection pour le logo dans le vhost nginx port 80 | + | et une redirection pour le logo et interface |
| < | < | ||
| - | | + | location = /body.html { |
| - | alias / | + | alias / |
| + | } | ||
| + | location = / | ||
| + | alias / | ||
| + | } | ||
| + | | ||
| + | alias / | ||
| } | } | ||
| </ | </ | ||
| - | ==== Réglages serveur | + | ==== Réglages serveur |
| - | | + | |
| - | ligne 444 | + | On va utiliser ici le serveur STUN proposé officiellement par Meet Jitsi : meet-jit-si-turnrelay.jitsi.net |
| - | { urls: ' | + | |
| - | // { urls: ' | + | Dans le container, dans le fichier **/ |
| + | |||
| + | | ||
| + | |||
| + | 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, | ||
| + | |||
| + | | ||
| + | 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 | ||
| - | systemctl restart jitsi-videobridge2.service | ||
| - | systemctl restart jicofo.service | ||
| ==== Désactiver ipv6 ?! ==== | ==== Désactiver ipv6 ?! ==== | ||
meet_jitsi_un_container_lxc.1653437791.txt.gz · Dernière modification : de n1c0
