Einrichten von Jitsi Meet – kostenlose Konferenzen für alle

Letzte Aktualisierung am 20.07.2022, 14:07:44 Uhr

Aus aktuellen Anlass habe ich mich wie viele andere mit der Open Source Videokonferenz Software Jitsi Meet beschäftigt. Nachstehend eine kurze Beschreibung meiner durchgeführten Schritte bzw. Konfigurationen.

Basis ist in meinem Fall eine virtuelle Maschine mit 2 vCPU, 4GB RAM und 40GB (CX21) Festplattenspeicherplatz. Die Netzwerkanbindung ist 1000Mbit/s und der Server hat eine IPv4 und IPv6 Adresse. Es kann natürlich bei vielen parallelen Räumen und Teilnehmer durch aus Sinn machen, einen dedizierten Server zu nutzen. Ich habe mich für das Betriebssystem Ubuntu Server 20.04 LTS entschieden.

Es empfiehlt sich auf Grund der Architektur einen Webserver als Reverse Proxy einzusetzen. Ich habe mich für den schlanken Nginx entschieden. Selbstverständlich wird auch Apache unterstützt.  Bitte unbedingt  das Ubuntu Package Repository benutzen. Bei Verwendung der Nginx Repository (Stable als auch Mainline) schlug die Installation von Jitsi Meet fehl.

Definition des DNS-Namen, unter dem die Jitsi Installation erreichbar ist. Somit sind in der Regel keine Anpassungen an den weiteren Befehlen notwendig.

export FqdnJitsiServer=meet.wydler.eu
echo $FqdnJitsiServer

Installation von Nginx

apt update && apt upgrade -y && apt autoremove -y && apt autoclean
apt install -y nginx

systemctl start nginx
systemctl enable nginx

Wird keiner von beiden Webservern vorinstalliert, wird im Rahmen der Installation Jitsi automatisch der Webserver Jetty installiert.

Installation Jitsi Meet

Nun geht’s an die eigentliche Installation Jitsi Meet.  Zuerst muss das entsprechend Package Repository eingebunden werden. Denn die Anwendung ist nämlich nicht im Standard Package Repository vorhanden. Unabhängig davon stellen die Repositories des Softwareherstellers fast immer aktuellere Versionen zur Installation bereit.

wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add - 
echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
apt update

Start der Installation der Software und dessen abhängige Pakete.

apt-mark hold jitsi-meet-turnserver
apt install -y jitsi-meet

Im Rahmen der Installation der Software werden zwei wichtige Parameter nacheinander angefragt.

Zuerst muss der FQDN angegeben werden, unter dem die Instanz erreichbar sein wird. Dies setzt natürlich voraus, dass im DNS-Server der A und AAAA-Eintrag korrekt gesetzt sind. Anderenfalls scheitert ein Aufruf im Browser und somit an späterer Stelle auch der Abruf des Zertifikats bei Let’s Encrypt.

Der zweite Parameter ist die Abfrage des SSL Zertifikats. Für die Fertigstellung der Konfiguration reicht erst einmal ein Self-Signed Zertifikat.

Danach werden die verbleibenden Schritte der Installation automatisch durchgeführt.

Im Rahmen der Installation wurde automatisch auch die notwendige Konfiguration für Nginx erstellt. Diese ist unter /etc/nginx/sites-enabled/meet.wydler.eu.conf. Der Dateiname variiert natürlich je nach Installation. Nachstehende Schritte sollen die Sicherheit des Reverse Proxy verbessern, damit gleich von Anfang das Thema halbwegs angegangen ist.

cp /etc/nginx/sites-available/$FqdnJitsiServer.conf /etc/nginx/sites-available/$FqdnJitsiServer.conf.$(date '+%Y-%m-%d_%H-%M-%S')

sed -i -e 24c"\    listen 443 ssl http2;" /etc/nginx/sites-available/$FqdnJitsiServer.conf
sed -i -e 25c"\    listen [::]:443 ssl http2;" /etc/nginx/sites-available/$FqdnJitsiServer.conf
sed -i -e 30c"\    ssl_ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES256-CCM8:DHE-RSA-AES256-CCM:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA";" /etc/nginx/sites-available/$FqdnJitsiServer.conf
sed -i -e 32i"\    ssl_ecdh_curve secp384r1;" /etc/nginx/sites-available/$FqdnJitsiServer.conf

service nginx configtest
service nginx restart

Bevor wir nun das SSL-Zertifikat von Let’s Encrypt abrufen, ändern wir noch die Schlüssel von 2048 Bit auf 4096 Bit.

cp /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh.$(date '+%Y-%m-%d_%H-%M-%S')

sed -i -e 79c"\        --deploy-hook $TURN_HOOK --rsa-key-size 4096" /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
sed -i -e 84c"\        --agree-tos --email $EMAIL --rsa-key-size 4096" /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
sed -i -e 113c"\    --agree-tos --email $EMAIL --rsa-key-size 4096" /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Nun das Bash-Skript ausführen, welches die Entwickler von Jitsi mitliefern. Dieses sorgt dafür, dass neben dem Abruf des Zertifikats auch die Konfiguration bzw. der Webserver neu geladen wird.

/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Gleich nach dem Start kann wird eine E-Mailadresse angegeben. An diese werden wichtige Informationen/Benachrichtigungen für das Zertifikat bzw. Account geschickt.

Es wird bei der Erstnutzung des Skripts das Paket certbot mit seinen Abhängigkeiten installiert. Das kann je nach Systemleistung einen Moment in Anspruch nehmen.

Wichtig ist der Text am Ende der Ausgabe. Nach der Installation wird automatisch versucht das Zertifikat abzurufen.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for meet.wydler.eu
Using the webroot path /usr/share/jitsi-meet for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/meet.wydler.eu/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/meet.wydler.eu/privkey.pem
   Your cert will expire on 2020-06-20. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto 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

Configuring nginx

Somit ist die Grundeinrichtung erfolgreich durchgeführt. Jitsi Meet ist damit über den Browser https://meet.wydler.eu erreichbar.

Anpassung der STUN/TURN-Server

Standardmäßig wird der STUN/TURN – Server nicht für Peer-to-Peer Verbindungen (nicht mehr als zwei Nutzer) genutzt. Ist einer der Teilnehmer in einem geschützten Netzwerk bzw. wird für ausgehenden Datenverkehr ein Regelwerk auf der Firewall gepfelgt, kommt keine stabile Verbindung zu stande.

cp /etc/jitsi/meet/$FqdnJitsiServer-config.js /etc/jitsi/meet/$FqdnJitsiServer-config.js.$(date '+%Y-%m-%d_%H-%M-%S')

