Tobias Scheible Cyber Security & IT-Forensik Dozent
Datenschutz und Jitsi Meet

Datenschutzfreundliche Konfiguration von Jitsi Meet

Jitsi Meet ist ein Open-Source-Projekt, das sehr viel Wert auf Sicherheit und Datenschutz legt. Mit einem eigenen Server und ein paar kleinen Konfigurationen kann eine sehr datenschutzfreundliche Lösung genutzt werden, die von keinem anderen Webkonferenzsystem erreicht wird.

Donnerstag, 23. April 2020
45 Kommentare

16.05.2021 Update: Neue Funktionen der aktuellen Version aufgenommen.

Mit Jitsi kann einfach ein Videochat im Browser ohne Installation und Anmeldung realisiert werden. Neben vielen öffentlichen Servern kann auch sehr einfach ein eigener Server installiert werden. Damit sind die Grundlagen für einen sicheren und datenschutzfreundlichen Betrieb gemäß Datenschutz-Grundverordnung (DSGVO) gelegt.

Datenschutzfreundlicher Jitsi Meet Server (meet.scheible.it):

Sicherheit

Aussagen über die IT-Sicherheit einer Anwendung zu treffen, ist natürlich immer sehr schwierig. Da nur ein ausführlicher Test von Experten, die das meiste Wissen auf den einzelnen Themengebieten haben müssen, eine qualitative Aussage treffen kann. Aber gerade bei Open-Source-Projekten, die im Fokus der Öffentlichkeit stehen, kann sehr häufig davon ausgegangen werden, dass die Angriffsflächen minimiert werden. Und bei dem aktuellen Hype um Jitsi Meet beschäftigen sich sehr viele Personen mit dieser Software. Zusätzlich geht das Projekt sehr offen mit dem Thema Sicherheit um, wie der Artikel „Jitsi Meet Security & Privacy“ zeigt.

Da es keinen Bereich für die Administration gibt, der abgesichert werden muss, ist die Sicherheitsarchitektur relativ simpel. Als Grundlage wird ein sicheres Betriebssystem vorausgesetzt und der Zugriff auf die Online-Meetings wird über die URLs und gegebenenfalls über das Raumpasswort gesteuert.

Die EFF (Electronic Frontier Foundation), eine Nichtregierungsorganisation, die sich für Grundrechte im Informationszeitalter einsetzt, hat in ihrem Secure Messaging Scorecard Jitsi Meet fünf von sechs möglichen Punkten gegeben. Einen Punkt Abzug gab es dafür, weil es keinen aktuellen Code Audit gibt.

Konfiguration

Es gibt keine Parameter, die gesetzt werden können, um die Sicherheit von Jitsi Meet zu erhöhen. Um einen potentiellen Missbrauch auf fremden Seiten zu verhindern, kann allerdings die Einbindung als Frame auf anderen Seiten deaktiviert werden. Das ist als Standard nicht gesetzt, da Jitsi Meet eine API besitzt, die mit der iFrame Technologie arbeitet. Bei einer normalen Installation und Betrieb unter der Hauptdomain wird allerdings kein Frame verwendet.

Soll das Einbinden blockiert werden, muss im Webserver NGINX der HTTP-Header X-Frame-Options gesetzt werden. Dazu muss die Konfigurationsdatei der verwendeten Domain bearbeitet werden und vor der letzten schließenden geschweiften Klammer der folgende Eintrag hinzugefügt werden:

// /etc/nginx/sites-available/meet.example.com.conf
add_header X-Frame-Options "DENY";

Verschlüsselung

Zur Kommunikation wird in Jitsi Meet WebRTC verwendet. Das Protokoll bietet allerdings keine Möglichkeit, Videochats mit mehreren Teilnehmern Ende-zu-Ende zu verschlüsseln. Daher werden bisher die Videochats im Client verschlüsselt und auf dem Server wieder entschlüsselt, um sie dann erneut verschlüsselt zum anderen Client zu übertragen. Bei zwei Teilnehmern sollte die WebRTC Ende-zu-Ende-Verschlüsselung aktiv sein. Weitere Informationen zum Sicherheitsmodell von WebRTC können dem aktuellen Entwurf „WebRTC Security Architecture draft-ietf-rtcweb-security-arch-19“ entnommen werden.

TEXT
Sicherheitseinstellung
TEXT Sicherheitseinstellung
e2ee

Die Entwickler von Jitsi arbeiten momentan an einer echten Ende-zu-Ende-Verschlüsselung (end-to-end encryption (e2ee)). Im April wurde diese Entwicklung im offiziellen Blog von Jitsi angekündigt: This is what end-to-end encryption should look like!. Für diese durchgängige Verschlüsselung muss der Webbrowser das Feature WebRTC Insertable Streams unterstützen. In der Version 83 von Chrome (erschienen am 19.5.2020) wurde das Feature experimentell implementiert und musste extra aktiviert werden. Seit der Version 86 (erschienen am 06.10.2020) ist es dauerhaft aktiviert. Damit steht seit Oktober jedem Nutzer mit dem aktuellen Chrome Browser die Ende-zu-Ende-Verschlüsselung von Jitsi Meet als Beta Version auf dem Server meet.jit.si zur Verfügung. Sie kann einfach über den Dialog „Sicherheitseinstellung“ aktiviert werden. Dieser kann über das farbige Schild rechts unten geöffnet werden. Dort muss der Schalter „E2EE-Schlüssel“ aktiviert werden. Damit ist Jitsi Meet einer der wenigen Webkonferenz-Dienste mit dieser Sicherheitsfunktion.

Datenschutz

Jitsi Meet hat gegenüber allen anderen Webkonferenzlösungen den Vorteil, dass es selbst auf einem Server installiert werden kann und somit unter der kompletten eigenen Kontrolle ist. Damit können alle Elemente selbst angepasst werden und Vorgänge sind zu 100% transparent. Wird ein eigener Server betrieben, verlassen Daten nicht die eigene Hoheit. Das ist eine Form von „Datenschutz durch Technikgestaltung“ und das Thema Auftragsdatenverarbeitung ist hinfällig. Die hier beschriebenen Punkte stellen einen ersten Schritt dar, um Jitsi Meet DSGVO konform zu betrieben.

