Jitsi Meet: Server-Einstellungen für einen datenschutzfreundlichen Betrieb

1. FeintuningJitsi Meet

Jitsi Meet ist ein quelloffenes Open-Source-Videokonferenzsystem, das als datenschutzfreundlicher Ersatz für proprietäre Dienste wie Zoom, MS Teams, Skype, Cisco Webex etc. verwendet werden kann. Sowohl der Betrieb als auch die Nutzung sind unkompliziert und ermöglichen anonyme, werbe- und trackingfreie Videokonferenzen. Für die Nutzung ist kein Konto notwendig, sondern lediglich ein Webbrowser (der WebRTC unterstützt) oder die App für Android bzw. iOS. Datenschutzsensible Nutzer finden die Jitsi-Meet-App ebenfalls im F-Droid-Store.

Seit Ausbruch der Corona-Pandemie sind nun schon einige Wochen vergangen. Es liegen daher bereits etliche Anleitungen vor, die eine Installation und Betrieb von einer selbst gehosteten Jitsi-Meet-Instanz beschreiben. An diese Anleitungen möchte ich anknüpfen und im vorliegenden Beitrag Einstellungen und Tipps vorstellen, die den Betrieb von Jitsi Meet sicherer und datenschutzfreundlicher gestalten.

Hinweis: Die Tipps sind ausgelegt für eine Jitsi-Meet-Installation auf Debian GNU/Linux, lassen sich allerdings auch auf eine Docker- oder Ubuntu-Installation übertragen.

2. Installationsanleitungen Jitsi Meet

Im Folgenden verlinke ich auf Installationsanleitungen zu Jitsi Meet, die sich hinsichtlich des Detailgrades, Sprache und Einstellungen voneinander unterscheiden. Abgesehen von den unterschiedlichen Herangehensweisen hat jede Anleitung den Betrieb einer eigenen Jitsi-Meet-Instanz zum Ziel:

Gerne dürft ihr mir einen Hinweis auf weitere Anleitungen hinterlassen, die Erwähnung finden sollten.

3. Externe Verbindungen zu gravatar.com und Co. unterbinden

Über ein Einstellungsmenü erlaubt Jitsi Meet den Teilnehmern ihr Profil bzw. ihren Namen anzupassen, der anschließend in der Konferenz angezeigt wird. Beim Klick auf die Einstellungen (Rädchen-Symbol) gelangt man in ein kleines Menü, wo man seine Geräte, Profil und Mehr (Sprache) konfigurieren kann. Unter Profil lässt sich eine E-Mail-Adresse für Gravatar eingeben. Eine Eingabe dort löst wiederum eine Verbindung zu gravatar.com aus:

https://www.gravatar.com/avatar/ee1bf01414ae7f3b3fe3d33a2aaf9480?d=404&size=200

Eine Verbindung zu einem Drittdienst wie gravatar.com würde ich persönlich gerne vermeiden. Das lässt sich über die Konfiguration wie folgt erledigen:

nano /etc/jitsi/meet/<domain>-config.js
disableThirdPartyRequests: true,

Danach sind die Third-Party-Requests deaktiviert. Davon nicht betroffen sind die Einstellungen der STUN- und TURN-Server.

4. Logging reduzieren

Standardmäßig wird Jitsi Meet mit dem Logging-Level INFO ausgeliefert. In diesem Modus erfasst die Videobridge die IP-Adressen der Teilnehmer. Da ich diese Informationen nicht erfassen und speichern möchte, habe ich das Logging-Level auf WARNING reduziert:

nano /etc/jitsi/videobridge/logging.properties
.level=WARNING

5. Keine »Werbung« für Apps mit Trackern

Der Versuch, die Tracker aus der iOS- und Android-Version von Jitsi Meet zu entfernen, war bisher leider nicht von Erfolg gekrönt. Das dazu passende Issue mit der Nummer 5799 wurde leider geschlossen, ohne eine weitere Diskussion zuzulassen. Aktuell ist ein datenschutzfreundlicher Betrieb mit der iOS- und Android-Version daher leider nicht möglich. Beide Versionen beinhalten drei Tracker:

  • Google CrashLytics
  • Google Firebase Analytics
  • Amplitude