sed -i -e 482c"\        enabled: true," /etc/jitsi/meet/$FqdnJitsiServer-config.js
sed -i -e 489c"\        ]," /etc/jitsi/meet/$FqdnJitsiServer-config.js

service jitsi-videobridge2 restart

Die Entwickler haben in der Konfiguration (/etc/jitsi/meet/meet.wydler.eu-config.js) von Jitsi Videobridge einen eigenen STUN Server hinterlegt. In vorherigen Versionen waren dort Server-Adressen von Google hinterlegt. Was natürlich gerade unter dem Aspekt der EU-Datenschutzgrundverordnung definitiv in Frage gestellt werden sollte.

Footer auf der Startseite ergänzen

Gerade in Deutschland ist der Verweis auf die Datenschutzerklärung als auch Impressum eine Pflichtkür. Die verwendete Version der Software bietet leider keine Möglichkeit benutzerdefinierte Text/Links im Footer unterzubringen. Es geht unter der Wendung der DEB Pakete nur über einen Umweg (/usr/share/jitsi-meet/static/welcomePageAdditionalContent.html).

cp /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html.$(date '+%Y-%m-%d_%H-%M-%S')

cat << EOF > /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html
<template id = "welcome-page-additional-content-template">

<!-- 
22.03.2020, 13:17 Uhr / Wydler
https://community.jitsi.org/t/welcome-page-additional-content/17144/5
-->

<!-- CSS Start -->
<style>
    .welcome-page-content {
        display: flex;
        flex-direction: column;
        flex-grow: 1;
        justify-content: space-between;
        position: relative;
        z-index: 1;
        /*margin-top: 35px;*/
        width: 100%
    }
    .welcome-page-content .welcome-footer {
        color: #FFF;
        display: flex;
        padding-bottom: 20px;
        padding-top: 20px;
        width: 100%;
        z-index: 1
    }
    .welcome-page-content .welcome-footer-content a {
        color: #fff !important;
        text-decoration: underline
    }

    .welcome-page-content .welcome-footer-content {
        display: flex;
        justify-content: center;
        width: 100%;
        z-index: 2
    }

    .welcome-page-content .welcome-footer-about {
        display: flex;
        flex-direction: column;
        flex: 1;
        font-size: 14px;
        line-height: 20px;
        text-align: center;
        justify-content: center
    }

    .welcome-page-content .welcome-footer-about:last-child {
        margin-left: 4px
    }
    .welcome-page-content .welcome-footer-about .welcome-footer-main {
        color: #B02323;
        font-weight: bold;
        font-size: 120%;
        animation: blinker 4s step-start infinite;
    }
    @keyframes blinker {
        50% {
            opacity: 0;
        }
    }
</style>
<!-- CSS Ende -->

<!-- HTML Anfang -->
<div class="welcome-page-content">
  <div class="welcome-footer">
    <div class="welcome-footer-content">
      <div class="welcome-footer-about">
        <div class="welcome-footer-main">
          Am 25.04.2020 finden von 12:00 bis 12:30 Uhr Wartungsarbeiten statt.
        </div>
        <div>
          <a href="https://play.google.com/store/apps/details?id=org.jitsi.meet" rel="noopener" target="_blank">Google Play</a> |
          <a href="https://apps.apple.com/de/app/jitsi-meet/id1165103905" rel="noopener" target="_blank">Apple Appstore</a> |
          <a href="https://www.domain.de/datenschutz/" rel="noopener" target="_blank">Datenschutzerklärung</a> |
          <a href="https://www.domain.de/impressum/" rel="noopener" target="_blank">Impressum</a>
        </div>
      </div>
    </div>
  </div>
</div>

<!-- HTML Ende -->
</template>
EOF

Anschließend muss Jitsi Meet noch mitgeteilt werden, dass die Datei eingebunden werden soll.

cp /usr/share/jitsi-meet/interface_config.js /usr/share/jitsi-meet/interface_config.js.$(date '+%Y-%m-%d_%H-%M-%S')
sed -i -e 96c"\    DISPLAY_WELCOME_FOOTER: false," /usr/share/jitsi-meet/interface_config.js
sed -i -e 98c"\    DISPLAY_WELCOME_PAGE_CONTENT: true," /usr/share/jitsi-meet/interface_config.js

Das Ergebnis als Screenshot.

Neben den Pflichtangaben habe ich z.B. noch die Links zu dem App bei Apple und Google verlinkt. Es bietet sich natürlich auch an ein FAQ oder eine Kurzanleitung zu verlinken. Damit auch nicht affine Personen nach wenigen Minuten startklar sind.

Diverse Anpassungen

Das Favicon der Webseite ist direkt im Verzeichnis „/usr/share/jitsi-meet/images/“ zu finden. Ich habe das neue Favicon via SCP auf von meinem Rechner auf dem Server kopiert. Danach mit dem „mv“ die Originaldatei umbenannt und mit demselben Befehl die neue Datei in das Zielverzeichnis verschoben.

Das Logo links oben kann über die Konfigurationsdatei ausgeblendet werden. Diese heißt „interface_config.js“ und liegt im Verzeichnis „/usr/share/jitsi-meet“. Dazu folgende Befehle ausführen:

cp /usr/share/jitsi-meet/interface_config.js /usr/share/jitsi-meet/interface_config.js.$(date '+%Y-%m-%d_%H-%M-%S')

sed -i -e 195c"\    SHOW_JITSI_WATERMARK: false," /usr/share/jitsi-meet/interface_config.js

Aktuell gibt es wohl einen Bug. Es reicht leider nicht aus, die beiden Parameter auf false zu setzen. Daher passe ich den Dateinamen des Logos an, der nicht existiert.

sed -i -e 56c"\    DEFAULT_LOGO_URL: 'images/watermark.svg.disable'," /usr/share/jitsi-meet/interface_config.js
sed -i -e 58c"\    DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg.disable'," /usr/share/jitsi-meet/interface_config.js

Der Titel im Browserfenster ist standardmäßig Jitsi Meet. Das ist natürlich gerade bei Unternehmen/Behörden ein Wunsch, dem Service einen eigenen Namen zugeben.

cp /usr/share/jitsi-meet/interface_config.js /usr/share/jitsi-meet/interface_config.js.$(date '+%Y-%m-%d_%H-%M-%S')
sed -i -e 12c"\    APP_NAME: 'Webconference Wydler'," /usr/share/jitsi-meet/interface_config.js
sed -i -e 158c"\    NATIVE_APP_NAME: 'Webconference Wydler'," /usr/share/jitsi-meet/interface_config.js

