Euer eigener Videokonferenz-Server

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.

In dieser Step-by-Step Anleitung gehen wir davon aus, daß Sie ein bereits lauffähiges Linux-System haben (wir empfehlen ganz im Gegensatz zu unserer sonstigen Philosophie Ubuntu Linux Server 22.04 LTS) welches den Vorgaben für eine Jitsi Meet Installation entspricht (siehe offizielles Jitsi Meet SHG - Ubuntu). Wichtig ist, daß Ihr System OpenJDK 11 unbedingt verwendet; das ist Mandatory!

Bei der Auswahl eines Servers zum Ausführen Ihrer Jitsi Meet-Instanz müssen Sie die Systemressourcen für das Hosten von Konferenzräumen berücksichtigen. Die folgenden Benchmark-Informationen wurden von einer virtuellen Single-Core-Maschine unter Verwendung hochwertiger Videoeinstellungen gesammelt:

 CPUServerbandbreite
Zwei Teilnehmer5 %30 Kbit/s Up, 100 Kbit/s Down
Drei Teilnehmer15 %5 Mbit/s Up, 3 Mbit/s Down

Der sprunghafte Anstieg der Ressourcennutzung zwischen zwei und drei Teilnehmern ist darauf zurückzuführen, dass Jitsi Meet die Anrufdaten direkt zwischen den Clients weiterleitet, wenn es zwei davon gibt. Anrufdaten werden über den Jitsi Meet-Server weitergeleitet, wenn mehr als zwei Clients vorhanden sind.

Bitte loggen Sie sich nun in Ihre Linux-Maschine als Root-User an. Wir empfehlen wenn Sie dies über eine SSH-Session machen die Verwendung des Befehls "screen" (siehe Befehl "screen"-eine Einführung).

Als erstes setzen wir nun den System-Hostname analog zu Ihrem Domain-Namen, den Sie für Ihre Jitsi Meet Instanz verwenden möchten. Wir nehmen hier als Beispiel meet.example.com. Dieser Befehl ändert den derzeitigen Hostnamen und modifiziert gleichzeitig /etc/hostname, daß nach jedem Reboot den Hostname wieder Ihrem System mitteilt!

Anschließend prüfen wir den Hostname mit dem folgenden Befehl.

Dieser Befehl zeigt Ihnen den zuvor eingegebenen Hostnamen an!

Als nächstens tragen wir in /etc/hosts die Public-IP-Adresse Ihres Jitsi Meet-Servers ein.

Fügen Sie hier unterhalb der Zeile 127.0.0.1 localhost folgende Zeile ein:

Als nächstes kümmern wir uns um die lokalen Firewall-Einstellungen. Jitsi Meet benötigt einige zusätzliche geöffnete Ports, um die Kommunikation unter den Teilnehmern sicher zu stellen. Diese müssen Sie natürlich auch in Ihrer externen Firewall berücksichtigen! Falls Sie es noch nicht getan haben, lassen Sie in Ihrer lokalen Firewall den SSH-Traffic zu. Dazu ist folgender Befehl notwendig.

Jetzt die Ports für die Jitsi Meet Kommunikation.
80/tcp benötigt für die TLS Zertifikats Registrierungs Anforderung
443/tcp benötigt für die Webpage, Konferenzraum-Erstellung etc.
10000/udp, 3478/udp, 5349/tcp benötigt für den verschlüsselten Datenverkehr während der Konferenz

Prüfen Sie, ob alle Einstellungen korrekt übernommen wurden mit

Wenn Sie folgende Ausgabe erhalten (anstatt einer Auflistung sämtlicher Ports), haben Sie die lokale Firewall noch nicht gestartet.

Dann starten Sie diese durch die Eingabe des folgenden Befehls:

Jetzt sind wir bereit für die Installation von Jitsi Meet!

Sie fügen nun die Jitsi- und Prosody APT-Repositorys zu Ihrem Server hinzu. Prosody ist ein Open-Source-XMPP-Chatserver, den Jitsi für Messaging und Administratorauthentifizierung verwendet. Anschließend installieren Sie das Jitsi Meet-Paket aus seinem Repository, wodurch sichergestellt wird, daß Sie immer das neueste stabile Jitsi Meet-Paket ausführen.