STUN-Server

Ein sehr häufig diskutiertes Thema war und ist die Verwendung der STUN-Server von Google in der Standardkonfiguration. Die Technologie der STUN-Server kommt aus dem VoIP-Bereich und ermöglicht einem Rechner hinter einer NAT-Firewall (NAT-Client) über NAT-Grenzen hinweg Verbindungen aufzubauen. In früheren Versionen nutzte Jitsi hierfür Server von Google und wurde dafür kritisiert. Mit den Updates im April 2020 wurden diese Einträge entfernt und durch den eigenen Server von Jitsi meet-jit-si-turnrelay.jitsi.net ersetzt.

Der Eintrag befindet sich in der Datei meet.example.com-config.js (der Dateinamen wird in Abhängigkeit der verwendeten Domain generiert) in Zeile 140.

// /etc/jitsi/meet/meet.example.com-config.js
stunServers: [
    { urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }
],

Damit hat sich die Diskussion um die Google Server erledigt, allerdings wird trotzdem noch ein externer Server benötigt.

Eigener STUN-Server

Jitsi Meet installiert mittlerweile den STUN/TURN-Server coturn mit. Um ihn einzusetzen, müssen nur kleinere Anpassungen an der Konfiguration vorgenommen werden. Diese Konfiguration habe ich im Artikel „Jitsi Meet unter Ubuntu 20.04 installieren“ im Abschnitt „3. STUN/TURN-Server“ beschrieben.

Logging deaktivieren

Wird der Anleitung für die Installation gefolgt, werden automatische Logfiles erstellt, die zum Teil die IP-Adresse der Teilnehmer beinhaltet. Daher müssen entweder Maßnahmen zur Anonymisierung getroffen werden oder das Logging ganz deaktiviert werden, z. B. die Deaktivierung nach einem Testbetrieb vorgenommen werden.

NGINX

Als Webserver kommt bei Jitsi Meet NGINX zum Einsatz. Die IP-Adressen können entweder per Konfiguration anonymisiert werden (siehe „IP-Adressen in Apache2 und Nginx anonymisieren“) oder komplett deaktiviert werden. Dies geschieht über die Anpassung der Einträge access_log und error_log in der Datei nginx.conf.

// /etc/nginx/nginx.conf.
41: access_log off;
42: error_log off;
Jitsi Meet

Das Modul videobridge von Jitsi Meet protokolliert die Zugriffe. Dabei wird die IP-Adresse der Nutzer mitgespeichert. Hier ist es empfehlenswert, dass nur noch Fehler bzw. Warnungen protokolliert werden. Dies wird durch die Anpassung eines Eintrages in der Datei logging.properties in der Zeile 10 erzielt.

// /etc/jitsi/videobridge/logging.properties
10: .level=WARNING

Voreinstellungen anpassen

Mikrofon & Webcam

Bei den Voreinstellungen passe ich immer die Optionen an, dass das Mikrofon und die Webcam immer deaktiviert sind und vom User erst aktiviert werden müssen. Diese Einstellungen von Jitsi Meet sorgen dafür, dass kein Benutzer überrumpelt wird und nach dem Aufruf des Links etwas zeigt, was nicht öffentlich sein sollte. Dazu müssen die Werte startWithAudioMuted und startWithVideoMuted in der Datei meet.example.com-config.js (Name abhängig von der verwendeten Domain) auf true gesetzt werden.

/etc/jitsi/meet/meet.example.com-config.js
100: startWithAudioMuted: true,
140: startWithVideoMuted: true,

Mit dem neusten Update greifen die beiden oben genannten Konfigurationseinstellungen nicht mehr. Damit die Teilnehmenden nicht mit aktiviertem Mikrofon und aktivierter Webcam einem Meeting beitreten, kann eine Vorschaltseite (prejoin Page) in Jitsi Meet aktiviert werden. Dort ist das eigene Webcambild sichtbar, das Mikrofon und die Webcam können dort ausgeschalten werden und der eigene Namen kann eingegeben werden. Die Vorschaltseite (prejoin Page) kann in der Konfiguration wie folgt aktiviert werden:

Datei: /etc/jitsi/meet/ meet.scheible.it-config.js  
369: prejoinPageEnabled: true,  

Alternativ kann mit dem Befehl sed einfach der inaktive prejoin Page-Eintrag durch einen aktiven Eintrag ersetzt werden:

$ sed -i -e 's/\/\/ prejoinPageEnabled: false,/prejoinPageEnabled: true,/g' /etc/jitsi/meet/meet.scheible.it-config.js
Gravater

Zusätzlich kann hier noch die Verknüpfung mit dem externen Dienst Gravater unterbunden werden. In den Einstellungen der Weboberfläche von Jitsi Meet können die Benutzer eine E-Mailadresse hinterlegen. Daraufhin wird von Gravatar, sofern vorhanden, das Bild des Benutzers geladen. Es wird dann anstatt dem farbigen Kreis dargestellt.

/etc/jitsi/meet/meet.example.com-config.js
321: disableThirdPartyRequests: true,

Leider wird das Eingabefeld für die E-Mail-Adresse in den Einstellungen immer noch angezeigt, auch wenn die Verbindung zu Gravatar deaktiviert wurde. Daher habe ich das Feld in der Oberfläche von Jitsi Meet noch zusätzlich per CSS ausgeblendet. Mit der folgenden CSS-Anweisung:

Datei: /usr/share/jitsi-meet/css/all.css
.profile-edit-field:last-child{
    display: none;
}
Hintergrundunschärfe

In älteren Versionen hatte ich die Hintergrundunschärfe deaktiviert, da bei Aktivierung der Funktionen Dateien über die Domain storage.googleapis.com nachgeladen wurden. Dies hat sich mittlerweile (März/April Update) geändert, daher muss die Funktionen nicht mehr deaktiviert werden. Damit können auch die neuen virtuellen Hintergründe in Jitsi Meet genutzt werden.

