Jitsi - Image Debian Buster Jitsi

  • Ich habe mich Wochen schlau gelesen auf scheible.de und auch auf anderen Seiten und fühlte mich gewappnet für die Installation einer eigenen Jitsi-Instanz. Netcup, habe ich gelesen, die seien gut. Also habe einen RS 4000 G9 bestellt und mit meinem erworbenen Wissen Hand angelegt und den Server mit dem Image Debian Buster - Jitsi installiert. Mal immer wieder in den verschiedenen Foren nachgeschaut, aber so richtig wollte das Alles nicht funktionieren. Immer war die Instanz mit falscher Domain v1234454656789049324.bestserver.de installiert, dann wollte das mit der Hauptdomain meinedomain.de und der Subdomain meet.meinedomain.de unter ngnix irgendwie nicht funktionieren und letsencrypt sicherte immer nur v1234454656789049324.bestserver.de. Ein Dilemmer, auf die Frage warum bei der Installation immer die Domain v1234454656789049324.bestserver.de genommen wird und nicht die unter rDNS zugewiesene, verwies der Netcup-Support darauf, dass man einen eigenen R-Server hat und für die Installation und den Betrieb selbst verantwortlich ist und man hier nicht helfen kann.


    Ich war am verzweifeln, nach einem Tag intensiver Suche und nach einer Nacht ruhelosem Schlaf habe ich dann an folgende Installation gewagt (gennante meinedomain.de ist jeweils in den Befehlen, Dateien durch die aktuelle Domain zu ersetzen):


    - Festplatte gelöscht

    - Image Debian Buster - Jitsi installiert

    - in der Datei /etc/hostname meinedomain.de eingetragen

    - in der Datei /etc/hosts folgendes eingetragen


    #hosts

    127.0.0.1 localhost

    127.0.1.1 meinedomain.de v111111111111111111

    # v111111111111111111 ersetzen mit aktueller Nummer


    # The following lines are desirable for IPv6 capable hosts

    ::1 localhost ip6-localhost ip6-loopback

    ff02::1 ip6-allnodes

    ff02::2 ip6-allrouters

    xxx.xxx.xxx.xxx meinedomain.de v111111111111111111

    # xxx.xxx.xxx.xxx ersetzen mit IP des aktuellen Servers


    - Server über SCP neugestartet


    - danach ufw als Firewall installiert mit folgenden Aufrufen:


    sudo apt update

    sudo apt install ufw


    ufw reset

    ufw default allow outgoing

    ufw allow OPENSSH

    ufw default deny incoming

    ufw allow 'Nginx Full'

    ufw allow XMPP

    ufw logging on

    ufw enable


    - bestehende Jitsi-Instanz mit folgenden Aufrufen gelöscht:

    apt purge jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-turnserver jitsi-meet-web jicofo jitsi-videobridge2


    rm -fR /etc/jitsi


    rm -fR /usr/share/jitsi


    rm -f /root/jitsi*


    - jetzt folgte die Neuinstallation von Jitsi mit folgenden Aufrufen:


    echo "jitsi-videobridge jitsi-videobridge/jvb-hostname string meet.meinedomain.de" | debconf-set-selections


    echo "jitsi-meet-web-config jitsi-meet/cert-choice select 'Generate a new self-signed certificate (You will later get a chance to obtain a Let's encrypt certificate)'" | debconf-set-selections


    sudo apt-get --option=Dpkg::Options::=--force-confold --option=Dpkg::options::=--force-unsafe-io --assume-yes --quiet install jitsi-meet


    - jetzt wird letsencrypt installiert.

    Mit der von der Jitsi-Installation erstellten Datei /etc/nginx/sites-avaible/meet.meinedomain.de.conf gibt es allerdings bei der Installtion einen Fehler und das Zertifikat wird nicht erstellt. Man muss vorher die default.conf anpassen. Dort setzt man server_name meinedomain.de; , löscht alles mit default hinter [80] und speichert die Datei. Dann kopiert man den gesamten Inhalt aus der default.conf überschreibend in die Datei /etc/nginx/sites-avaible/meet.meinedomain.de.conf und ersetzt dann dort server_name meet.meinedomain.de; und root /var/www/html durch root /var/www/html/meet . Das Verzeichnis erstellen wir dann mit mkdir /var/www/html/meet (wird später nicht mehr benötigt)


    Mit dem Aufruf nginx -t überprüft man ob Fehler vorliegen und korrigiert diese ggf. in default.conf und meet.meinedomain.de


    Jetzt kann letsencrypt mit folgenden Befehlen installiert werden:


    sudo apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface


    sudo apt install python3-certbot-nginx


    sudo certbot


    Folgendes erscheint im Terminal, wir geben eine bestehende E-Mail-Adresse ein!!:


    Saving debug log to /var/log/letsencrypt/letsencrypt.log

    Plugins selected: Authenticator nginx, Installer nginx

    Enter email address (used for urgent renewal and security notices) (Enter 'c' to

    cancel): mail@meineemail.de ******* BESTEHENDE E-MAIL-ADRESSE EINGEBEN ******


    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Please read the Terms of Service at

    https://letsencrypt.org/docume…v1.2-November-15-2017.pdf. You must

    agree in order to register with the ACME server at

    https://acme-v02.api.letsencrypt.org/directory

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    (A)gree/(C)ancel: A ******* WIR DRÜCKEN A ENTER ******


    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Would you be willing to share your email address with the Electronic Frontier

    Foundation, a founding partner of the Let's Encrypt project and the non-profit

    organization that develops Certbot? We'd like to send you email about our work

    encrypting the web, EFF news, campaigns, and ways to support digital freedom.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    (Y)es/(N)o: N ******* WIR DRÜCKEN N ENTER ******


    Which names would you like to activate HTTPS for?

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    1: meinedomain.de

    2: meet.meinedomain.de

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Select the appropriate numbers separated by commas and/or spaces, or leave input

    blank to select all options shown (Enter 'c' to cancel): ******* WIR DRÜCKEN ENTER ******

    Obtaining a new certificate

    Performing the following challenges:

    http-01 challenge for meinedomain.de

    http-01 challenge for meet.meinedomain.de

    Waiting for verification...

    Cleaning up challenges

    Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/default

    Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/meet.meinedomain.de.conf


    Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    1: No redirect - Make no further changes to the webserver configuration.

    2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for

    new sites, or if you're confident your site works on HTTPS. You can undo this

    change by editing your web server's configuration.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 ******* WIR DRÜCKEN 2 ENTER ******

    Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/default

    Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/meet.meinedomain.de.conf


    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Congratulations! You have successfully enabled https://meinedomain.de and

    https://meet.meinedomain.de


    You should test your configuration at:

    https://www.ssllabs.com/ssltes…yze.html?d=meinedomain.de

    https://www.ssllabs.com/ssltes…tml?d=meet.meinedomain.de

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


    IMPORTANT NOTES:

    - Congratulations! Your certificate and chain have been saved at:

    /etc/letsencrypt/live/meinedomain.de/fullchain.pem

    Your key file has been saved at:

    /etc/letsencrypt/live/meinedomain.de/privkey.pem

    Your cert will expire on 2021-02-22. To obtain a new or tweaked

    version of this certificate in the future, simply run certbot again

    with the "certonly" option. To non-interactively renew *all* of

    your certificates, run "certbot renew"

    - If you like Certbot, please consider supporting our work by:


    Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate

    Donating to EFF: https://eff.org/donate-le


    - jetzt benötigen wir noch die richtige /etc/nginx/sites-avaible/meet.meinedomain.de.conf. Dazu den Inhalt aus der folgenden Anwort in die Datei überschreibend kopieren (meinedomain.de ersetzen mit aktueller Domain):


    - dann prüfen wir nochmal mit nginx -t auf Fehler, ist alles OK laden wird nginx reloaded


    systemctl reload nginx


    systemctl restart nginx


    Die letencrypt Installation hat in der cron einen Eintrag hinterlegt, der die Zertifkatserneuerung intervalmäßig ausführt!


    Jetzt können wir Jitsi mit https://meet.meinedomain.de starten und unter meinedomain.de den Webspace betreiben.


    Es sollte jetzt alles laufen. Dann können wir uns ranmachen an die vielen schönen Modifikationen auf der Seite scheible.it ;)


    Viel Spaß mit Jitsi!!

  • server {

    listen 443 ssl;

    listen [::]:443 ssl;

    server_name meet.meinedomain.de;


    ssl_session_tickets off;


    add_header Strict-Transport-Security "max-age=63072000" always;


    ssl_certificate /etc/letsencrypt/live/meinedomain.de/fullchain.pem; # managed by Certbot

    ssl_certificate_key /etc/letsencrypt/live/meinedomain.de/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


    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;


    gzip on;

    gzip_types text/plain text/css application/javascript application/json image/x-icon application/octet-stream application/wasm;

    gzip_vary on;

    gzip_proxied no-cache no-store private expired auth;

    gzip_min_length 512;


    location = /config.js {

    alias /etc/jitsi/meet/meet.meinedomain.de-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;


    # cache all versioned files

    if ($arg_v) {

    expires 1y;

    }

    }


    # 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;

    }


    # colibri (JVB) websockets for jvb1

    location ~ ^/colibri-ws/default-id/(.*) {

    proxy_pass http://127.0.0.1:9090/colibri-ws/default-id/$1$is_args$args;

    proxy_http_version 1.1;

    proxy_set_header Upgrade $http_upgrade;

    proxy_set_header Connection "upgrade";

    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/meet.meinedomain.de-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;

    }

    }


    server {

    if ($host = meet.meinedomain.de) {

    return 301 https://$host$request_uri;

    } # managed by Certbot



    listen 80;

    listen [::];

    server_name meet.meinedomain.de;

    return 404; # managed by Certbot


    }