Laden Sie zunächst den Jitsi-GPG-Schlüssel mit dem Curl-Download-Dienstprogramm herunter:

In diesem Befehl gibt -o den Namen der Datei an, in der die heruntergeladenen Schlüsseldaten gespeichert werden. Der APT-Paketmanager verwendet diesen GPG-Schlüssel, um die Pakete zu validieren, die Sie aus dem Jitsi-Repository herunterladen.

Fügen Sie als nächstes den GPG-Schlüssel mit dem folgenden gpg-Befehl zum Schlüsselbund Ihres Systems hinzu:

Mit diesem GPG-Befehl generieren Sie mit --output einen Dateinamen zum Speichern des Schlüsselbunds und mit --dearmor entpacken Sie den Schlüssel in ein von APT verwendbares Format.

Sie fügen nun das Jitsi-Repository zu Ihrem Server hinzu, indem Sie eine neue APT-Quelldatei erstellen, die das Jitsi-Repository enthält. Öffnen und erstellen Sie die neue Datei mit dem folgenden Befehl:

und fügen Sie folgende Zeile ein:

Speichern Sie die Datei und beenden Sie den Editor.

Als nächstes machen Sie die selben Schritte, um das Prosody-Paket zu installieren. Downloaden Sie zunächst den Prosody GPG-Schlüssel:

Fügen Sie als nächstes den GPG-Schlüssel mit dem folgenden gpg-Befehl zum Schlüsselbund Ihres Systems hinzu:

Sie fügen nun das Prosody-Repository zu Ihrem Server hinzu, indem Sie eine neue APT-Quelldatei erstellen, die das Prosody-Repository enthält. Öffnen und erstellen Sie die neue Datei mit dem folgenden Befehl:

und fügen Sie folgende Zeile ein:

Speichern Sie die Datei und beenden Sie den Editor.

Sie können nun die beiden zuvor heruntergeladenen GPG-Schlüssel löschen, da diese nicht mehr gebraucht werden.

Führen Sie abschließend ein Systemupdate durch, um die Paketliste aus den neuen Repositorys zu sammeln, und installieren Sie dann das Paket jitsi-meet.

Drücken Sie [y], um die Installation der Pakete zu bestätigen, wenn Sie dazu aufgefordert werden.

Während der Installation von jitsi-meet werden Sie aufgefordert, den Domänennamen (z. B. meet.example.com) einzugeben, den Sie für Ihre Jitsi Meet-Instanz verwenden möchten.



Bewegen Sie den Cursor mit der TAB-Taste aus dem Feld "Hostname", um die Schaltfläche [OK] zu markieren. Drücken Sie die EINGABETASTE, wenn [OK] markiert ist, um den Hostnamen zu speichern.

Anschließend wird Ihnen ein neues Dialogfeld angezeigt, in dem Sie gefragt werden, ob Jitsi ein LetsEncrypt-Zertifikat, ein selbstsigniertes TLS-Zertifikat erstellen und verwenden oder ein vorhandenes verwenden soll:



In neueren Installations-Routinen ist die Auswahl "LetsEncrypt-Zertifikat nutzen" bereits ein eigener Auswahlpunkt. Wir empfehlen Ihnen, ein LetsEcrypt-Zertifikat zu nutzen (außer Sie haben ein eigenständiges Zertifikat); also wählen wir die Zeile mit "LetsEcrypt" aus.

Die Installations-Routine fordert Sie nun auf, eine E-Mail-Adresse anzugeben.

Diese E-Mail-Adresse wird an den Zertifikatsaussteller https://letsencrypt.org übermittelt und verwendet, um Sie über Sicherheit und andere Angelegenheiten im Zusammenhang mit dem Zertifikat zu informieren. Sie müssen hier eine E-Mail-Adresse eingeben, um mit der Installation fortzufahren.