Jitsi Meet besitzt eine Funktion, um den Hintergrund unscharf erscheinen zu lassen. Dabei wird versucht, die Person in einem Webcambild zu erkennen und alle anderen Bereiche werden verschleiert. Lothar hat darauf hingewiesen, dass bei Aktivierung der Funktionen Dateien über die Domain storage.googleapis.com nachgeladen werden. Daher sollte diese Funktion deaktiviert werden. Dies geschieht über den folgenden Eintrag und dem Wert true:

// /usr/share/jitsi-meet/interface_config.js
			12: DISABLE_VIDEO_BACKGROUND: true,

Zusätzlich muss der Eintrag videobackgroundblur aus der Liste TOOLBAR_BUTTONS entfernt werden, damit die Option im Menü nicht mehr angezeigt wird. Die Liste ohne den entsprechenden Eintrag:

// /usr/share/jitsi-meet/interface_config.js
			49:    TOOLBAR_BUTTONS: [
			50:        'microphone', 'camera', 'closedcaptions', 'desktop', 'fullscreen',
			51:        'fodeviceselection', 'hangup', 'profile', 'chat', 'recording',
			52:        'livestreaming', 'etherpad', 'sharedvideo', 'settings', 'raisehand',
			53:        'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts',
			54:        'tileview', 'download', 'help', 'mute-everyone',
			55:        'e2ee', 'security'
			56:    ],
Raumliste

Jitsi Meet verwendet zwar keine Cookies während einer Sitzung, allerdings den Local Storage, um technische Details zu speichern. Local Storage und Session Storage sind als Alternativen zu Cookies im Browser integriert und können größere Datenmengen lokal auf dem Rechner des Benutzers speichern. Dadurch kann die Seite neu geladen werden und man nimmt wieder direkt am bisherigen Meeting teil. Von Jitsi Meet werden im Local Storage die ID des Benutzers, der Benutzernamen, die verwendeten Räume und die Einstellungen gespeichert. Um zu verhindern, dass die Raumliste gespeichert wird, muss die folgende Option aktiviert werden.

// /etc/jitsi/meet/meet.example.com-config.js  
464:  doNotStoreRoom: true,
Cookies / Local Storage

Um alle gespeicherten Daten zu löschen, muss zu einem Trick gegriffen werden. In Jitsi Meet gibt es die Option, dass eine Abschiedsseite angezeigt wird, wenn ein Benutzer das Meeting verlässt. In der Standardkonfiguration wird der Teilnehmer zur Einstiegsseite von Jitsi Meet wieder weitergeleitet. Ist die Option gesetzt, wird die Datei close3.html aufgerufen, die normalerweise ohne Inhalt ist, sobald der Teilnehmer auf das rote Icon mit dem Hörer klickt. Hier besteht die Möglichkeit, eigenen JavaScript-Code zu platzieren und damit alle Daten von Jitsi Meet im Local Storage zu löschen. Um dies umzusetzen, muss in der config.js Datei der Eintrag enableClosePage auf true gesetzt werden.

// /etc/jitsi/meet/meet.example.com-config.js  
265: enableClosePage: true,

Und in der interface_config.js muss zusätzlich der Wert SHOW_PROMOTIONAL_CLOSE_PAGE ebenfalls auf true gesetzt werden, damit eine individuelle Seite angezeigt wird.

// /usr/share/jitsi-meet/interface_config.js
76: SHOW_PROMOTIONAL_CLOSE_PAGE: true,

Als Nächstes kann die close3.html Datei bearbeitet werden, sie liegt im Ordner static. Der JavaScript Befehl zum Löschen des Local Storage lautet localStorage.clear(). Da die Datei ansonsten leer ist, habe ich noch eine Weiterleitung (window.location) zur Hauptdomain eingefügt:


<html lang="de">
<head>
<meta charset="utf-8">
	<title>Jitsi Meet</title>
</head>
<body>
 	<script>
	localStorage.clear();
	window.location = "https://example.com";
 	</script>
</body>
</html>

Damit wird das Datenschutzniveau von Jitsi Meet noch einmal erhöht. Natürlich wird der Befehl nur ausgeführt, wenn der Benutzer auf das rote Icon mit dem Hörer zum Beenden des Meetings klickt. Da alle Daten gelöscht werden, wird natürlich auch die Raumliste der besuchten Jitsi Meet Online-Meetings gelöscht.

Peer-to-Peer

Das Sicherheitsunternehmen Syss GmbH aus Tübingen hat verschiedene Webkonferenzsysteme untersucht. Bei Jitsi Meet wurde keine Schwachstellen gefunden. Aber im allgemein wurde bei allen Systemen angemerkt, dass eine Peer-to-Peer-Verbindung dafür sorgen kann, dass die IP-Adresse bekannt wird. Eine Peer-to-Peer-Verbindung wird bei Jitsi Meet genutzt, wenn nur zwei Teilnehmer an einer Konferenz teilnehmen. Diese Funktion sollte deaktiviert werden, damit die Verbindung immer über den Server läuft. Damit kann die IP-Adresse nicht mehr durch einen anderen Teilnehmer ausgelesen werden.

// /etc/jitsi/meet/meet.scheible.it-config.js  
p2p: {
    enabled: false
}

Datenschutzerklärung hinzufügen

Für den korrekten Betrieb muss noch eine Datenschutzerklärung und das Impressum zu Jitsi Meet hinzugefügt werden. Mike Kuketz hat eine Vorlage für eine jItsi Meet Datenschutzerklärung veröffentlicht. Bei Jitsi Meet gibt es auf der Startseite ganz unten einen speziellen Bereich, der eingeblendet und bearbeitet werden kann. Um ihn zu aktivieren, muss in der Datei interface_config.js der Eintrag DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT in Zeile 30 auf true gesetzt werden.

// /usr/share/jitsi-meet/interface_config.js
30: DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: true,