Wer möchte kann erzwingen, dass jeder Teilnehmer beim Betreten eines Raums einen Namen eingeben muss. Somit hat man in der Regel schnell ein Überblick, wer schon da ist und wer wer ist. Standardmäßig heißen die Teilnehmer „Fellow Jitster“.

cp /etc/jitsi/meet/$FqdnJitsiServer-config.js /etc/jitsi/meet/$FqdnJitsiServer-config.js.$(date '+%Y-%m-%d_%H-%M-%S')
sed -i -e 354c"\    requireDisplayName: true," /etc/jitsi/meet/$FqdnJitsiServer-config.js

cp /usr/share/jitsi-meet/interface_config.js /usr/share/jitsi-meet/interface_config.js.$(date '+%Y-%m-%d_%H-%M-%S')
sed -i -e 55c"\    DEFAULT_LOCAL_DISPLAY_NAME: \'Ich\'," /usr/share/jitsi-meet/interface_config.js
sed -i -e 57c"\    DEFAULT_REMOTE_DISPLAY_NAME: \'Unbekannt\'," /usr/share/jitsi-meet/interface_config.js

Falls es noch ein bisschen Datenschutz sein darf, so können inzwischen auch Verbindungen zu anderen Servern (z.B. Abruf von Avatars u.ä. unterbunden werden.

cp /etc/jitsi/meet/$FqdnJitsiServer-config.js /etc/jitsi/meet/$FqdnJitsiServer-config.js.$(date '+%Y-%m-%d_%H-%M-%S')
sed -i -e 469c"\    disableThirdPartyRequests: true," /etc/jitsi/meet/$FqdnJitsiServer-config.js

Beim betreten der Konferenz Ton und Bild standardmäßig deaktivieren.

cp /etc/jitsi/meet/$FqdnJitsiServer-config.js /etc/jitsi/meet/$FqdnJitsiServer-config.js.$(date '+%Y-%m-%d_%H-%M-%S')

sed -i -e 114c"\    startWithAudioMuted: true," /etc/jitsi/meet/$FqdnJitsiServer-config.js
sed -i -e 165c"\    startWithVideoMuted: true," /etc/jitsi/meet/$FqdnJitsiServer-config.js

Jitsi Meet nutzt standardmäßig keine Cookies. Allerdings gibt es einen lokalen Speicher für die Anzeige des Verlaufs der Konferenzen auf dem Client. Diese Option kann in inzwischen ebenfalls standardmäßig deaktiviert weden.

cp /etc/jitsi/meet/$FqdnJitsiServer-config.js /etc/jitsi/meet/$FqdnJitsiServer-config.js.$(date '+%Y-%m-%d_%H-%M-%S')

sed -i -e 639c"\    doNotStoreRoom: true," /etc/jitsi/meet/$FqdnJitsiServer-config.js

Der Titel und Subtitel auf der Startseite können ebenfalls angepasst werden.

cp /usr/share/jitsi-meet/lang/main-de.json /usr/share/jitsi-meet/lang/main-de.json.$(date '+%Y-%m-%d_%H-%M-%S')

sed -i -e 914c"\        \"title\": \"Sichere, voll funktionale und komplett kostenlose Videokonferenzen\"," /usr/share/jitsi-meet/lang/main-de.json
sed -i -e 915i"\        \"headerTitle\": \"Webconference Wydler\"," /usr/share/jitsi-meet/lang/main-de.json
sed -i -e 916i"\        \"headerSubtitle\": \"Sichere, funktionale und  datenschutzfreundliche Videokonferenzen\"" /usr/share/jitsi-meet/lang/main-de.json

Einstellungen deaktivieren

Standardmäßig sind im jedem Raum eine Fülle von Funktionen nutzbar.

Die einzelnen Funktionen können selbstverständlich einzeln deaktiviert werden. Die dazu passenden Parameter findet man in der Datei /usr/share/jitsi-meet/interface_config.js, ab Zeile 204.

Name Parameter
Vollbildmodus fullscreen
Livestream starten livestreaming
Aufnahme starten recording
YouTube-Video teilen sharedvideo
Sprecherstatistik stats
Konferenz einbetten embedmeeting
Tasenkürzel anzeigen shortcuts

Firewall

Last but not Least kommen wir nochmals auf den Punkt Sicherheit zurück.  Selbstverständlich darf die Grundkonfiguration einer Firewall grundsätzlich nicht fehlen.  Ich greife ich hier auf UFW zurück. Diese ist inzwischen standardmäßig bei der eingesetzten Distribution und Version standardmäßig dabei.

ufw allow ssh
ufw allow http
ufw allow https
ufw allow in 10000/udp

echo y | ufw enable
ufw status

Damit ist das System für einen produktiven Einsatz gerüstet. 🙂

Apps für Smartphone/Tablet

Selbstverständlich steht eine App sowohl für Apple als auch Google im jeweiligen Store kostenlos zur Verfügung.

Anpassung von systemd

Standardbereitstellungen auf Systemen, die systemd verwenden, haben niedrige Standardwerte für maximale Prozesse und geöffnete Dateien. Wenn die verwendete Bridge eine höhere Teilnehmerzahl erwartet, müssen die Standardwerte angepasst werden.

Die Werte können in der Datei /etc/systemd/system.conf angepasst werden.

cp /etc/systemd/system.conf /etc/systemd/system.conf.$(date '+%Y-%m-%d_%H-%M-%S')

sed -i 's/#DefaultLimitNOFILE=1024:524288/DefaultLimitNOFILE=65000/g' /etc/systemd/system.conf
sed -i 's/#DefaultLimitNPROC=/DefaultLimitNPROC=65000/g' /etc/systemd/system.conf
sed -i 's/#DefaultTasksMax=/DefaultTasksMax=65000/g' /etc/systemd/system.conf

systemctl daemon-reload
systemctl restart jitsi-videobridge2

systemctl show --property DefaultLimitNPROC
systemctl show --property DefaultLimitNOFILE
systemctl show --property DefaultTasksMax

Natürlich muss die Änderung auch geprüft werden, ob diese angewendet werden.

cat /proc/`cat /var/run/jitsi-videobridge/jitsi-videobridge.pid`/limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             65000                65000                processes
Max open files            65000                65000                files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       7621                 7621                 signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

Nach dem Neustart der Jitsi Videobridge sind maximal 65.000 Tasks möglich.

systemctl status jitsi-videobridge2
● jitsi-videobridge2.service - Jitsi Videobridge
     Loaded: loaded (/lib/systemd/system/jitsi-videobridge2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-12-27 14:11:15 CET; 1min 50s ago
    Process: 14699 ExecStartPost=/bin/bash -c echo $MAINPID > /var/run/jitsi-videobridge/jitsi-videobridge.pid (code=exited, status=0/SUCCESS)
   Main PID: 14698 (java)
      Tasks: 48 (limit: 65000)
     Memory: 149.4M
     CGroup: /system.slice/jitsi-videobridge2.service
             └─14698 java -Xmx3072m -XX:+UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Djdk.tls.ephemeralDHKeySize=2048 -Dconfig.file=/etc/jitsi/videobridge/jvb.conf -Dnet.java.sip.communicator.SC_HOME_DIR_LO>

Dec 27 14:11:15 meet systemd[1]: Starting Jitsi Videobridge...
Dec 27 14:11:15 meet systemd[1]: Started Jitsi Videobridge.

Konferenzräume absichern

Standardmäßig kann nach der Installation und Konfiguration von Jitsi Meet jeder Besucher/Gast einen Konferenzraum starten. Das ist gerade auf der Hinsicht der Moderationsrechte mit mehreren Teilnehmer oft problematisch. Denn der erste Teilnehmern im Konferenzraum erhält automatisch nit notwendigen Rechte, wenn weitere Teilnehmer denselben Raum betreten. Des Weiteren ist durch die freie Nutzung auch schnell eine rege Überlastung durch Dritte möglich, die primär nicht für die Nutzung des Systems vorgesehen sind und waren.

Aus diesem Grund gibt es eine Funktion mit den Namen „Secure Domain„, mit der eine freie Nutzung unterbunden wird. Nach Aktivierung können Konferenzräume ausschließlich mit Benutzernamen und Passwort erstellt werden. Folgende Änderungen sind für die Nutzung der Funktion notwendig.

Anpassung von prosody.

cp /etc/prosody/conf.avail/$FqdnJitsiServer.cfg.lua /etc/prosody/conf.avail/$FqdnJitsiServer.cfg.lua.$(date '+%Y-%m-%d_%H-%M-%S')
sed -i -e 25c"\    -- authentication = \"anonymous\"" /etc/prosody/conf.avail/$FqdnJitsiServer.cfg.lua
sed -i -e 26i"\    authentication = \"internal_hashed\"" /etc/prosody/conf.avail/$FqdnJitsiServer.cfg.lua
sed -i -e 82i"\    authentication = \"internal_hashed\"" /etc/prosody/conf.avail/$FqdnJitsiServer.cfg.lua

cat << EOF >> /etc/prosody/conf.avail/$FqdnJitsiServer.cfg.lua
VirtualHost "guest.$FqdnJitsiServer"
    modules_enabled = {
        "bosh";
        "pubsub";
        "ping"; -- Enable mod_ping
        "speakerstats";
        "turncredentials";
        "conference_duration";
        "muc_lobby_rooms";
    }

    authentication = "anonymous"
    c2s_require_encryption = false
EOF

Anpassung von jicofo.

cp /etc/jitsi/jicofo/sip-communicator.properties /etc/jitsi/jicofo/sip-communicator.properties.$(date '+%Y-%m-%d_%H-%M-%S')

cat << EOF >> /etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.auth.URL=XMPP:$FqdnJitsiServer
EOF

Anpassung von Jtisi Meet.

cp /etc/jitsi/meet/$FqdnJitsiServer-config.js /etc/jitsi/meet/$FqdnJitsiServer-config.js.$(date '+%Y-%m-%d_%H-%M-%S')
sed -i -e 12c"\        anonymousdomain: 'guest.$FqdnJitsiServer'," /etc/jitsi/meet/$FqdnJitsiServer-config.js

Abschlißend alle  beteiltigen Dienste neu starten.

service prosody restart
service jicofo restart
service jitsi-videobridge2 restart

Versucht man danach einen Konferenzraum anzulegen, erhält die Person folgenden Hinweis.

Wer  einen Benutzernamen und ein Passwort hat, klickt auf „Ich bin der Organisator“. Es erscheint folgender Dialog:

Sind die Zugangsdaten korrekt, wird der Konferenzraum gestartet. Andere Teilnehmer sehen weiterhin den ersten Dialog bis eine Berechtige Person den Raum gestartet hat. Ist da der Fall, werden alle warteten Teilnehmer automatisch in den Raum aufgenommen.

Die Benutzerverwaltung kann bisher ausschließlich über die Konsole bzw. SSH erfolgen. Für die Verwaltung der Benutzerkonten habe ich zwei kl. Skripte geschrieben. Zum Einem um die Tipparbeit zu sparen. Zum anderen sollen Zufallspasswörter erstellt werden.

Benutzer anlegen

cat << EOF > /root/jitsi-meet-benutzer-anlegen.sh
#!/bin/bash
 
# Überprüfe, ob ein Argument übergeben wurde
if [ $# -eq 0 ]
  then
    echo "Kein Benutzername übergeben!"
    exit 1;
fi
 
username=\$1
password=$(openssl rand -hex 5)
 
prosodyctl register $username $FqdnJitsiServer $password
 
echo "Benutzername: $username"
echo "Passwort: $password"
EOF
chmod 700 /root/jitsi-meet-benutzer-anlegen.sh

Als einzigster Übergabeparameter wird ein Benutzernamen erwartet. Der DNS-Namen für Jitsi wird über die Variable $FqdnJitsiServer  automatisch übernommen.

root@meet:~# /root/jitsi-meet-benutzer-anlegen.sh test1
Benutzername: test1
Passwort: 4758388e1e
root@meet:~#

Die Zugangsdaten sind sofort aktiv und könne genutzt werden.

Benutzer löschen

cat << EOF > /root/jitsi-meet-benutzer-loeschen.sh
#!/bin/bash
 
# Überprüfe, ob ein Argument übergeben wurde
if [ $# -eq 0 ]
  then
    echo "Kein Benutzername übergeben!"
    exit 1;
fi
 
username=\$1
 
prosodyctl unregister $username $FqdnJitsiServer
EOF
chmod 700 /root/jitsi-meet-benutzer-loeschen.sh

Als einzigster Übergabeparameter wird ein Benutzernamen erwartet. Der DNS-Namen für Jitsi wird über die Variable $FqdnJitsiServer  automatisch übernommen.

root@meet:~# /root/jitsi-meet-benutzer-loeschen.sh test1
root@meet:~#

Wird keine Fehlermeldung ausgegeben, wurde der Benutzer erfolgreich gelöscht.

IPv6 Problematik

Für die Deaktivierung von IPv6 muss man den Namen der Netzwerkkarte(n) wissen.

ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 96:00:00:48:3b:ec brd ff:ff:ff:ff:ff:ff

Den Namen der Netzwerkkarte in Zeile 9 auf eth0  ändern und anschließend via Copy & Paste ausführen:

cp /etc/sysctl.conf /etc/sysctl.conf.$(date '+%Y-%m-%d_%H-%M-%S')
cat << EOF >> /etc/sysctl.conf
 
 
# Jitsi Meet - Bug - IPv4 Address on udp6 protocol
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1 
EOF

Abschließend die Änderungen neu laden:

sysctl -p

Teilnehmer sehen sich nicht

Wenn Smartphones/Tablets mit älteren Betriebssystemen (z.B. Android 7) zum Einsatz kommen, haben mich verschiedene Meldungen erreicht, dass die Teilnehmer zwar den selben Raum betreten, aber dort alleine sind. Nach diversen Tests mit Unterstützung von Dritten und betroffenen, meien ich eine Lösung dafür gefunden zu haben. Abhilfe schafft die Aktivierung von TLS 1.0 und TLS 1.1 in der Konfiguration vom Webserver Nginx für Jitsi Meet.

cp /etc/nginx/sites-available/$FqdnJitsiServer.conf /etc/nginx/sites-available/$FqdnJitsiServer.conf.$(date '+%Y-%m-%d_%H-%M-%S')
sed -i -e 25c"\    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;" /etc/nginx/sites-available/$FqdnJitsiServer.conf

service nginx configtest
service nginx reload

Statistik mit Hilfe von Grafana

Der nachstehende Abschnitt ist auf Basis des Artikels Jitsi Meet Statistik als Grafana Dashboard von Tobias Scheible entstanden. Grund dafür ist, dass man ein gutes Rat nicht neu erfinden muss. Ich habe die einzelnen Abschnitte an Ubuntu 20.04 LTS angepasst.

Aktivieren der Statistikfunktion in Jitsi Meet.

cp /etc/jitsi/videobridge/config /etc/jitsi/videobridge/config.$(date '+%Y-%m-%d_%H-%M-%S')

sed -i -e 16c"\JVB_OPTS=\"--apis=rest,xmpp\"" /etc/jitsi/videobridge/config
cp /etc/jitsi/videobridge/sip-communicator.properties /etc/jitsi/videobridge/sip-communicator.properties.$(date '+%Y-%m-%d_%H-%M-%S')

sed -i -e 3c"org.jitsi.videobridge.ENABLE_STATISTICS=true" /etc/jitsi/videobridge/sip-communicator.properties
sed -i -e 4c"org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri" /etc/jitsi/videobridge/sip-communicator.properties

service jitsi-videobridge2 restart

Installation von InfluxDB

wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -  
source /etc/lsb-release
echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
apt update && apt install influxdb -y 

systemctl enable --now influxdb 
systemctl status influxdb

Installation von Telegraf

apt install telegraf -y

Anpassung der Standardkonfiguration von Telegraf.

mv /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.original

cat << EOF > /etc/telegraf/telegraf.conf
# Global tags can be specified here in key="value" format.
[global_tags]

# Configuration for telegraf agent
[agent]
    interval = "10s"
    debug = false
    hostname = "$FqdnJitsiServer"
    round_interval = true
    flush_interval = "10s"
    flush_jitter = "0s"
    collection_jitter = "0s"
    metric_batch_size = 1000
    metric_buffer_limit = 10000
    quiet = false
    logfile = ""
    omit_hostname = false
EOF

Konfiguration für den Abruf der Daten von Jitsi Meet.

cat << EOF > /etc/telegraf/telegraf.d/jitsi.conf
###############################################################################
#                                  INPUTS                                     #
###############################################################################
[[inputs.http]]  
    name_override = "jitsi_stats"

    urls = [
    "http://localhost:8080/colibri/stats"
    ]

data_format = "json"

###############################################################################
#                                  OUTPUTS                                    #
###############################################################################
[[outputs.influxdb]]  
    urls = ["http://localhost:8086"]  
    database = "jitsi"  
    timeout = "0s"  
    retention_policy = ""  
EOF

Konfiguration von Telegraf für die Abfrage von System Ressourcen.

cat << EOF > /etc/telegraf/telegraf.d/system.conf
###############################################################################
#                                  INPUTS                                     #
###############################################################################
[[inputs.cpu]]
    ## Whether to report per-cpu stats or not
    ## percpu = true
 
    ## Whether to report total system cpu stats or not
    totalcpu = true
      
[[inputs.mem]]

###############################################################################
#                                  OUTPUTS                                    #
###############################################################################
[[outputs.influxdb]]
    urls = ["http://localhost:8086"]
    database = "jitsi"
    timeout = "0s"
    retention_policy = ""

EOF

Telegraf Dienst aktivieren und starten.

systemctl enable --now telegraf  
systemctl status telegraf
service telegraf restart

Installation von Grafana

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
apt update
apt install grafana -y

systemctl enable --now grafana-server  
systemctl status grafana-server 

service grafana-server restart

Anpassung der Konfiguration für Jitsi Meet (Let’s Encrypt, Berechtigungen, etc…).

cp /etc/grafana/grafana.ini /etc/grafana/grafana.ini.$(date '+%Y-%m-%d_%H-%M-%S')

sed -i -e 32c"protocol = https" /etc/grafana/grafana.ini
sed -i -e 64c"cert_file = /etc/letsencrypt/live/$FqdnJitsiServer/cert.pem" /etc/grafana/grafana.ini
sed -i -e 65c"cert_key = /etc/letsencrypt/live/$FqdnJitsiServer/privkey.pem" /etc/grafana/grafana.ini

groupadd sslcerts
usermod -G sslcerts -a grafana
chown -R root:sslcerts /etc/letsencrypt/
chmod 750 /etc/letsencrypt/live/$FqdnJitsiServer
chmod 640 /etc/letsencrypt/live/$FqdnJitsiServer/*

chmod 755 /etc/letsencrypt/live
chmod 755 /etc/letsencrypt/archive

Den Port 3000 in der Firewall freischalten.

ufw allow 3000/tcp

Anpassung der Konfiguration von Grafana für den Zugriff ohne Benutzerkonto.

cp /etc/grafana/grafana.ini /etc/grafana/grafana.ini.$(date '+%Y-%m-%d_%H-%M-%S')
sed -i -e 336c"enabled = true" /etc/grafana/grafana.ini
sed -i -e 339c"org_name = Gast" /etc/grafana/grafana.ini
sed -i -e 343c"org_role = Viewer" /etc/grafana/grafana.ini
sed -i -e 345c"hide_version = true" /etc/grafana/grafana.ini

service grafana-server restart

Nun kann die Weboberfläche von Grafana über https://meet.wydler.eu:3000 aufgerufen werden.

Die Standardzugangsdaten lauten wie folgt: Email/username=admin, Password=admin.

Falls das Dashboard öffentlich zugänglich sein soll, muss dazu die passende Organisation erstellt werden. Dazu im Navigationsbereich (linke Seite) das Menü Server Admin -> Orgs anklicken.

Zuerst muss die Datenquelle, in diesen Fall InfluxDB Grafana bekannt gemacht werden. Dazu im Navigationsbereich (linke Seite) das Menü Configuration -> Data Sources auswählen.

Über New org kann eine neue Organisation angelegt werden.

Als Name der neue Organisation ist „Gast“. Diese haben ich mehr oder weniger bereits in der Konfiguration unter „Anpassung der Konfiguration von Grafana für den Zugriff ohne Benutzerkonto.“ bereits festgelegt.

Damit wird auch automatisch die Organisation gewechselt.

Nun können die eigentlichn Konfiguration erfolgen. Zuerst muss Grafana die Datenquelle, in diesen Fall InfluxDB bekannt gemacht werden. Dazu auf in der Navigation Configuration -> Data Sources klicken.

Danach kann das Dashboard erstellt und konfiguiert werden. Dazu links im Navigationsbereich Dashboards -> Manage anklicken.

Auf Basis von Tobias Scheible ist meine Vorlage für das Dashboard enstanden. Ich habe ein paar kleine Änderungen vorgenommen, damit Prozessor und Arbeitsspeicher Auslastung ausgelesen wird: >> Download <<. Diese herunterladen und auf dem Rechner zwischenspeichern.

Die JSON Datei muss anschließend in Grafana über die markierte Schaltfläche wieder hochgeladen werden.

Optional kann nun noch der Name das Dashboards sowie Speicherort (=Folder) geändert werden. Abschließend wird mit „Import“ das neue Dashboard angelegt.

Fertig.


Die ein oder andere Anpassung werde ich sicherlich noch nachreichen.Weitere Ideen/Verbesserungsvorschläge sind natürlich gerne gesehen.  Das Ganze soll mit der Zeit wachsen.

Abonnieren
Benachrichtige mich bei
60 Comments
neueste
älteste
Inline Feedbacks
View all comments
Frank
29.06.2021 18:08

Hallo Daniel, liebe Mitlesenden, heute mal eine Frage zum Thema eine Jitsi-Instanz unter 2 bzw. mehreren unterschiedlichen Domains. Hat damit jemand von Euch Erfahrung? Nach einigen Threads im Netz habe ich es hinbekommen, dass ich meine Jitsi-Instanz mit 2 unterschiedlichen Domains aufrufen kann, xx.server1.de und xx.server2.de.Nun das große ABER, über die erste Subdomain xx.server1.de funktioniert alles prima. Über die nachträglich hinzugefügte Subdomain xx.server2.de (eine Weiterleitung von einer anderen Adresse) kann ich meinen Jitsi-Server zwar aufrufen und komme auch in ein Meeting, auch ins selbe wie über xx.server1.de, dort funktioniert aber weder Kamera noch Mikro. Hat hier vielleicht jemand bereits Erfahrungen… Weiterlesen »

Stefan
02.06.2021 22:12

Hallo, gute Anleitung mit vielen Tipps. Meine Frage: Ich habe mir bei einem Anbieter einen Namen, sagen wir mal http://www.video_hallihallo.de angelegt und von dort auf meinen Linux-Jitisserver per DNS verwiesen bei einem anderen Anbieter. Klappt auch wunderbar. Nun möchte ich eine zusätzliche einfache statische html-Seite haben (z.B. Impressum), die auf dem gleichen Server wie jitis läuft und dann z. B. im Footer darauf verlinken. Ist es möglich, auf dem gleichen Server, auf dem jitsi installiert ist, eine statische html Seite anzulegen oder ist das Quatsch und ich muss mir noch einen eigenen dazugehörigen Webauftriitt zulegen auf einem zusätzlichen Server? Freue… Weiterlesen »

Stefan
Reply to  Daniel
05.06.2021 18:25

Hallo Daniel,
vielen Dank, genau das habe ich gesucht, funktioniert!
Grüße
Stefan

Klaus
21.05.2021 13:10

Ich habe auch die Probleme, dass die Nutzer in unterschiedlichen Netzen kein Video-Bild sehen. Man/Fraz kann den gleichen Raum betreten und die Sitzungen werden auch angezeigt, jedoch kein Bild übertragen. Sind sie im gleichen Netz, läuft die Videoübertragung. Den Hinweis auf TLSv1 und TLSv1.1 habe ich ausprobiert, jedoch ist das Problem nicht behoben. Kennt jemand eine Lösung?

Frank
09.03.2021 20:53

Hallo Daniel,
ich habe meine Jitsi-Instanz anhand deiner Anleitung schnell aufsetzen können. Vielen Dank für die Anleitung! Kennst du folgendes Problem, seit kurzem passiert es, dass sich bei Einwahl eines dritten Teilnehmers die bereits vorhandenen Teilnehmer weder sehen noch hören können. Wenn einer dann wieder rausgeht, sehen und hören die beiden sich wieder. Was habe ich falsch konfiguriert? Kennt das Problem vielleicht jemand?

Ldope
Reply to  Frank
11.03.2021 11:30

Wenn man nur zu zweit ist, bauen die Clients eine p2p Verbindung auf, sprich dein Server wird nur für das Interface benutzt. Erst ab 3 Personen gehen die Daten über deinen Server. Das ist normal, wenn du es nicht in der Config geändert hast. Ich vermute den Fehler bei dir in der ****-config.js

Frank
Reply to  Ldope
11.03.2021 20:11

Ok, aber was soll dort verkehrt sein?

Frank
Reply to  Daniel
14.03.2021 13:32

Hallo Daniel,
die hinterlegten in der Standardkonfiguration.
LG Frank

Frank
Reply to  Daniel
29.06.2021 18:55

Danke Daniel,

mittlerweile scheint es zu funktionieren…

Gruß
Frank

Dennis
25.02.2021 02:24

Vielen Vielen Dank für diese tolle Anleitung! Vor allem für die Anleitung zur Absicherung. Leider habe ich da ein kleines Problem mit. Wenn ich nach Ihrer Anleitung vorgehe und dann versuche einen Benutzer anzulegen kommt: /root/jitsi-meet-benutzer-anlegen.sh test1 /root/jitsi-meet-benutzer-anlegen.sh: line 9: syntax error near unexpected token (' /root/jitsi-meet-benutzer-anlegen.sh: line 9:password=\$(openssl rand -hex 5)' Vielleicht haben Sie da eine Idee? Und kann es sein das es im Code von Ihnen ein Tippfehler gibt? Überprüfe, ob ein Argument übergeben wurdeif [ \$# -eq 0 ] then echo "Kein Benutzername übergeben!" exit 1; fi username=\$1 password=\$(openssl rand -hex 5) Müsste es statt FI nicht… Weiterlesen »

Arnold
08.02.2021 17:16

Gibt es eine einfache Möglichkeit (evtl. per GUI) die Anzahl aktiver Konferenzen, die der Teilnehmer, Traffic, CPU, RAM usw. zu monitoren?
Vielen Dank,
Arnold

Ulrich Jahnke
24.01.2021 08:30

Vielen Dank für diese tolle Anleitung! Ich hätte noch eine Frage: Könnte man gleichzeitig Jitsi und einen Streaming-Server auf dem selben Host installieren, um eigene Videos zu zeigen? Zum Umlenken des Streams habe ich das hier gefunden: https://community.jitsi.org/t/stream-to-any-or-multiple-rtmp-destinations-record-simultaneously/51943 . Wäre sowas möglich oder braucht man da einen besonders leistungsfähigen Server?

Patrick
10.01.2021 18:43

Vielen Dank für die super Anleitung. Habe Sie sogleich umgesetzt. Funktioniert einwandfrei, solange ich keine Secure Domain einsetze. Wenn die Änderung für die Secure Domain einfliessen lasse, bekomme ich bei Erstellung eines neuen Raumes die Credentials angezeigt und wenn ich die richtige angebe also username und passwort dann will er die einfach nicht nehmen und es kommt zu einer Schleife, indem ich immer wieder die Berechtigung eingeben soll. Ich komme nicht über „Warten auf Organisator“ hinaus.

Hat da jemand eine Idee

Patrick
Reply to  Daniel
13.01.2021 13:28

Ja habe ich. Ich probiere es nochmal von vorne…

Detlef Köppel
Reply to  Patrick
22.02.2021 17:16

Bitte im Ordner /var/lib/prosody schauen ob der Ordner auth.deine-Domain.de vorhanden ist.
Nun einen neuen Ordner /deine-Domain.de anlegen
Jetzt noch den ordner accounts anlegen. /var/lib/prosody/deine-Domain.de/accounts wechseln und die Datei yxz.dat die dein Passwd enthält reinkopieren. im Abschluß noch chmod 777 /var/lib/prosody/deine-Domain.de auch unterordner und Datein.
Dann klappt es .

Philipp
08.01.2021 09:56

Vielen Dank für die tolle Anleitung! Hat alles exakt so funktioniert wie beschrieben! Lediglich der Schnee auf dieser Seite hat mich gestört, aber das liegt wohl an meinem inneren Grinch 😀

DlzG

RaHa
27.10.2020 19:19
  • Danke für die tolle Anleitung.
  • Ich würde einen Root-Server mit 6 Kernen nur für Jitsi nutzen, kann hier auch Coturn auf diesen genutzt werden oder sollte Coturn grundsätzlich auf einem anderen Server laufen?
Gert
23.06.2020 21:24

TOP
danke für die coole Anleitung .Habe es mit Ubuntu 20.04 installiert – funzt !

xycghyghygh
15.06.2020 04:24

Würde gerne Additional_Content kopieren, es kommt aber nur unformatierter Schraddelkram rüber.
 
Gruß Peter Büttner

Anleitungen um Jitsi-Meet auf eignem Server aufzusetzen – CBM-Blog
09.06.2020 00:48

[…] Anleitung von blog.wydler.eu […]

Thomas
08.06.2020 18:49

Hallo,
vielen Dank für die Anleitung. Wir haben schon einige Konferenzen abgehalten. Alles hat soweit funktioniert.
Ich hatte meine Seite durch einen Login auf dem Webserver geschützt. Jetzt wollte ich das weiter machen und nur das neu erstellen von Meetingräumen mit Usernamen und PW schützen.
 
Leider funktioniert dies nicht. Wenn ich prosody, jitsi-videobridge2 und nginx start ist alles in Ordnung mit dem Start.
 
Sobald ich aber jicofo starte oder neu starte wird die sip-communicator.properties gelöscht.
 
Ich gehe davon aus, das dadurch nicht zu einem Login aufgefordert wird.
 
Hatte jemand schon dieses Problem?
 
Bin für jede Hilfe dankbar.
 
Gruss
 
Thomas
 
 

Frank
06.06.2020 11:34

Hallo, vielen Dank für die super Anleitung. Ich habe dabei aber noch ein Problem, nach dem ergänzen des Footers auf der Startseite zeigt mein Jitsi nur noch eine graue Webseite an. Was habe ich falsch gemacht. Ich muss zugeben, ich bin nicht der größte Ubuntuuser und auch Webadmin. Vielleicht ist es ja nur eine Kleinigkeit, die ich übersehen habe?
 
Vielen Dank für deine/eure Hilfe..
Frank

Frank
Reply to  Daniel
09.08.2020 16:35

Hallo Daniel,
sorry, dass ich mich so lange nicht gemeldet habe. Ich präzisiere das mal. Der Fehler mit der grauen Webseite taucht erst auf, wenn ich die Änderungen zur Anzeige des Titels im Browserfenster ändere. Sobald ich dort nach deiner Anleitung unter dem Punkt „Diverse Änderungen“ den Titel ändere, sehe ich meine Startseite nur noch grau. Vielleicht hast du ja einen Tipp, was ich falsch gemacht haben könnte. Ich habe lediglich den Titel innerhalb der “ geändert, ansonsten alles übernommen.

Vielen Dank nochmal und dies ist wirklich eine super Anleitung!!
Grüße,
Frank

Frank
Reply to  Daniel
10.08.2020 21:07

Hallo Daniel,
ich hoffe, ich gehe dir nicht auf die Nerven! Ausschließen kann ich nicht, dass sich irgendwo ein Fehler eingeschlichen hat. Aber, eigentlich habe ich alles aus den Codeboxen kopiert. Mal eine Frage, ist es egal wo die Codezeilen in der interface_config.js stehen? Bei mir stehen sie unter dem Eintrag CONNECTION_INDICATOR_AUTO_HIDE_ENABLED: true,. Liegt da vielleicht ein Fehler?

Ansonsten danke ich dir sehr für deine Hilfe, ohne deine Anleitung hätte ich bisher keine Jitsi-Instanz zum Laufen gebracht.

Grüße,
Frank

Frank
Reply to  Frank
11.08.2020 17:22

Zur Antwort noch kurz, die Caches der Browser habe ich jeweils gelöscht. Getestet habe ich es mit Firefox, Chrome und Edge.

default
01.06.2020 20:43

Ich finde es sehr fragwürdig, wenn hier bei angeblichen Probleme mit IPv6 gleich wieder die „Brechstange“ rausgeholt wird und es vorsorglich systemweit deaktiviert wird.   Erstens gibt es laut den verlinkten Quellen gar kein Problem (nur falsch interpretierte Anzeigen) und zweitens gibt es eigentlich immer Möglichkeiten, zu steuern, auf welchen Adressen die Videobridge oder andere Dienste horchen.   Drittens und vielleicht am wichtigsten: Gerade bei Echtzeitanwendungen wie Videokonferenzen bietet IPv6 schon heute potentiell große Vorteile, denn das muntere herumgeNATte bei IPv4 geht deutlich auf Kosten der Performance. Schon vor Jahren konnte Facebook in Studien zeigen, dass durch den Einsatz von… Weiterlesen »

Klaus
15.05.2020 09:16

Moin, vielen dank für die gute Anleitung. Leider habe ich mit der Absicherung der Konferenzräume mittels Secure Domain keinen Erfolg. Ich habe die Anleitung eins zu eins so übernommen. Nachdem dem Starten der genannten Dienste wird die Jitsi Meet Seite nicht mehr angezeigt. Ich erhalte keine Fehlermeldung, lediglich eine graue Webseite. Irgendwie ist die Seite zwar da (Favicon, Webadresse wird angezeigt), aber ohne Inhalt.
Wo könnte das Problem sein, wo müßte ich nachjustieren? Jitsi Meet läuft ohne diese Anpassungen unter Ubuntu 18.04.4 ansonsten problemlos.

Werner
04.05.2020 16:54

das Benutzer-anlegen-Skript gibt aus:
./benutzer-anlegen.sh: line 3: [: $#: integer expression expected
./benutzer-anlegen.sh: line 9: syntax error near unexpected token ('
./benutzer-anlegen.sh: line 9:
password=\$(openssl rand -hex 5)‘

Habe den Quellcode kopiert und eingefügt. Wo liegt das Problem???

Fred
23.04.2020 20:45

>> Es sei an der Stelle erwähnt, dass die Passwörter leider im Klartext auf dem Server abgespeichert werden. Ich hoffe die Entwickler ändern dies in den kommenden Wochen noch entsprechend ab.

Das geht auch anders. Einfach internal_plain in internal_hashed ändern (2x in der Konfigurationsdatei vorhanden). Wenn es zu Problemen kommt, müssen evtl. die Benutzerpasswörter erneut erstellt werden, damit sie korrekt gehashed werden. Bei mir konnte sich der User focus nach der Änderung (weiter unten in der Konfigurationsdatei) nicht mehr mit der Videobridge verbinden, nachdem ich die Änderung vorgenommen hatte.

Micha
Reply to  Fred
26.04.2020 11:03

Wurde für den User focus das Passwort nach der Änderung gehashed und dann auch hashed hinterlegt?

Micha
23.04.2020 09:17

Hallo,

eine weitere sehr schöne Anleitung. Allerdings habe ich ein Problem mit der Absicherung der Räume. Die Konfiguration ist wie hier angegeben.
Haben Sie danach mal versucht mit der Android-App auf den Server zuzugreifen? Nachdem der Organisator einen Raum erstellt hat, kann ich mit dem Browser ohne Probleme als Gast hinzukommen, Mit der Android-App (von f-droid.org) muss ich mich allerdings mit den Organisator-Credentials anmelden und kann nicht als Gast dazustoßen. Können Sie das nachvollziehen?

Micha
Reply to  Daniel
26.04.2020 09:44

Hallo Daniel,

da Sie sicherlich nicht ganz ohne mobile Endgeräte leben werden, haben Sie sicherlich die adäquate aus dem Hause Apple. Tritt bei diesen und der Nutzung der iOS-App das von mir beschriebene Verhalten unter b) nicht auf?
Dass ein Raum mit Secure Domain noch nicht abgesichert ist, weiß ich. Dennoch Danke, dass Sie noch einmal explizi drauf hingewiesen haben.

Grüße Micha

Fred
16.04.2020 22:42

Hallo, besten Dank für die sehr schöne Anleitung. Ist bisher der ausführlichste Artikel zum Thema Sicherheit, den ich zu Jitsi-Meet gefunden habe.
Die sysctl-Werte waren für 4GB Ram ausgelegt. Da mein Vserver über 2GB Ram verfügt, nehme ich an, es würde Sinn machen, sämtliche Werte auf die Hälfte zu reduzieren?

P.F
09.04.2020 14:40

Followed your guide. Server on internal network. Alsi accessed from there.
But every (about) 20 seconds i got „You have been disconnected“.

Any hints ?

Eigener TURN Server für Jitsi Meet bereitstellen – Aus der IT – Praxis…
04.04.2020 14:25

[…] Fall soll der TURN-Server in Verbindung mit Jitsi Meet betrieben werden. Dazu habe ich bereits diesen Beitrag geschrieben, welcher als Basis für diesen Aritkel […]

Holger

Gute Anleitung! Vor allem mit den DSGVO Anpassungen an der Startseite. Eine Frage;

In der aktuellen Debian Installation wird ja bereits ein TURN Server mitgeliefert und konfiguriert, aber irgendwie nicht aktiviert, jedenfalls nicht für TCP. Gibt es eine Möglichkeit, diesen TURN Server auch für TCP ans Laufen zu bekommen, oder ist zwingend eine weitere Kiste nötig?

fred
Reply to  Holger
23.04.2020 20:55

Die Konfigurationsdatei für den mitgelieferten Turnserver (Coturn) liegt unter /etc/turnserver.conf Ich habe dort unter anderem die folgende Anpassung vorgenommen 1. die Zeile no-tcp auskommentiert: #no-tcp 2. den listening port geändert, da tatsächlich Jitsi-Meet nach einem Update nicht mehr auf dem Port 443 funktioniert hat und irgendwie mit nginx in die Quere gekommen ist: #listening-port=443 listening-port=4443 ^^Den Port auch in den anderen Config-Dateien verändern, ich meine in der prosody config und in der /jitsi/meet/mein-server-config.js. Ansonsten wird soweit ich weiß ein ganz normaler Coturn mitinstalliert, den man ohne Probleme nach der Anleitung von dw (mit meinen Änderungen) verwenden kann. Bei mir funktioniert… Weiterlesen »