Es ist daher davon abzuraten, die Jitsi-Meet-App aus den offiziellen Stores von Apple und Google zu verwenden. Für Android gibt es allerdings Abhilfe. Die F-Droid-Version ist komplett ohne Tracker. Daher gilt die Empfehlung:

  • Nutzt Jitsi Meet entweder ausschließlich am Rechner (via Browser)
  • oder nutzt die F-Droid-Version auf Android

Aber auch Server-Betreiber haben Einfluss auf das Tracking bzw. können den Link anpassen, den Teilnehmer beim Aufruf über einen Browser auf ihrem Mobilgerät eingeblendet bekommen:

Jitsi Meet Link

Dieser Link führt standardmäßig, je nach Geräte-Plattform (Android / iOS), zum Google Play oder Apple Store. Über einen Eingriff in der Konfiguration können Betreiber zumindest den Link für Android-Nutzer so anpassen, dass dieser auf die trackerfreie Version im F-Droid-Store verlinkt:

nano /usr/share/jitsi-meet/interface_config.js
SHOW_CHROME_EXTENSION_BANNER: false,

/**
* Specify custom URL for downloading android mobile app.
*/
MOBILE_DOWNLOAD_LINK_ANDROID: 'https://f-droid.org/en/packages/org.jitsi.meet/'

6. STUN- bzw. TURN-Server

Das STUN-Protokoll erkennt Clients, die sich bspw. hinter einem Router oder einer Firewall befinden und eine NAT-Adresse haben. Mit Hilfe des STUN-Servers können NAT-Clients ihre öffentliche IP-Adresse erfahren und sind anschließend in der Lage eine direkte Kommunikationsverbindung zwischen (zwei) Teilnehmern herzustellen. Um die Übermittlung der IP-Adresse an externe Anbieter zu vermeiden, könnt ihr einen eigenen STUN- / TURN-Server betreiben. Alternativ könnt ihr natürlich auch einfach bestehende STUN-Server wählen, die öffentlich zur Verfügung gestellt werden.

Wer wissen möchte, welche »Probleme« ein STUN- / TURN-Server lösen kann, der kann das hier im Detail nachlesen: Funktionsweise – STUN/TURN Server.

Der Kuketz-Blog ist spendenfinanziert!

Unabhängig. Kritisch. Informativ. Praxisnah. Verständlich.

Die Arbeit von kuketz-blog.de wird vollständig durch Spenden unserer Leserschaft finanziert. Sei Teil unserer Community und unterstütze unsere Arbeit mit einer Spende.

Mitmachen ➡

6.1 Anpassung der STUN-Server

In der Standardkonfiguration wurde Jitsi Meet noch bis vor einigen Wochen leider mit STUN-Servern von Google ausgeliefert. Als datenschutzsensibler Betreiber sollte man die STUN-Server der Instanz daher anpassen. Öffnet dazu die config.js-Datei, die unter Debian im Pfad

/etc/jitsi/meet/<domain>-config.js

zu finden ist. Dort sind folgende Einträge anzupassen:

stunServers: [
   { urls: 'stun:stun.l.google.com:19302' },
   { urls: 'stun:stun1.l.google.com:19302' }
],

Die Google STUN-Server solltet ihr mit einem anderen öffentlichen STUN-Server ersetzen. Funktionierende STUN-Server sind bspw.:

  • stun.1und1.de:3478
  • stun.t-online.de:3478
  • stun.nextcloud.com:443

Hinweis

Wer eine Neuinstallation von Jitsi Meet aus den APT-Quellen vornimmt, bei dem sind die STUN-Server nicht mehr auf Google vorkonfiguriert.

6.2 Betrieb eines coturn-Servers

Persönlich bin ich dazu übergegangen meinen eigenen STUN- / TURN-Server auf Basis von coturn zu betreiben. Neben dem Jitsi-Meet-Server habe ich also noch einen weiteren Root-Server in Betrieb genommen, der sich ausschließlich um die STUN-Auflösung bzw. Übertragung der Video- und Audiodaten via TURN kümmert. Insbesondere für Clients, die sich bspw. hinter einer Firmenfirewall befinden, die keine Pakete zur Videobridge auf UDP-Port 10000 zulässt, ist ein TURN-Server sinnvoll.