Nun kann die Datei welcomePageAdditionalContent.html mit eigenem Inhalt befüllt werden. Bereits vorhanden ist ein Template-Element, das erhalten bleiben muss. Neben dem Datenschutz und den Impressum-Links habe ich bei meinen Installationen den Link zu der Anleitung und zu einem WebRTC Webbrowser Test verlinkt. Hier der komplette Code:

// /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html
<template id = "welcome-page-additional-content-template">
	<div style="text-align: center; font-size: 16px; margin: 20px 0; margin-top: 10px; z-index: 900; position: relative; color: #fff;">
		Example Company | 
		<a href="https://scheible.it/jitsi-meet-anleitung" style="color: #42b2e2; text-decoration: underline;">Anleitung</a> | 
		<a href="https://test.webrtc.org" style="color: #42b2e2; text-decoration: underline;">Browser Test</a> | 
		<a href="https://example.com/datenschutz" style="color: #42b2e2; text-decoration: underline;">Datenschutz</a> |
		<a href=" https://example.com/impressum" style="color: #42b2e2; text-decoration: underline;">Impressum</a>
	</div>
</template>

Leider wird der Eintrag bei einem Update überschrieben und muss daher immer wieder neu gesetzt werden (siehe Update Script).

Mit der neuen Version von Jitsi Meet ergab sich an dieser Stelle eine Änderung, da das Layout der Startseite angepasst wurde. Die Option zum Anzeigen der Inhalte der Datei welcomePageAdditionalContent.html heißt jetzt DISPLAY_WELCOME_PAGE_CONTENT.

Datei: /usr/share/jitsi-meet/interface_config.js
91: DISPLAY_WELCOME_PAGE_CONTENT: true,

Datenschutzerklärung im Konferenzraum

Die obere Variante hat den Vorteil, dass sie sehr unkompliziert ist, da nur reiner HTML-Code verwendet wird. Der Nachteil ist hierbei jedoch, dass der Link zur Datenschutzerklärung nur auf der Startseite bzw. Einstiegsseite von Jitsi Meet angezeigt wird und damit nicht im Konferenzraum selbst zu sehen ist. Wenn ein Benutzer jedoch nur einen Link direkt mit dem Raumnamen bekommt und somit direkt in den Konferenzraum gelangt, hat er keine Möglichkeit die Datenschutzerklärung aufzurufen. Abhilfe schafft hier die Einbindung der Datenschutzerklärung per JavaScript. Mit dieser Methode habe ich übrigens auch den Balken mit den Links bei meiner Jitsi Meet Instanz (meet.scheible.it) realisiert. Der Code wird am Ende der Datei interface_config.js eingefügt. Sie wird auf der Startseite und im Konferenzraum geladen, daher muss der Link zur Datenschutzerklärung nur einmal eingefügt werden. Der JavaScript-Code wird aktiv, wenn alle Elemente geladen wurden und fügt ganz am Ende, vor dem schließend body-Tag, einen HTML-Code ein.

// /usr/share/jitsi-meet/interface_config.js
document.addEventListener('DOMContentLoaded', function(){
        document.querySelector('body').insertAdjacentHTML('beforeend', '<div id="x-footer">Anleitung | Tipps & Tricks |  Datenschutzerklärung  Impressum</div>');
}, false);

Damit dieser nicht von den vorhandenen Elementen verdeckt wird, muss noch ein entsprechender CSS-Code in die Datei all.css eingebunden werden. Außerdem muss noch ein CSS-Code eingefügt werden, um den Balken fest am unteren Rand zu positionieren.

Datei: /usr/share/jitsi-meet/css/all.css
/* Korrektur der vorhandenen Elemente*/
#new-toolbox{margin-bottom: 25px;}
#chat-input{margin-bottom: 25px;}
.filmstrip__toolbar{margin-bottom: 25px;}

/* Position des Balkens am unteren Rand */
#x-footer{position: absolute;left: 0;bottom: 0;right: 0;height: 25px;background: black;z-index: 999; text-align: center;}

Smartphone Apps

Die Apps für Smartphones und Tablets beinhalten drei Tracker und sollten daher nur sehr bewusst eingesetzt werden. Siehe auch „Jitsi-Meet-App: Weiterhin Tracker in der iOS- und Android-Version“ von Mike Kuketz. Daher habe ich mich entschieden, den APP-Zwang bei meiner Instanz ganz zu deaktivieren. Sie werden nicht benötigt, da mit dem aktuellen mobilen Webbrowser Jitsi Meet auf dem Smartphone oder Tablet ebenfalls funktioniert. In der neuesten Version gibt es einen Button „Launch in web“ um den Webbrowser zu verwenden. Mit der untenstehenden Lösung kommt diese Abfrage nicht, der Webbrowser wird direkt aufgerufen:

Als erster Schritt muss der Eintrag MOBILE_APP_PROMO in der Jitsi Meet Konfigurationsdatei interface_config.js aus false gesetzt werden, damit nicht mehr auf die App verwiesen wird.

// /usr/share/jitsi-meet/interface_config.js  
118: MOBILE_APP_PROMO: false,
Jitsi Meet App Zwang
Mobile Fehlerdmeldung von Jitsi Meet
Jitsi Meet App deaktivieren Mobile Fehlerdmeldung von Jitsi Meet

Anschließend kommt zwar keine Werbung für die Jitsi Meet Apps mehr, allerdings erscheint jetzt eine Fehlermeldung, dass Jitsi Meet auf mobilen Endgeräten nicht unterstützt wird. Um dies zu beheben, muss die Datei /usr/share/jitsi-meet/libs/app.bundle.min.js bearbeitet werden. Es ist eine komprimierte JavaScript-Datei, wodurch der komplette Inhalt in einer Zeile ist. Es handelt sich um eine IF-Abfrage an der Stelle 101.020. Um sie zu bearbeiten, sollte am besten die Suchfunktion des Editors verwendet werden. So sieht der zu ändernde Eintrag aus:

/usr/share/jitsi-meet/libs/app.bundle.min.js
function i(){return"android"===r.a.OS||“ios”===r.a.OS}

