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/14 22:13] – [Personnaliser l'interface] 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 ===== | ||
- | ===== Génération des certificats ssl letencrypt ===== | + | On utilise le virtual host par défaut |
- | Utilisation | + | |
- | certbot certonly --webroot -w /home/ | + | Executer cette commande pour générer les certificats : |
- | bien sale, on génére le certificat | + | |
+ | 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 ===== | ===== 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> | ||
< | < | ||
+ | |||
< | < | ||
- | | ||
- | | ||
- | | + | ServerAdmin |
- | | + | 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 " | ||
+ | </ | ||
+ | |||
+ | # SSL config | ||
+ | | ||
+ | SSLProxyEngine On | ||
+ | SSLProxyVerify none | ||
+ | SSLProxyCheckPeerCN off | ||
+ | SSLProxyCheckPeerName off | ||
+ | SSLProxyCheckPeerExpire off | ||
+ | |||
+ | # SSL certificates | ||
+ | SSLCertificateFile / | ||
+ | SSLCertificateKeyFile / | ||
+ | Include / | ||
- | SSLCertificateFile | + | # Proxy base parameters |
- | SSLCertificateKeyFile | + | ProxyPreserveHost |
- | | + | |
+ | # Proxy pour certificat | ||
+ | DocumentRoot | ||
+ | | ||
- | | + | |
- | | + | ProxyPassReverse / https:// |
- | ProxyPassReverse / https:// | + | #ProxyPass "/" |
+ | # | ||
- | # For WebSockets | + | # Set WebSockets |
RewriteEngine on | RewriteEngine on | ||
RewriteCond %{HTTP: | RewriteCond %{HTTP: | ||
Ligne 67: | 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 error | LogLevel error | ||
Ligne 79: | Ligne 151: | ||
</ | </ | ||
- | </file> | + | </code> |
- | ===== Réglages Firewall et réseau pour container LXC ===== | + | ===== Réglages Firewall et Réseau |
- | ==== Sur l' | + | ==== Dans le container |
- | Ouvrir | + | Installer UFW et autoriser |
- | < | + | |
+ | < | ||
+ | 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 | ||
+ | |||
+ | 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:// | ||
==== Trouble shooting ==== | ==== Trouble shooting ==== | ||
Redémarrer lxc-net service sur l'hote | Redémarrer lxc-net service sur l'hote | ||
Ligne 141: | Ligne 246: | ||
===== Configurations complémentaires ===== | ===== Configurations complémentaires ===== | ||
+ | |||
==== Personnaliser l' | ==== Personnaliser l' | ||
Ligne 146: | 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 ?! ==== | ||
Ligne 168: | Ligne 306: | ||
sysctl -p | sysctl -p | ||
| | ||
- | {{tag> bj, serveur, futuretic, lxc, meet_jitsi}} | + | ==== 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