Die Installations-Routine schließt die Installation und Konfiguration eines SSL-Zertifikats für Ihren Jitsi-Server ohne weitere Benutzereingaben ab.

Die Standardkonfiguration für Jitsi Meet sieht vor, daß jeder, der die Homepage Ihres Jitsi Meet-Servers besucht, einen neuen Konferenzraum erstellen kann. Dieser Standardmodus nutzt die Systemressourcen Ihres Servers zum Betrieb des Konferenzraums und ist für nicht autorisierte Benutzer nicht wünschenswert. Daher müssen wir das System noch ein wenig "tunen".

Sie konfigurieren nun Ihren Jitsi Meet-Server so, daß nur registrierte Benutzer Konferenzräume erstellen können.

Die Dateien, die Sie bearbeiten, wurden vom Installationsprogramm generiert und mit Ihrem Domänennamen konfiguriert. In den folgenden Beispielen wird die Variable meet.example.com anstelle Ihres Domainnamens verwendet.

Öffnen Sie zunächst /etc/prosody/conf.avail/meet.example.com.cfg.lua mit einem Texteditor:

Suchen Sie in der Datei nach dem Ausdruck

und ersetzen Sie diese Zeile durch

Diese Konfiguration weist Jitsi Meet an, die Authentifizierung mit Benutzername und Passwort zu erzwingen, bevor die Erstellung eines Konferenzraums durch einen neuen Besucher zugelassen wird.

Fügen Sie in derselben Datei am Ende der Datei den folgenden Abschnitt hinzu:

Mit dieser Konfiguration kann jeder Benutzer Konferenzräumen beitreten, die ein authentifizierter Benutzer erstellt hat. Allerdings muß der Gast zur Eingabe über die eindeutige URL (und ein optionales Passwort) verfügen.

Hier haben Sie das Wort [guest.] an der Vorderseite Ihres Domainnamens hinzugefügt. Der korrekte Name für "meet.example.com" lautet hier beispielsweise "guest.meet.example.com". Der Hostname wird intern von Jitsi Meet verwendet, sodaß Sie ihn niemals in einen Browser eingeben müssen oder einen separaten DNS-Eintrag für den Namen benötigen.

Wenn Sie diese Einträge bzw. Änderungen durchgeführt haben, speichern und schließen Sie die Datei.

Als nächstes öffnen Sie die Datei /etc/jitsi/meet/meet.example.com-config.js mit einem Texteditor.

Suchen Sie in dieser Datei nach dem Ausdruck "anonymousdomain", der Sie zu nachstehender Zeile bringen muss.

Entfernen Sie als erstes die "//" und ändern Sie die Zeile auf

Sie verwenden den Hostnamen "guest.meet.example.com", den Sie zuvor verwendet haben. Diese Konfiguration teilt Jitsi Meet mit, welcher interne Hostname für die nicht authentifizierten Gäste verwendet werden soll. Speichern und schließen Sie die Datei.

Als nächstes erstellen und öffnen Sie /etc/jitsi/jicofo/sip-communicator.properties:

und fügen folgende Zeile ein:

Diese Konfiguration verweist einen der Jitsi Meet-Prozesse auf den lokalen Server, der die nun erforderliche Benutzerauthentifizierung durchführt. Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Ihre Jitsi Meet-Instanz ist nun so konfiguriert, daß nur registrierte Benutzer Konferenzräume erstellen können. Nachdem Sie einen Konferenzraum erstellt haben, kann jeder diesem beitreten, ohne ein registrierter Benutzer zu sein. Sie benötigen lediglich die eindeutige Adresse des Konferenzraums und ein optionales Passwort, das vom Ersteller des Raums festgelegt wurde.

Da Jitsi Meet nun so konfiguriert ist, daß für die Raumerstellung authentifizierte Benutzer erforderlich sind, müssen Sie diese Benutzer und ihre Passwörter registrieren. Dazu verwenden Sie das Dienstprogramm prosodyctl.

Führen Sie den folgenden Befehl aus, um einen Benutzer zu Ihrem Server hinzuzufügen:

Der Benutzer, den Sie hier hinzufügen, ist kein Systembenutzer. Sie können nur einen Konferenzraum erstellen und sich nicht über SSH bei Ihrem Server anmelden.

Wenn Sie diesen Befehl ausführen, wird möglicherweise die folgende Warnung angezeigt:

Das lua5.1-Paket ist weiterhin eine erforderliche Abhängigkeit für Prosody und stellt kein Sicherheitsrisiko für Ihr System dar, das es verwendet. Die Abhängigkeit von lua5.1 wird mit der Weiterentwicklung von Prosody und Jitsi Meet auslaufen.

Starten Sie abschließend alle Jitsi Meet-Prozesse neu, um die neue Konfiguration zu laden.

Ihr Jitsi Meet-Server ist jetzt vollständig installiert, konfiguriert und läuft. Wir raten Ihnen trotzdem, noch folgende Konfigurationen durchzuführen, um Ihre Installation von Jitsi Meet Ihren Erfordernissen und CI's anzupassen.

In der Datei /usr/share/jitsi-meet/interface_config.js ändern Sie folgendes:

Ändern Sie Ihren Firmennamen anstelle von Jitsi Meet als Wert der Variable APP_NAME in der Datei interface_config.js.

Ändern Sie DEFAULT_REMOTE_DISPLAY_NAME in "Anonymer Benutzer" anstelle von "Fellow Jitster". Wenn ein Benutzer seinen Namen nicht angibt, wird sein Name als "Anonymer Benutzer" angezeigt.

Sie können auch das Layout Ihren Bedürfnissen anpassen. Kopieren Sie z.B. Ihr Favorit-Icon (im Format .ico) nach /usr/share/jitsi-meet/images und ersetzen Sie die Datei "favicon.ico".

Auch das Logo - welches auf der Startseite und innerhalb jeder Konferenz angezeigt wird - können Sie ändern. Ersetzen Sie einfach die Datei "watermark.svg" im Ordner /usr/share/jitsi-meet/images mit Ihrem nach .svg-konvertiertem Logo mit einer maximalen Auflösung von 150px*50px. Wenn Sie zu einer anderen Website weiterleiten möchten, wenn jemand auf das Logo klickt, fügen bzw. tauschen Sie diese URL in der Datei /usr/share/jitsi-meet/interface_config.js als Wert des Parameters "JITSI_WATERMARK_LINK" hinzu bzw. aus, andernfalls lassen Sie sie leer.

Zum Schluß passen wir noch das Hintergrundbild an. Ersetzen Sie einfach die Datei "welcome-background.png" im Ordner /usr/share/jitsi-meet/images mit einer gleichnamigen Datei mit Ihrem Wunschbild mit einer maximalen Auflösung von 1280px*550px.

Wir haben aber auch noch in Europa die Datenschutz-Grundverordnung. Um auch unsere Jitsi Meet-Instanz DSGVO-konform zu betreiben. Ü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(z.B. 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: Eine Verbindung zu einem Drittdienst wie gravatar.com würden wir persönlich gerne vermeiden. Das lässt sich über die Konfiguration wie folgt erledigen: und ändere den Wert "disabledThirdPartyRequests" auf "true". Danach sind die Third-Party-Requests deaktiviert. Davon nicht betroffen sind die Einstellungen der STUN- und TURN-Server.

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

und ändere den Wert "level" auf "WARNING".

Ein paar kleine Adaptierungen der Datei /etc/jitsi/meet/meet.example.com-config.js möchten wir noch durchführen.

Wir legen die Standardsprache von Jitsi Meet auf Deutsch fest.

Wir reduzieren die Auflösung von 720 auf 480.

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

Wir limitieren die übertragenen Video-Feeds.

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

Wir deaktivieren die blauen Audio-Dots beim Speaker.

Reduziert die CPU-Auslastung bei den Clients.

Nun ist Ihre Jitsi Meet-Instanz vollständig konfiguriert. Wir wünschen Ihnen damit nun viel Spaß und "Happy Conferencing"!