Jetzt wird eine zusätzliche negative Rückgabe (return false;) hinzugefügt:

/usr/share/jitsi-meet/libs/app.bundle.min.js
function i(){return false; return"android"===r.a.OS||“ios”===r.a.OS}

Hinweis: der Funktionsname (function i, function a) kann sich ändern, da er durch ein automatische Script erzeugt wird, mit Ziel eine möglichst kleine Dateigröße zu erzielen. Daher auch nur die Verwendung eines Buchstabens.

Damit erfolgt die Abfrage des mobilen Betriebssystems nicht mehr und damit erscheint auch die Meldung nicht mehr. Jetzt kann Jitsi Meet mit dem mobilen Webbrowser auf dem Smartphone oder Tablet ohne App-Zwang genutzt werden.

Jitsi Meet Artikelserie

Dieser Blogbeitrag ist Teil der Artikelserie „Videokonferenzen mit Jitsi Meet“, die sich mit dem Open-Source-Webkonferenzsystem Jitsi für Video-, Web- und Telefonkonferenzen beschäftigt. Die Artikelserie zu Jitsi Meet umfasst die folgenden Themen:


Jitsi Meet Artikel für Anwender


Jitsi Meet Artikel für Administratoren

Changelog

16.05.2021Neue Funktionen der aktuellen Version aufgenommen.

26.01.2021Änderungen des neuen Updates ergänzt.

06.01.2021Abschnitt zu STUN-Server erweitert.

23.11.2020Abschnitt zu Peer-to-Peer hinzugefügt.

01.11.2020Abschnitt zur Ende-zu-Ende-Verschlüsselung überarbeitet.

24.10.2020Datenschutzerklärung im Konferenzraum hinzugefügt.

06.10.2020Hinweis zur Smartphone Apps ergänzt.

15.07.2020Abschnitt zum Thema Deaktivierung des App Zwang ergänzt.

17.05.2020Text Ergänzt und Beispielcode erweitert.

17.05.2020Ergänzungen zu Cookies / Local Storage hinzugefügt.

09.05.2020Abschnitte zum Thema Gravatar ergänzt und das Thema Raumliste hinzugefügt.

29.04.2020Neuer Abschnitt über die Einstellungen bzw. Deaktivierung von Gravatar hinzugefügt.

Über Tobias Scheible

Tobias Scheible

Hallo, mein Name ist Tobias Scheible. Ich bin begeisterter Informatiker und Sicherheitsforscher mit den Schwerpunkten Cyber Security und IT-Forensik. Mein Wissen teile ich gerne anhand von Fachartikeln hier in meinem Blog und in meinem Fachbuch. Als Referent halte ich Vorträge und Workshops für Verbände und Unternehmen u. a. auch offene Veranstaltungen für den VDI und die IHK.

Kommentare

XtophSg am 12. Mai 2020 um 22:29 Uhr

Sie schreiben oben über Tracker in der jitsi meet App.
Ich habe unter Android mit Firefox für Android eine jitsi meet Session starten können, in dem ich dem Browser gesagt hab, er soll die Desktop – Seite anfordern. Die Button sind dann etwas klein, aber es scheint zu laufen. Vielleicht auch eine Variante für erweiterten Datenschutz?

Tobias am 13. Mai 2020 um 17:43 Uhr

Ja, genau. Auf dem Smartphone lässt sich Jitsi Meet problemlos auch mit dem Webbrowser nutzen. Bei meiner Instanz habe ich die Meldung deaktiviert, dass eine App genutzt werden soll.

Reik kaps am 26. Mai 2020 um 14:59 Uhr

„Leider wird der Eintrag bei einem Update überschrieben und muss daher immer wieder neu gesetzt werden.“

Das lässt sich serverseitig ändern: Man muss dazu einige zusätzliche Einträge in die Webserver-Config (für Nginx/Debian in der Datei /etc/nginx/sites-available/meet.leinelab.org.conf) eintragen sowie eine vorhandene etwas abändern. Zuästzlich legt man Kopieren aller Dateien unter /usr/share/jitsi-meet/static an – etwa unter /opt/jitsi/meet/static. Ich hab das mal hier https://wiki.leinelab.org/doku.php/projekt:meetingserver:config beschrieben, kann gern hier aufgenommen werden

Tobias am 27. Mai 2020 um 12:23 Uhr

Dankeschön für deinen Tipp. Die Einbindung der Konfiguration habe ich ja bereits beschrieben. Die Community Rund um Jitsi Meet ist gerade sehr aktiv und es gibt regelmäßig Updates. Daher gibt es auch immer wieder Änderungen an der Konfiguration. Daher ändere ich lieber das „Original“ und abriete nicht mit einer Kopie. Dadurch stehen mir die Änderungen sofort zur Verfügung.

Daniel Volz am 31. Mai 2020 um 11:13 Uhr

Hallo,

Großartige Artikelserie, hat mir sehr weiter geholfen! 🙂
Vielen Dank hierfür!

Eine Anmerkung:
In der close3.html fehlt in Ihrem Codebeispiel der abschliessende Tag.
Wenn ich das beispiel verwende, ist die Seite aufgrund des fehlenden Tags defekt.

Viele Grüße,
Daniel Volz

Tobias am 3. Juni 2020 um 19:43 Uhr

Hallo Daniel,
Dankeschön für den Hinweis – ist korrigiert.
Grüße
Tobias

Udo Schleucher am 3. Juni 2020 um 15:15 Uhr

Vielen Dank für die vielen hilfreichen Tipps.

Ich rege noch an, die Datei close3.html um ein weiteres Meta-Tag zu erweitern, damit bei Verlassen der Sitzung kein leeres Fenster bleibt, sondern wieder auf die Startseite gesprungen wird:

Tobias am 3. Juni 2020 um 19:55 Uhr

Hallo Udo,
eine Weiterleitung hatte ich bereits im Beispiel.
Grüße
Tobias

Joachim am 8. Juni 2020 um 03:44 Uhr