Meine coturn-Konfiguration möchte ich nachfolgend bereitstellen:

#listening-port=3478
tls-listening-port=443
listening-ip=<eureIP> 
relay-ip=<eureIP>
fingerprint 
use-auth-secret 
static-auth-secret=<euerSecret>
realm=stun.kuketz-meet.de 
total-quota=100 
bps-capacity=0 
no-udp 
no-tcp 
stale-nonce=600 
cert=/etc/ssl/certs/stun.kuketz-meet_ecdsa.pem
pkey=/etc/ssl/private/stun.kuketz-meet_ecdsa.key
cipher-list="ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256" 
ec-curve-name=secp384r1 
dh-file=/etc/ssl/certs/dhparam.pem 
no-stdout-log 
log-file=/var/log/turnserver.log 
simple-log 
no-multicast-peers 
cli-port=5766 
no-tlsv1 
no-tlsv1_1

Den STUN- / TURN-Server könnt ihr mit Trickle ICE auf seine Funktionalität hin überprüfen. In der letzten Zeile muss in der Spalte Priority der Bezeichner »Done« stehen, dann war der Test (hier mit dem TURN-Server) erfolgreich:

Trickle ICE

Damit die Jitsi-Meet-Instanz den coturn-Server anschließend nutzt, sind folgende Einstellungen vorzunehmen:

nano /etc/jitsi/meet/<domain>-config.js
stunServers: [
   { urls: 'stun.kuketz-meet.de:443' } ],

Und an zwei Stellen muss beim Parameter useStunTurn der Kommentar entfernt bzw. auf true gesetzt werden:

useStunTurn: true,

[...]

