03/04/2020

Jitsi

Yo peiti un tuto de qualité. Cette fois c’est pour l’installation de jitsi qui permet de faire des conferences depuis son navigateur, smartphone comme teams. Mon installation est encore un peu bizarre…

En gros je l’installe dans un container lxc, et le ssl se passe au niveau du reverse proxy. Cependant l’application est installé de base avec une conf ssl donc on va voir comment corriger cette merde.

Installation

D’abord on installe lxc normal. Ensuite

apt install apt-transport-https wget man-db bash-completion gpg less bind9-host inetutils-ping 
echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
wget -qO -  https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
apt update
apt install jitsi-meet

Pour le hostname mettez le nom de domaine du container. Si vous taffez avec des ip au pire vous mettez ce que vous voulez dans le /etc/hosts sur 127.0.0.1 :

127.0.0.1   domain.com

et pour le ssl mettez automatique, de toute façon on s’en branle les couilles.

Alors à cette etape ça doit fonctionner en local donc si vous avez un vpn sur le serveur ou tunnel SSH je sais pas quoi testez le site avec le nom de domaine du container. Si ça marche pas alors tapez ces commandes :

apt-get --purge remove jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-web jicofo jitsi-videobridge prosody
rm -fr /etc/jitsi
apt-get install jitsi-meet

J’en ai foutrement aucune idée pourquoi, de toute façon jitsi c’est de la grosse merde !

Configuration Attention à partir d’ici c’est buggé !!!!!!!

Petite précision avant de commencer, en fait si t’a déjà un apache il va s’installer avec apache sinon nginx. Mais si t’utilise apache et bin tu te démerdes pour la conf OK !

Maintenant comme je le disais tout à l’heure faut refaire la conf nginx :

On supprime celle par defaut :

rm /etc/nginx/site-enable/default

Votre conf se situe dans /etc/nginx/site-available/domain.com. t’as compris hein, toi c’est ton domain qu’il faut mettre ;)

Le principe est de supprimer tout ce qu’il a de https, ssl 443. On vire tout !

Je suis sympas je te file mon truc ùais vérifie au cas où il y aurait une maj entre deux

server_names_hash_bucket_size 64;

server {
    listen 80;
    listen [::]:80;
    server_name _;

    add_header Strict-Transport-Security "max-age=31536000";

    root /usr/share/jitsi-meet;

    # ssi on with javascript for multidomain variables in config.js
    ssi on;
    ssi_types application/x-javascript application/javascript;

    index index.html index.htm;
    error_page 404 /static/404.html;

    location = /config.js {
        alias /etc/jitsi/meet/jitsi.private-config.js;
    }

    location = /external_api.js {
        alias /usr/share/jitsi-meet/libs/external_api.min.js;
    }

    #ensure all static content can always be found first
    location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)$
    {
        add_header 'Access-Control-Allow-Origin' '*';
        alias /usr/share/jitsi-meet/$1/$2;
    }

    # BOSH
    location = /http-bind {
        proxy_pass      http://localhost:5280/http-bind;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
    }

    # xmpp websockets
    location = /xmpp-websocket {
        proxy_pass http://127.0.0.1:5280/xmpp-websocket?prefix=$prefix&$args;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        tcp_nodelay on;
    }

    location ~ ^/([^/?&:'"]+)$ {
        try_files $uri @root_path;
    }

    location @root_path {
        rewrite ^/(.*)$ / break;
    }

    location ~ ^/([^/?&:'"]+)/config.js$
    {
       set $subdomain "$1.";
       set $subdir "$1/";

       alias /etc/jitsi/meet/jitsi.private-config.js;
    }

    #Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
    location ~ ^/([^/?&:'"]+)/(.*)$ {
        set $subdomain "$1.";
        set $subdir "$1/";
        rewrite ^/([^/?&:'"]+)/(.*)$ /$2;
    }

    # BOSH for subdomains
    location ~ ^/([^/?&:'"]+)/http-bind {
        set $subdomain "$1.";
        set $subdir "$1/";
        set $prefix "$1";

        rewrite ^/(.*)$ /http-bind;
    }

    # websockets for subdomains
    location ~ ^/([^/?&:'"]+)/xmpp-websocket {
        set $subdomain "$1.";
        set $subdir "$1/";
        set $prefix "$1";

        rewrite ^/(.*)$ /xmpp-websocket;
    }
}

Ensuite restart nginx

systemctl restart nginx

Reverse proxy

Alors cette étape est la plus simple parce que je vais pas t’apprendre à faire un reverse proxy j’ai déjà fait des tutos dessus c’est juste un rappel.

server {

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;
    server_name stream.arkalo.ovh; # managed by Certbot

    # domaine de ton container ou l'ip comme tu veux
    location ^~ / { proxy_pass http://domaine.com; }


    # ipv6 ça dégage !!!
    #listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/path/to/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/path/to/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = tondomainepublic.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80 ;
    listen [::]:80 ;
    server_name tondomainepublic.com;
    return 404; # managed by Certbot
}

Normalement c’est accessible depuis tondomainepublic.com

voilà voilà.