Frage zu „…Daher habe ich das Feld in der Oberfläche von Jitsi Meet noch zusätzlich per CSS ausgeblendet. Mit der folgenden CSS-Anweisung:

.profile-edit-field:last-child{
display: none;
}
…“

ich habe es da und dort versucht, allerdings ohne erwünschte Auswirkung, einmal war alles schwarz auf dem Bildschirm.
In welcher Datei muss dieses .profile-edit-field stehen?

Tobias am 11. Juni 2020 um 15:05 Uhr

Hallo Joachim,

ich habe bei mir die zusätzlichen CSS-Einträge in die Datei /usr/share/jitsi-meet/css/all.css eingetragen. Dort kannst auch dieser Eintrag ganz am Ende eingefügt werden.

Grüße
Tobias

Christopher Neufer am 6. August 2020 um 13:10 Uhr

Hallo zusammen
Erstmal Dank für den guten Beitrag hier! Aber bei einer Sache kommt es bei mir zu Problemen.
Habe die Smartphone App deaktiviert aber nun bricht die Verbindung auf dem Mobiltelefon immer ab wenn eine 2. Person in den Raum kommt.

Woran könnte das liegen ?

Viele Grüße
Chris

Tobias am 7. August 2020 um 11:41 Uhr

Hallo Chris,

das Verhalten konnte ich von Jitsi Meet bisher nicht beobachten. Tritt dies bei verschiedenen Servern auf?

Grüße
Tobias

Alvaro am 29. August 2020 um 15:11 Uhr

Hallo Tobias.

Wo genau trage ich das CSS ein: .profile-edit-field:last-child{ display: none; }
Ich finde die Datei nicht.
Danke Dir.

Tobias am 30. August 2020 um 11:30 Uhr

Hallo Alvaro,
du kannst die zusätzlichen CSS-Einträge hangz am Ende in die Datei /usr/share/jitsi-meet/css/all.css eingetragen.
Grüße
Tobias

Stefan am 4. Oktober 2020 um 15:12 Uhr

Hallo Tobias,