p2p: {
   useStunTurn: true,

Das war noch nicht alles, denn auch die Prosody-Konfiguration muss angepasst werden:

nano /etc/prosody/conf.avail/<domain>.cfg.lua
turncredentials_secret = "euerSecret"; turncredentials = { 
   { type = "stun", host = "stun.kuketz-meet.de", port = "443" }, 
   { type = "turn", host = "stun.kuketz-meet.de", port = "443", transport = "udp" }, 
   { type = "turns", host = "stun.kuketz-meet.de", port = "443", transport = "tcp" } };

Zwei weitere Einstellungen sind sinnvoll, allerdings optional:

  • Sobald die Videobridge startet ermittelt sie ihre öffentliche IP-Adresse via STUN-Server. Das ist immer dann sinnvoll, wenn die Videobridge in einem NAT-Setup konfiguriert ist.
  • Die zweite Zeile deaktiviert den TCP-Harvester der Videobridge und ausschließlich der TURN-Server wird anschließend für TCP-Verbindungen genutzt.
nano /etc/jitsi/videobridge/sip-communicator.properties
org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=stun.kuketz-meet.de:443
org.jitsi.videobridge.DISABLE_TCP_HARVESTER=true

Nochmal alle Dienste durchstarten:

service jicofo restart
service prosody restart
service jitsi-videobridge2 restart

Anschließend sendet Jitsi Meet STUN- und TURN-Anfragen an euren eigenen coturn-Server.

7. Datenschutzerklärung

Jede Jitsi-Meet-Instanz sollte selbstverständlich auch über eine Datenschutzerklärung verfügen. Als Vorlage könnt ihr meine nehmen. Nur eine Bitte: Nicht 1:1 kopieren, sondern abwandeln und vielleicht auch eine eigene Struktur reinbringen bzw. an eure Bedürfnisse anpassen.

Damit ihr Links im HTML-Footer der Jitsi-Meet-Willkommensseite setzen könnt, solltet ihr folgende Anpassung an der CSS-Datei von Jitsi Meet vornehmen. Einfach ganz unten in die Datei einfügen und speichern:

nano /usr/share/jitsi-meet/css/all.css
.welcome .welcome-watermark{position:absolute;width:100%;height:auto}
#footer{margin-top:20px;margin-bottom:20px;font-size:14px}

Anschließend muss der Text im Footer bzw. die Links noch eingebunden werden:

nano /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html
<template id = "welcome-page-additional-content-template">
   <div id="footer"> 
      <center>Betrieben von Kuketz-Blog | <a href="https://www.kuketz-blog.de/impressum/">Impressum</a> | <a href="-">Datenschutzhinweis</a> | <a href="https://www.kuketz-blog.de/jitsi-meet-erste-hilfe-bei-problemen/">Erste Hilfe bei Problemen</a></center>
      <center>Diese Jitsi-Instanz ist <a href="https://www.kuketz-blog.de/jitsi-meet-server-einstellungen-fuer-einen-datenschutzfreundlichen-betrieb/">datenschutzfreundlich</a> und nutzt <strong>nicht</strong> die Google STUN-Server.</center>
   </div>
</template>

Danach genügt es, den nginx bzw. Webserver einmal neu zu initialisieren:

service nginx reload

8. Kleine Tweaks

Über die config.js-Datei von Jitsi Meet könnt ihr noch ein paar weitere Einstellungen vornehmen:

nano /etc/jitsi/meet/<domain>-config.js

8.1 Festlegen der Standardsprache auf Deutsch

defaultLanguage: 'de',

8.2 Reduzierung der Auflösung von 720 auf 480

resolution: 480,

constraints: { 
   video: {  
      aspectRatio: 16 / 9,   
      height: {    
         ideal: 480,   
         max: 480,    
         min: 240     
      }      
   }     
}, 

Die Limitierung der Videoauflösung spart sowohl auf Client- als auch auf der Server-Seite Ressourcen.

8.3 Limitierung der übertragenen Video-Feeds

channelLastN: 4,

Nur die Videodaten bzw. Streams der letzten vier aktiven Sprecher wird übermittelt. Alle anderen Teilnehmer werden sozusagen »eingefroren«, bis sie wieder sprechen.

8.4 Enable Layer Suspension

enableLayerSuspension: true,

Der Client (ab Chrome 69) sendet nur jene Streams, die zu einem bestimmten Zeitpunkt angesehen werden, wodurch der CPU- und Bandbreitenverbrauch sowohl auf der Client- als auch auf der Server-Seite reduziert und gleichzeitig die Videoqualität verbessert wird. Weitere Infos zur Einstellung.

8.5 Videokonferenz nur mit Audio starten

startAudioOnly: true,

Video kann dann bei Bedarf aktiviert werden. Gerade wenn viele Teilnehmer einen Konferenzraum gleichzeitig betreten, sorgt das für eine deutliche Entlastung.

8.6 Deaktivierung der blauen Audio-Dots beim Speaker

disableAudioLevels: true,

Reduziert die CPU-Auslastung bei den Clients.

9. Firewall-Settings nftables

Zum Abschluss stelle ich noch meine Firewall-Konfiguration für ein Debian-GNU/Linux-System zur Verfügung, das ihr an euer Setup anpassen könnt. Das Debian-Projekt hat mittlerweile von iptables auf nftables gewechselt. Die nachfolgende Konfiguration ist daher auf nftables ausgelegt:

#!/usr/sbin/nft -f

#################### 
# Purge/Flush      # 
#################### 
flush ruleset

#################### 
# Incoming Traffic # 
#################### 
table inet filter { 	    
   chain input { 		       
      type filter hook input priority 0; policy drop;
      
      # Allow packets to established/related connections        
      ct state established,related accept         
  
      # Drop invalid connections        
      ct state invalid drop
      
      # Allow loopback interface 		       
      iifname lo accept
      
      # Allow ICMPv4: Ping requests | Error messages | Router selection messages       
      ip protocol icmp icmp type { echo-request, echo-reply, destination-unreachable, time-exceeded, parameter-problem, router-solicitation, router-advertisement } accept              
   
      # Allow ICMPv6 traffic (https://tools.ietf.org/html/rfc4890#page-18)       
      ip6 nexthdr icmpv6 icmpv6 type { destination-unreachable, packet-too-big, time-exceeded, echo-request, parameter-problem, echo-reply, nd-router-solicit, nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert, ind-neighbor-solicit, ind-neighbor-advert } accept

      # Allow SSH access on port 22
      tcp dport 22 accept

      # Allow HTTP / HTTPS traffic
      tcp dport { http, https } accept

      # Allow Videobridge Traffic       
      udp dport 10000 accept
      
      # Reject other packets       
      ip protocol tcp reject with tcp reset
      ip6 nexthdr tcp reject with tcp reset    
   }
#################### 
# Forward Traffic  # 
####################    
   chain forward { 		       
      type filter hook forward priority 0; policy drop; 	    
   } 
#################### 
# Outgoing Traffic # 
####################    
   chain output { 		       
      type filter hook output priority 0; policy accept;  	
      
      # Allow loopback interface 		       
      oifname lo accept	    
   } 
}

10. Fazit

Selbst wenn Jitsi Meet und vergleichbare Alternativen quelloffen sind, bedeutet das nicht automatisch, dass sie auch datenschutzfreundlich sind. Hierfür sind oftmals Nachbesserungen notwendig, die ich im vorliegenden Artikel zusammengefasst habe. Es sind nur kleine Eingriffe, die allerdings eine große Wirkung haben.

Wer noch weitere Tipps kennt, der kann mir diese gerne zusenden oder die Kommentarfunktion nutzen.

Bildquellen:

Home office: photo3idea_studio from www.flaticon.com is licensed by CC 3.0 BY

Über den Autor | Kuketz

Mike Kuketz

In meiner freiberuflichen Tätigkeit als Pentester / Sicherheitsforscher (Kuketz IT-Security) schlüpfe ich in die Rolle eines »Hackers« und suche nach Schwachstellen in IT-Systemen, Webanwendungen und Apps (Android, iOS). Des Weiteren bin ich Lehrbeauftragter für IT-Sicherheit an der Dualen Hochschule Karlsruhe, sensibilisiere Menschen in Workshops und Schulungen für Sicherheit und Datenschutz und bin unter anderem auch als Autor für die Computerzeitschrift c’t tätig.

Der Kuketz-Blog bzw. meine Person ist regelmäßig in den Medien (heise online, Spiegel Online, Süddeutsche Zeitung etc.) präsent.

Mehr Erfahren ➡

SpendeUnterstützen

Die Arbeit von kuketz-blog.de wird zu 100% durch Spenden unserer Leserinnen und Leser finanziert. Werde Teil dieser Community und unterstütze auch du unsere Arbeit mit deiner Spende.

Folge dem Blog

Wenn du über aktuelle Beiträge informiert werden möchtest, hast du verschiedene Möglichkeiten, dem Blog zu folgen:

Bleib aktuell ➡


Diskussion

40 Ergänzungen zu “Jitsi Meet: Server-Einstellungen für einen datenschutzfreundlichen Betrieb”

  1. Comment Avatar related accept sagt:

    Vielen Dank für diesen aufschlussreichen Artikel!

  2. Comment Avatar Jojo sagt:

    Die Datei /usr/share/jitsi-meet/interface_config.js sollte besser nicht bearbeitet werden, da sie bei jedem Update überschrieben wird. Besser ist es /usr/share/jitsi-meet/interface_config.js nach /etc/jitsi/meet/-interface_config.js zu kopieren und in der Jitsi Meet nginx-Konfiguration zusätzlich folgende Zeilen hinzufügen:

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

    Dann wird stets die eigene benutzt und man muss sich keine Sorgen mehr machen, die Konfiguration neu zu machen. Das Problem ist schon länger bekannt: https://community.jitsi.org/t/best-practice-to-customize-interface-config-js/25777

    Das gleiche gilt, wenn man Anpassungen auf /usr/share/jitsi-meet/css/all.css und /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html vornimmt.

    • Comment Avatar Mike Kuketz sagt:

      Ja das ist korrekt. Das Debian-Package ist einfach nicht gut gebaut. Normalerweise sollten Abfragen kommen, wenn etwas überschrieben wird. Hoffentlich wird das in Zukunft berücksichtigt.

      • Comment Avatar Michael sagt:

        Abfragen zu config-Dateien kommen nur dann, wenn diese Dateien auch als config-Dateien im deb-Paket eingetragen sind. Ob dies allerdings für Dateien ausserhalb von /etc überhaupt fehlerfrei/warnungsfrei geht, weiß ich momentan nicht.

    • Comment Avatar Alex sagt:

      Danke für den Tipp

    • Comment Avatar point sagt:

      Puh, was für ein Aufwand. Für solche „Probleme“ wurden Tools wie Ansible erfunden. Das würde dir dann garantieren, dass immer deine Config beim Update drübergespielt würd.

      • Comment Avatar Alexander Hoff sagt:

        Puh, was für ein Aufwand. Für solche „Probleme“ wurden Tools wie Ansible erfunden. Das würde dir dann garantieren, dass immer deine Config beim Update drübergespielt wird.

        Nein, dafür wurde Ansible nicht erfunden. Das ist ein Deployment-Tool und kein Bugfix für strukturelle Fehler in Installationspaketen (deb, rpm etc.) oder in der Software selbst. Anpassbare Konfigurationsdateien gehören nicht nach /usr/share/[app].

  3. Comment Avatar Janosch sagt:

    Guten Abend Mike und danke (mal wieder) für eine super Anleitung. Kennst du (oder auch die anderen Leser) eine Möglichkeit die unter Punkt 7 genannten Impressum und Datenschutzerklärung in einer Docker Installation unterzubringen?

  4. Comment Avatar foster sagt:

    Hallo, die Anpassung der Vorgeschlagenen Android App funktioniert bei mir nicht.
    Ich fürchte die Zeile ist unvollständig. Ich habe sie mal so geändert: MOBILE_DOWNLOAD_LINK_ANDROID: ‚https://f-droid.org/en/packages/org.jitsi.meet‘
    Ich bekomme jedoch immer noch nur einen grauen Screen, sobald ich nach der Änderung einer Konferenz beitrete.

    Diese beiden Anleitungen zu Jitsi-Meet und zum Setup von Coturn schienen mir sehr umfangreich und auf Sicherheit bedacht zu sein:

    https://blog.wydler.eu/2020/03/22/einrichten-von-jitsi-meet-kostenlose-videokonferenzen-fuer-alle/

    https://blog.wydler.eu/2020/04/04/eigener-turn-server-fuer-jitsi-meet-bereitstellen/

    Hier noch eine Coturn betreffende aktuelle Sicherheitswarnung:

    https://www.rtcsec.com/2020/04/01-slack-webrtc-turn-compromise/

    (Wenn man hier jedoch die Emfpehlung umsetzt und lokale ips blockiert, kann man den Turnserver vom Heimnetzwerk aus nicht mehr verwenden, weshalb ich diese wieder freigeschaltet habe.)

  5. Comment Avatar THLK sagt:

    Hallo Mike,

    könntest Du vielleicht noch kurz ein wenig sendungmitdermausmäßiger darauf eingehen, wozu man STUN/TURN/COTURN braucht? Das wäre sehr nett.

  6. Comment Avatar Martin Schnell sagt:

    Vielen Dank, Mike, für ein weiteres tolles Tutorial.

    Hat hier vielleicht bereits jemand versucht, einen eignen, privaten Jitsi Server aus dem Heimnetzwerk heraus zu betreiben? Ich kann mir vorstellen, daß da die Datenübertragungsrate im Upstream einen ein Strich durch die Rechnung macht, oder?

    • Comment Avatar Mike Kuketz sagt:

      Davon würde ich abraten. Außer du hast mindestens 100 MBit Upload – und selbst dann reicht es nur für wenig Teilnehmer bzw. Konferenzen. Für so etwas gibt es Server-Anbieter.

      • Comment Avatar Martin Schnell sagt:

        Ja, das habe ich mir schon gedacht. Ich hatte übrlegt, einen Server für die Familie aufzuziehen, mir aber schon gedacht, daß man nicht umhin kommt, dafür entsprechend Ressourcen anzumieten.

        • Comment Avatar Wunold sagt:

          Es kommt darauf an, welche Ansprüche man hat. Ich betreibe mit 10 Mbit Upstream einen Jitsi-Server für ein paar Freunde. Bis 4-5 Leute ist das vollkommen akzeptabel, solange man mit gelegentlichem Video- oder Audio-Lag leben kann. Den gibt es auch meist nur bei einzelnen Leuten, sodass es auch an deren Verbindung oder Hardware liegen kann. Für ein Feierabendpläuschchen oder wie bei uns einen Stammtisch-Ersatz reicht es aber allemal.

          Ich benutze die Docker-Version unter Ubuntu Server 18.04 LTS.

    • Comment Avatar Stifler sagt:

      Ich habe es selbst nicht getestet. Aber wenn ich den Angaben glauben kann müsste weit unter 50mbit Up völlig ausreichen für wenige Teilnehmer. Am besten du schaust mal selbst.

      https://blog.wirelessmoves.com/2020/03/jitsi-meet-and-the-number-of-video-participants.html

  7. Comment Avatar Hella sagt:

    Folgende Einstellungen in config.js sind aus Performance-Sicht noch sinnvoll:

    enableLayerSuspension: true
    channelLastN: 4
    startAudioOnly: true

  8. Comment Avatar bb sagt:

    Vielen Dank!

    Wenn ich die nftables richtig lese, ist incoming udp/443 nicht mit erlaubt. Die coturn/prosody config scheinen den Port aber zu verwenden. Ist das so gewollt?

    Sofern ich mich nicht irre, bindet coturn hier auf udp und tcp (+ dtls und tls):
    tls-listening-port=443

    Die Prosody config listet udp explizit mit auf.

    In der Praxis sicher nicht auffällig, da wenn udp/10000 nicht geht wohl auch udp/443 geblockt ist.

    • Comment Avatar Mike Kuketz sagt:

      Die dargestellte Firewall-Konfiguration ist für eine Jitsi-Meet-Instanz gededacht, die zusätzlich einen weiteren Host als coturn-Server nutzt (für STUN/TURN).

    • Comment Avatar Max sagt:

      Die Frage habe ich mir auch gestellt, häufig ist in Unternehmen nur ausgehend 443 TCP erlaubt, dann geht die Konfiguration nicht.

      • Comment Avatar Mike Kuketz sagt:

        Wie bereits erwähnt läuft der STUN/TURN-Server davon getrennt. Daher ist in meinem Setup eine solche Freigabe für die Videobridge nicht notwendig.

        • Comment Avatar Max sagt:

          Hallo Mike, ich habe das gestern noch probiert, aus einem Unternehmen wo ausgehend nur 443 TCP und 80 TCP (und einem Proxy Server) erlaubt ist, da kommt es nicht zu einer Verbindung. Der Turn/Stun Server läuft auf einer eigenen IP…wie Du das auch umgesetzt hast…

  9. Comment Avatar Frank sagt:

    Hi Mike,

    in deinem Screenshot zum Test des Turn Servers definierst du das Protokoll als tcp (?transport=tcp). Damit funktioniert es auch bei mir. Wenn ich das weg lasse und der Test mit udp läuft bekomme ich die Meldung „not reachable ?“.

    Kannst du kurz die Hintergründe erklären warum explizit tcp? Läuft der turn nicht über udp?

    Danke und Gruß

  10. Comment Avatar Daniel sagt:

    Hallo,

    Ihre Anleitung ist Super!

    Zu Ihrem Statment bzgl. der Smartphone Apps kann man vom Smartphone aus z.B. Firefox im Desktop Modus ohne Probleme eine Verbindung herstellen.

    Viele Grüße und weiter so!

  11. Comment Avatar Regina sagt:

    Hallo Mike,

    danke für diese Inhalte. Ebenfalls danke, für die Datenschutzerklärung. Ich habe mir Teile davon übernommen.
    Ich habe noch hinzugefügt, dass durch die Konfiguration des Servers keine Auftragsverarbeitung vorliegt. Das ist eine Frage, die wir sehr häufig gestellt bekommen.

    Herzliche Grüße
    Regina

  12. Comment Avatar Tobias sagt:

    Hallo Mike,

    Dankeschön für die Datenschutzerklärung, ich habe sie übernommen und angepasst. Müsste eigentlich noch ein Hinweis zum Cookie mit den genutzten Raumnamen aufgenommen werden?
    Ich finde es etwas unschön, dass nach der Deaktivierung von Gravatar noch immer die Eingabe der E-Mailadresse notwendig ist. Daher habe ich das Feld mittels CSS ausgeblendet:
    .profile-edit-field:last-child{
    display: none;
    }

    Grüße
    Tobias

  13. Comment Avatar silke sagt:

    Vielen Dank für den Artikel, sehr hilfreich!

  14. Comment Avatar Horst sagt:

    Hallo Mike,
    auch wenn ich nerve, aber Dein Server funktioniert auch nicht, wenn nur 443 TCP ausgehend aus einem „Firmennetzwerk“ offen ist. Ab 3 Teilnehmern muss der Port 10000 geöffnet sein, sonst kommt keine Kommunikation zustande, da die Vido Bridge sonst nicht genutzt werden kann. Heute getestet.

    • Comment Avatar Mike Kuketz sagt:

      Was ist das für eine Firewall? Ein einfacher Paketfilter oder eine Application-Firewall, die auch den Aufbau von Protokollen kennt? Oder ist ein Proxy dazwischengeschaltet?

      Mehr Details wären hilfreich.

  15. Comment Avatar MeetPlaner sagt:

    DSGVO – Tracker
    Ich habe hier von Trackern gelesen. Beim Googeln scheint mir nur immer wieder die gleiche Meldung wiederholt / zitiert zu werden. Hier bei dir war glücklicherweise der Hinweis auf den issue drin.
    Kann es sein, dass führende PC Zeitschriften das Thema nicht mal im Ansatz aufgreifen?
    Bei Zoom wurden (m.E. zu Recht) Berichtslawinen gestartet. Über die Apps verliert niemand einen Ton. Leider bin ich kein Entwickler – lt. Recherchen müssten man die App ja auch selbst kompilieren können. Ist für mich nicht erklärbar, dass das niemand tut.

    Warum ich das hier schreibe: Wenn ich einen Jitsi Server betreiben will, kann ich dann verantwortlich gemacht werden für die DSGV-Verstöße, die die App ggf. veranlasst.
    Da hält mich bisher komplett davon ab. Ich kann ja nicht verhindern, dass jemand die App verwendet.

  16. Comment Avatar RaHa sagt:

    Warum zwingt Jitsi uns auf einem Mobilgerät eine App verwenden zu müssen bzw. warum kann man Jitsi nicht im Browser auf dem Mobilgerät verwenden?

    Zum Beispiel funktioniert palava.tv ohne App auf dem iPhone.

  17. Comment Avatar Marko sagt:

    Hallo Mike, Hallo Horst,
    ich hänge mich hier mal an.

    Das von Horst beschrieben Szenario habe ich derzeit auch.
    Ausgehend ist bei den Teilnehmer nur 80 und 443 / TCP erlaubt. Deshalb habe ich auch 2 VM eine mit Jitsi und eine mit Coturn als Stun/Turn Server. Bei uns ist eine FW der Firma Securepoint als Hardware gerät verbaut. Ich bin aktuell soweit das Trickle ICE mir relay werte bringt und ich meine Verbindung über 443 TCP herstellen kann. Leider bekomme ich immer noch kein Bild oder Ton. Ich sehe aber auch im Log vom Stun Server das dort die Teilnehmer sich einloggen.

    Leider bringen die ganzen versuche nichts irgendwelche configs anzupassen.

    Bis dann.

  18. Comment Avatar Andreas sagt:

    Ein Kollege hat eine nette Überraschung erlebt, als er das Background Blur aktiviert hatte. Plötzlich wollte der Browser Verbindungen zu `storage.googleapis.com` aufbauen, trotz Verbot vonThird Party Requests per `disableThirdPartyRequests: true`

    Wir haben in unserer Installation in `TOOLBAR_BUTTONS` den entsprechenden Eintrag entfernt und `DISABLE_VIDEO_BACKGROUND: true` gesetzt.

HilfeWenn du konkrete Fragen hast oder Hilfe benötigst, sind das offizielle Forum oder der Chat geeignete Anlaufstellen, um dein Anliegen zu diskutieren. Per E-Mail beantworte ich grundsätzlich keine (Support-)Anfragen – dazu fehlt mir einfach die Zeit. Kuketz-Forum

Abschließender Hinweis

Blog-Beiträge erheben nicht den Anspruch auf ständige Aktualität und Richtigkeit wie Lexikoneinträge (z.B. Wikipedia), sondern beziehen sich wie Zeitungsartikel auf den Informationsstand zum Zeitpunkt des Redaktionsschlusses.

Kritik, Anregungen oder Korrekturvorschläge zu den Beiträgen nehme ich gerne per E-Mail entgegen.