zunächst vielen Dank für deine tolle und hilfreiche Reihe. Bei mir klappt das Deaktivieren des Verweises auf die MobileApp bzw. deren Zwangsaktivierung unter Chrome nicht. Der erste Schritt ist natürlich kein Problem. Beim zweiten taucht aber (in der aktuellen JitsiMeet-Version) {return“android“===r.a.OS||“ios”===r.a.OS} nur im Zusammenhang mit function a() auf. Setze ich „{return false; “ (mit Leerzeichen) vor das „return“android“ ein, startet der chrome-Browser immer wieder einen neuen Anlauf, baut aber keine Verbindung auf (Browserdaten wurden gelöscht). Ich habe auch alle function i() abgesucht, finde da aber im Zusammenhang mit {return“android“===r.a.OS||“ios”===r.a.OS} nichts.

Gruß Stefan

Tobias am 6. Oktober 2020 um 21:43 Uhr

Hallo Stefan,
der Funktionsname kann sich ändern, da er durch ein automatische Script erzeugt wird mit Ziel eine möglichst kleine Dateigröße zu erzielen. Daher auch nur die Verwendung eines Buchstabens.
Ich habe es gerade noch einmal probiert und bei mir hat es problemlos funktioniert.

function a(){return false; return"android"===r.a.OS||"ios"===r.a.OS}

Kann es sein, dass sich die JavaScript-Datei noch im Cache deines Smartphones befunden hat? Lösche mal alle temporären Dateien und lade dann die Jitsi Meet Instanz neu.
Grüße Tobias

Stefan am 15. Oktober 2020 um 16:40 Uhr

Hallo Tobias,

vielen Dank für deine Rückmeldung! Ich bin jetzt erst wieder dazu gekommen, es auszuprobieren, da ich auch gerade das jüngste Update habe durchlaufen lassen.

Leider bleibt es beim Abschalten des App-Zwanges dabei…Führe ich die o.g. Schritte aus, kann ich die Seite zwar im Browser aufrufen, diese stürzt dann aber permanent mit folgendem Hinweis ab:

Leider ist etwas schiefgelaufen. Wir versuchen, das zu beheben.
Verbinde in …Sekunden (blauer Balken)

Sind letztere abgelaufen, fängt das Spielchen von vorne an.

Der Browser-Cache etc. wurde natürlich mehrmals in Chrome gelöscht.

Schade eigentlich – evt. hat das ja auch mit meinem sonstigen Setup (u.a. apache2, nicht nginx) zu tun. Alles andere funktioniert aber einwandfrei.

Nochmals vielen Dank!

Gruß Stefan

Tobias am 17. Oktober 2020 um 14:52 Uhr

Hallo Stefan,
mmmhhh komisch – solch einen Fehler hatte ich bisher noch nicht. Setzte die geänderten Datei wieder auf der Originalzustand zurück. Von der Github Seite kannst du dir die einzelnen Dateien kopieren. Und führe Anschließend immer nur eine Änderung durch und teste danach Jitsi Meet.
Viele Grüße
Tobias

it-ba am 27. November 2020 um 12:38 Uhr

Großartige Artikelreihe, tolle Tiefe im Thema. Tausend Dank!

Hermann am 27. November 2020 um 21:53 Uhr

Hallo Tobias,
die Anleitungen für Aufsetzen und datenschutzfreundliche Konfiguration eines Jitsi Meet Servers sind perfekt.
Ganz herzlichen Dank dafür!
Hermann

Danny am 4. Dezember 2020 um 09:29 Uhr

Hallo Tobias,

danke, deine Anleitungen sind super und die Umsetzung gelingt einfach.

2-3 kleine Fragen habe ich 🙂

1. Wie bekommst du den Trennstrich im unteren Bereich mit den Datenschutz/Impressum Links hin (bei dir Orange) und wie kann ich die Schriftfarbe und Höhe verändern? Ich bin nicht unbedingt der HTML Experte 🙂 bei mir ist die Schrift an den oberen Rand gedrängt und die Farbe der Links würde ich auch gerne ändern.

Und dazu weiterführend würde ich auch gerne Deine Idee mit der angezeigten Serverauslastung umsetzten 😉

Danke für deine Mühe.

Gruß
-Danny-

Tobias am 14. Dezember 2020 um 16:25 Uhr

Hallo Danny,
du kannst einfach mal in meiner all.css nachschauen: https://meet.scheible.it/css/all.css. Den HTML-Code bzw. das JavaScript das diesen einfügt, findest du im Quelltext, in dem dun ach dem Stichwort „jmfooter“ suchst.
Grüße
Tobias

Martin am 18. Dezember 2020 um 16:34 Uhr

Hallo Tobias,

auch von meiner Seite erstmal ein dickes Dankeschön für die wirklich gute Anleitung!
Mir hat sich da aber eine kleine Verständnisfrage ergeben:

Zum Anfang des Artikels sagst du dass es durchaus sinnvoll sein kann einen eigenen STUN Server aufzusetzen. Später deaktivierst du aber auch die P2P Funktionalität:
p2p: {
enabled: false
}
Da in der config die Adresse des STUN servers innerhalb dieses p2p Blocks passiert (und soweit ich das sehen kann auch nur dort), habe ich mich gefragt ob nach Deaktivieren der P2P Funktionalität überhaupt noch ein STUN Server verwendet/benötigt wird.

Viele Grüße,
Martin

Tobias am 20. Dezember 2020 um 11:51 Uhr

Hallo Martin,
du hast recht. Der STUN-Server wird dann eigentlich nicht mehr benötigt. Nur noch der TURN-Server spielt eine Rolle.
Grüße Tobias

Matthias am 14. Januar 2021 um 20:22 Uhr

Vielen Dank für die tolle Anleitung.

Ich habe versucht die Datenschutzerklärung auch im Konferenzraum einzubinden und den Code wie beschrieben in die all.css bzw. interface_config.js eingefügt.

Auf der Startseite wird der Code nun unten rechts angezeigt. Im Konferenzraum ist davon leider noch nichts zu sehen.

Woran kann dies liegen? Kann es sein, dass hier der Text „überdeckt“ wird?

Über eine kurze Antwort würde ich mich sehr freuen

Tobias am 16. Januar 2021 um 12:17 Uhr

Hallo Matthias,
pauschal lässt sich das leider nur schwer sagen. Versuch mal mit den Entwicklertools deines Webbrowsers nach dem Element zu schauen. Dort kannst du auch die CSS-Werte zum Test modifizieren.
Grüße Tobias

Stefan am 20. Januar 2021 um 13:19 Uhr

Hallo Tobias,

nochmals vielen Dank für deine Reihe. Leider greift die Änderung der Toolbar_Buttons in der interface_config.js bzgl. des Teilens von Youtube-Videos nicht in der MobileApp sondern nur in der DesktopApp und im Browser.
Kann ich da noch an anderer Stelle etwas bewirken?

Viel Grüße

Stefan

Tobias am 20. Januar 2021 um 18:54 Uhr

Hallo Stefan,
ich nutze primär die Weboberfläche. Vielleicht hat ein anderer Leser damit Erfahrung?
Grüße Tobias

Artur am 27. Januar 2021 um 22:16 Uhr

Leider wird das Eingabefeld für die E-Mail-Adresse in den Einstellungen immer noch angezeigt, auch wenn die Verbindung zu Gravatar deaktiviert wurde. Daher habe ich das Feld in der Oberfläche von Jitsi Meet noch zusätzlich per CSS ausgeblendet. Mit der folgenden CSS-Anweisung:

.profile-edit-field:last-child{
display: none;
}

In welcher Datei muss ich das anpassen?

Tobias am 28. Januar 2021 um 18:00 Uhr

Die Anweisung kann einfach in die all.css (/usr/share/jitsi-meet/css/all.css) ganz unten eingetragen werden. Habe ich gleich im Artikel ergänzt.

Leora am 28. Januar 2021 um 12:19 Uhr

Hallo,
habe gerade den Tipp von den Freifunkern München bekommen:
In der App „Digitales Klassenzimmer“ sind die Tracker ausgebaut.

Tobias am 28. Januar 2021 um 18:14 Uhr

Hallo Leora,
Dankeschön für den Hinweis. Leider lässt sich die App nicht mit Exodus überpürfen. Weiter Infos zur App: hopp-foundation.de.
Grüße Tobias

Micha am 5. Februar 2021 um 11:34 Uhr

Hallo und vielen Danke für Ihre hilfreiche Ausarbeitung.

Wie oben beschrieben habe ich in der Konfigurationsdatei /usr/share/jitsi-meet/interface_config.js alles auf true gesetzt.

DISPLAY_WELCOME_FOOTER: true,
DISPLAY_WELCOME_PAGE_ADDITIONAL_CARD: true,
DISPLAY_WELCOME_PAGE_CONTENT: true,
DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: true,

Die Datei /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html wurde ebenfalls angepasst.

Leider sehe ich im meinem Footer absolut nichts.

Haben Sie eventuell einen Tipp?

Liebe Grüße

Tobias am 6. Februar 2021 um 16:38 Uhr

Hallo Micha,
Inhalte in der Datei welcomePageAdditionalContent.html Plus die Option DISPLAY_WELCOME_PAGE_CONTENT sollten ausreichen. Hast du vielleicht die Kästen mit CSS ausgeblendet, weil du die Raumliste nicht nutzt?
Grüße Tobias

Mario am 14. März 2021 um 11:00 Uhr

Hallo,

erstmal vielen Dank für die tollen Extra-Tipps. Habe soweit auch alles umgesetzt, um die Datenschutz-Hinweise auf der Willkommensseite und auch in der Anwendung anzuzeigen 🙂 Aber: Auf der Willkommensseite verdecken die Datenschutz-Hinweise nun das Fenster der zuletzt besuchten Räume und die Leiste will einfach nicht in die Fußleiste rücken (sobald man runterscrollt). Was mache ich hier falsch? Danke und viele Grüße, Mario.

Tobias am 14. März 2021 um 20:11 Uhr

Hallo Mario,
dazu musst du position: absolute; auf position: fixed; ändern.
Grüße Tobias

Heiko Haas am 18. April 2021 um 18:49 Uhr

Hallo Tobias,

vielen Dank für die super Anleitung zur datenschutzfreundlichen Konfiguration.

Ich habe das Nightly Build installiert und die Vorschaltseite (prejoin Page) aktiviert.

Die Einstellung „DISABLE_VIDEO_BACKGROUND: true,“ in der Datei /usr/share/jitsi-meet/interface_config.js zieht aber nicht auf der Vorschaltseite.

Im Konferenzraum kann der Benutzer den Hintergrund nicht mehr einstellen, aber in der projoinPage kann er den Hintergrund weiterhin einstellen.

Wie kann man dort die Hintergrundeinstellung deaktivieren?

Gruß Heiko

Tobias am 29. April 2021 um 23:51 Uhr

Hallo Heiko,
du kannst den Button per CSS ausblenden:

[aria-label="Select Background"] {
    display: none;
}

Grüße Tobias

Timon am 3. Mai 2021 um 09:16 Uhr

Hallo Tobias,

auch zu diesem Artikel hat sich eine Frage ergeben.
Zu Punkt „Datenschutzerklärung im Konferenzraum“: Ich habe es nach deiner Anleitung konfiguriert. Im Ergebnis sehe ich auf unterschiedlichen Geräten/Betriebssystemen/Browsern zwar einen kleinen zusätzlichen Bereich am unteren Ende der Seite. Ich sehe jedoch keinen Text. Wenn ich auf der Seite nach dem Stichwort suche, welches dort mit Link zur Datenschutzerklärung erscheinen sollte, dann finde ich tatsächlich einen winzigen Text links unten. Jedoch ohne Link.
Folgendes habe ich eingerichtet:
1.: Den Code für den x-footer am Ende der interface-config.js hinzugefügt.
2.: In der all.css den zusätzlichen Code eingefügt.
Sind die „#“ tatsächlich so davorzusetzen? Oder ist das eine Kommentierung? Ich habe es so wie es ist eingesetzt. Mit css kenne ich mich leider überhaupt nicht aus, was meine Fehlersuche schwierig macht.
Viele Grüße

Tobias am 4. Mai 2021 um 18:42 Uhr

Hallo Timon,
das #-Symbol steht in CSS für die ID des Element. Mit den Web Entwickler Tools kannst du nach schauen, ob die CSS-Anweisungen übernommen wurden.
Grüße Tobias

Max am 7. Mai 2021 um 19:47 Uhr

Hallo Tobias,
wie verhält sich das jetzt bei der neusten Version, da kann man ja selbst Bildschirmhintergründe einblenden…ist da weiterhin noch so, das was über storgae.google…nachgeladen wird?
Danke für die guten Hinweise.
Max

Tobias am 15. Mai 2021 um 09:27 Uhr

Hallo Max,
so wie es aussieht werden keine externe Dienste mehr verwendet. Sobald ich es ausführlich getestet habe, aktualisiere ich den Artikel.
Grüße Tobias

Krasimira am 10. August 2021 um 12:02 Uhr

Hallo Herr Scheible,

danke für die tollen Anleitungen.
Ich habe ein Problem mit der Visualisierung des Datenschutz-Footer nachdem ich das welcome backgroundbild auf full screen ausgedehnt habe. Der Cart Container ist auf disable: none, noch dazu habe ich RECENT_LIST_ENABLED auf false gesetzt. Irgndwie überlappt sich alles, was mache ich falsch.

Danke und Grüße
Krasimira

Stefan am 30. September 2021 um 18:13 Uhr

Hallo Tobias,
vielen Dank erst einmal für deine sehr ausführlichen Anleitungen.
Eine Frage habe ich dennoch zu den Mobilen Apps.
Gibt es auch eine einfache Möglichkeit die Promo auf der Startseite zu verhindern?
Mit einer der letzten Versionen wurde ja das auch noch hinzugefügt.
Grüße Stefan

Tobias am 1. Oktober 2021 um 09:06 Uhr

Hallo Stefan,
der Hinweis kann in der interface_config.js deaktiviert werden. Probier mal die beiden folgenden Parametern aus:

DISPLAY_WELCOME_FOOTER: false,
MOBILE_APP_PROMO: false,

Grüße Tobias

Schreibe einen Kommentar!

Hilfe zum Kommentieren und Hiweise

Um kommentieren zu können, geben sie bitte mindestens ihren Namen und ihre E-Mail-Adresse an. Bitte nutzen Sie die Kommentarfunktion nicht dazu, andere zu beleidigen oder Spam zu verbreiten. Trolle und Spammer sind hier unerwünscht! Unangemessene Kommentare, die zum Beispiel gegen geltendes Recht verstoßen, eine Gefährdung anderer Besucher darstellen oder keinen sinvollen Inhalt beinhalten, werden gelöscht oder angepasst.

Name: Ihr Name, der oberhalb des Kommentars steht, gerne auch Ihren echten Namen, das erleichtert die Kommunikation für alle. Sollte ein Spam-Keyword als Name verwendet werden, kann dieses entfernt oder korrigiert werden.

E-Mail: Ihre E-Mail Adresse dient zur Identifizierung weiterer Kommentare und damit ich direkt Kontakt aufnehmen kann. Die E-Mail Adresse wird natürlich nicht veröffentlicht und nicht weitergegeben.

Website: Hier können Sie ihren eigenen Blog bzw. ihre eigene Website eintragen, dadurch wird Ihr Name und Ihr Avatar-Bild verlinkt. Werden rein kommerzielle Angebote offensichtlich beworben, setze ich den Link auf nofollow und unangemessene werden einfach entfernt.

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <hr> <big> <small> <sub> <sup> <u>

Ihre E-Mailadresse wird nicht veröffentlicht. Mit dem Absenden anerkennen Sie die Datenschutzhinweis des Blogs.