Office & BusinessWeb & Netzkultur

Videokonferenz: Jitsi Meet selbst betreiben

Jitsi Meet aufsetzen: Alle Schritte für den realen Betrieb aus einem Fritzbox-Netzwerk.

Jitsi Meet könnt Ihr einfach über meet.jit.si als Service nutzen – ohne Anmeldung. Alternativ lässt sich Jitsi auch daheim betreiben, so dass Ihr für Freunde, Kollegen oder die Familie einen komplett eigenen Service habt. Für normale Heim-Nutzer gibt es dafür eine recht komfortable Variante, die sich vielleicht erstmal kompliziert anhört: Ein Docker-Container in einer virtuellen Maschine, erreichbar über Dynamic DNS und Portfreigaben ;) Aber das täuscht!

Das Setup

Linux-Nutzer können Jitsi natürlich auch direkt im System installieren, aber es abert: Aber es ist komplexer, aber es ist unsicherer, aber es verstopft das System, wenn man Jitsi und Docker gerade mal nicht braucht. Und überhaupt – vermutlich seid Ihr Windows-Nutzer, woll?!

Und darum wird hier gleich doppelt gekapselt: Als Jitsi-Server (im Sinne von Hardware + Betriebssystem) kommt eine virtuelle Maschine (VM) zum Einsatz und darin läuft ein Docker-Container mit Jitsi selbst – im Grunde ebenfalls eine Art leichtgewichtiger VM. Was es genau mit Containern und VMs auf sich hat, müsst Ihr aber gar nicht wissen, um Jitsi zu betreiben. Helfen tut es natürlich dennoch, denn irgendwann wird irgendwas nicht funktionieren … Wenn es sich nur um Kamera- und Mikroproblemchen handelt, hat Boris vielleicht schon die Lösung.

Aber egal, das Folgende kann jeder in 30 Minuten nachbauen:

  • VM einrichten
  • DDNS einrichten
  • Fritzbox-Portfreigaben einrichten
  • Jitsi-Container einrichten und starten
    — Workflow bei Änderungen
    — Auf Jitsi zugreifen

Bei Nicht-Fritzbox-Routern funktioniert das natürlich nahezu genauso, aber die Fritzbox ist halt der Standard und wir wollen hier den üblichsten Fall abarbeiten.

Jitsi Meet, her betrieben und vierfach besucht von mir selbst ;)

1. VM einrichten

Für VM-Neulinge haben wir einen separaten Artikel, der keinerlei Vorwissen benötigt. Die Kurzversion:

  • Installiert Virtual Box.
  • Ladet ein Linux-ISO-Image herunter – zum Beispiel Debian.
  • Erstellt in VB eine neue VM, vorzugsweise mit
    — großer, dynamischer Festplatte,
    — 2+ GB RAM,
    — 2+ CPUs und
    — dem Netzwerkmodus „Netzwerkbrücke“ (NAT ist sicherer, die Brücke bisweilen einfacher).
  • Bootet die VM vom ISO-Image und installiert Debian.

Sobald das System gebootet hat, öffnet einen Terminal, um etwas Software zu installieren. Unter Debian gibt es standardmäßig keinen sudo-Mechanismus, stattdessen werdet Ihr permanent zu root mit su:

su -
apt-get update
apt-get install docker compose-docker git curl
exit #Um wieder zum normalen Nutzer zu werden.

Git braucht Ihr nicht unbedingt, könnt es aber zum Herunterladen der aktuellsten Jitsi-Version verwenden. Curl braucht Ihr auch nicht, aber darüber könnt Ihr unsere hauseigene Linux-Hilfe cli.help nutzen, die auch Docker-Hilfe anbietet.

2. DDNS einrichten

DDNS steht für Dynamic Domain Name Service – auch dafür haben wir ein paar eigene Beiträge, relevant ist vor allem Christians Dynv6: Gratis-DynDNS-Dienst in der FritzBox einrichten. Achtung: Lasst Euch nicht von dem Namen täuschen, er meint DDNS, nicht DynDNS – das ist nämlich ein kostenpflichtiger DDNS-Anbieter. DynDNS war früher kostenlos und ist quasi für DDNS-Anbieter, was Tempo für Taschentücher oder Fön für Haartrockner ist. Ich konnte es ihm leider nicht ausreden. Und auch AVM benutzt den Markennamen als Gattungsbegriff in seiner Web-Oberfläche. Tja, Populismus ist eben so schön einfach …

Egal, jedenfalls heißt DDNS: Daheim bekommt Ihr von Eurem Internet-Anbieter eine IP-Adresse bei der „Einwahl“ zugewiesen – und zwar dynamisch, sprich sie ändert sich im Laufe der Zeit. Damit Ihr immer über denselben Namen statt wechselnder IP-Adressen über das Internet auf Euer Heimnetz zugreifen könnt, muss eben dieser Name – etwa mein-lan.irgendein-ddns-anbieter.com – mit Eurer jeweiligen IP-Adresse – etwa 47.123.123.123 – synchronisiert werden. Dazu meldet sich Eure Router oder Rechner bei IP-Wechsel beim DDNS-Anbieter.

Einheitlich lässt sich das nicht beschreiben, weil es auf den DDNS-Anbieter ankommt. Grundsätzlich tragt Ihr in der Fritzbox unter Internet/Freigaben/DynDNS folgende Daten ein:

  • Update-URL, die der Anbieter zur Verfügung stellt
  • Domain-Name, der Euch zu Eurem Router bringt
  • Nutzername
  • Passwort

Wenn Ihr fortan etwa mein-lan.irgendein-ddns-anbieter.com im Browser ansurft, landet Ihr immer bei Eurem Router, egal wie die IP-Adresse aktuell lautet.

Übrigens: Natürlich könnt Ihr den ganzen DDNS-Kram auch weglassen und anderen Teilnehmern einfach die aktuelle IP-Adresse mitteilen – so oft wechseln die Dinger heutzutage nicht mehr.

DDNS macht LANs über einen Domainnamen erreichbar.

3. Portfreigaben einrichten

Noch landet Ihr beim Router und es passiert: nichts. Ihr müsst erst noch eine Portweiterleitung einrichten. Dienste im Web werden immer über einen solchen Port, eine Art Hausnummer für Dienste, vermittelt. HTTP-Webseiten werden zum Beispiel standardmäßig über Port 80 ausgeliefert, HTTPS-Seiten über Port 443 – was Ihr im Browser nur nicht seht. Aber gebt mal zum Beispiel tutonaut.de:443 ein – das Ergebnis ist dasselbe wie ohne die Portangabe.

Wenn nun eine Jitsi-Anfrage auf den Router trifft, muss der Router wissen, an welches Gerät (die VM) und über welchen Port dieser Datenverkehr/Traffic weitergeleitet werden soll. Auch das erledigt Ihr in der Fritzbox-Oberfläche, unter Internet/Freigaben/Portfreigaben:

  • „Gerät für Freigabe hinzufügen“ wählen.
  • Unter „Gerät“ die erstellte VM auswählen.
  • „Neue Freigabe“ wählen.
  • Unter „Anwendung“ den HTTP-Server wählen, Port 80 belassen, bestätigen.
  • Schritt wiederholen und den HTTPS-Server mit Port 443 ebenfalls hinzufügen.
  • Portfreigaben über OK-Button bestätigen.
portfreigabe in fritzbox
Portfreigaben leiten eingehenden Traffic an bestimmte Ports bestimmter Geräte weiter.

4. Jitsi einrichten

Nun geht es endlich an Jitsi.

Zunächst müsst Ihr das aktuelle Jitsi-Release herunterladen und im Heim-Verzeichnis entpacken, so dass Ihr anschließend alles Weitere unter /home/NUTZERNAME/docker-jitsi-meet findet.

Alternativ könnt Ihr einfach per git das Repository klonen – das ist dann aktueller, aber nicht als Release freigegeben und könnte eher Fehler beinhalten. Hier funktioniert es aber reibungslos – mit dem Code von Heute!

git clone https://github.com/jitsi/docker-jitsi-meet && cd docker-jitsi-meet

Ihr seid nun im Jitsi-Verzeichnis und könnt die Beispielkonfigurationsdatei in eine Echte kopieren:

cp env.example .env

Öffnet nun die .env-Datei mit einem Editor Eurer Wahl, bei Debian mit LXDE zum Beispiel mousepad:

mousepad .env

In der Datei steht viel drin – für das hier beschriebene Beispiel-Setup genügt es, die folgenden Zeilen zu bearbeiten:

# Ports für den Zugriff auf Jitsi:
HTTP_PORT=80
HTTPS_PORT=443

# LAN-IP-Adresse der VM:
DOCKER_HOST_ADDRESS=192.168.178.111

# HTTPS-Zertifikat über Let's Encrypt aktivieren:
ENABLE_LETSENCRYPT=1

# Über DDNS-Anbieter generierten Domain-Namen angeben:
LETSENCRYPT_DOMAIN=mein-lan.irgendein-ddns-anbieter.com

# E-Mail - muss sein und sollte eine echte Adresse sein!
LETSENCRYPT_EMAIL=ichunddu@example.com

Für eine funktionierende, verschlüsselte Videokonferenz genügt das schon – bis auf eine Kleinigkeit: Oben in der .env-Datei gibt es einen Bereich für Passwörter. Da geht es aber nur um die Absicherung der internen Kommunikation der Programmteile. Daher gebt Ihr dort auch nichts ein, sondern startet das mitgelieferte Skript, das dort sichere Passwörter einträgt:

./gen-passwords.sh

Zum Schluss der Konfiguration müssen noch einige Verzeichnisse erstellt werden:

mkdir -p ~/.jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}

Zum Starten werdet Ihr erst wieder zum Superuser/Root/Admin:

su
docker-compose up -d

Nun könnt Ihr in der VM über https://localhost:443 auf Jitsi zugreifen, von anderen Geräten im LAN über https://192.168.178.111:443 und über das Internet via https://mein-lan.irgendein-ddns-anbieter.com:443 – und zwar jeweils mit dem HTTPS davor!

screenshot von jitsi
Nach der Installation begrüßt Euch Euer eigenes Jitsi Meet wie auch der meet.jit.si-Service.

Workflow bei Änderungen

So, nun wird es wichtig: Die Konfiguration in .env wird nicht bei jedem Neustart der Container oder der VM neu eingelesen. Wenn Ihr dort etwas ändert, müsst Ihr die Container stoppen, das Konfigurationsverzeichnis ~/.jitsi-meet-cfg/ löschen und die Container neu starten:

rm -r ~/.jitsi-meet-cfg/
mkdir -p ~/.jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}
su
docker stop $(docker ps -a -q)
exit
docker-compose up -d

Das docker-stop-Kommando stoppt alle laufenden Container – also nicht nur Jitsi.

Hinweise

Let’s Encrypt ist ein großartiger kostenloser Service, der einer Beschränkung unterliegt: Immer, wenn Ihr die Confi-Verzeichnisse löscht und die .env neu abarbeiten lasst, wird eine neue Anfrage für ein Zertifikat gestellt – und die Menge dieser Anfragen ist limitiert (derzeit wohl auf fünf pro Woche). Von daher solltet Ihr die Let’s-Encrypt-Konfiguration eigentlich erst dann aktivieren, wenn alles andere korrekt läuft.

Ohne Let’s-Encrypt-Zertifikat funktioniert der Zugriff über das Internet nicht. Innerhalb des LANs gibt es Fehlermeldungen im Browser, die Ihr aber einfach übergehen könnt – Ihr wißt ja, dass just alles seine Richtigkeit hat.

Wenn Ihr mal einen Blick auf die Docker-Container werfen wollt:

su
docker ps

Weitere Hilfe zu Docker bekommt Ihr zum Beispiel über

curl cli.help/docker

Am Ende des Tages spielen hier ziemlich viele Dinge ein komplexes Spiel miteinander:

  • Windows-Rechner
  • Virtueller Linux-Rechner
  • Docker-Container
  • Jitsi-Service
  • DDNS-Anbindung
  • Portfreigaben
  • TLS-Zertifikate
  • XYZ-Netzwerkgeräte und -konfigurationen …

Und ja, das birgt einiges an Fehlerpotenzial – selbst wenn die Anleitung überall von Beinahe-Standards ausgeht. Fast, bei DDNS gibt es leider nichts, was so viel üblicher wäre als etwas anderes.

In der offiziellen, englischen Installatinsanleitung für die Docker-Variante findet Ihr noch weitere Hinweise zur Konfiguration, zum Beispiel zu jigasi, mit dem auch reguläre SIP-Clients (Telefonie) an einer Jitsi-Konferenz teilnehmen können. Für andere Funktionen müssen auch weitere Ports weitergeleitet werden. Und so weiter. Leider ist die Doku nicht wirklich für Laien gedacht, aber tendenziell läuft ja schon alles.

Übrigens: Wenn Jitsi richtig Spaß machen soll, braucht Ihr dringend noch sowas …

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

3 Kommentare

  1. Hallo Mirco,

    über das „abert“ bin auch darüber gestolpert, der Sinn hat sich aber dann im Text ergeben :)

    Meine Frage:
    Kann ich auf einen NAS Server (Buffalo LinkStation WXL) im Netzwerk auch das Jitsi Meet einrichten um es dann für PC und Handy im Netzwerk, evtl auch übers Internet zunutzen. Alternativ auf einer FritzBox installieren.

    Beste Grüße aus Rosenheim
    Martin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"
Schließen

Ooopsi!

Bitte deaktiviere Deinen Adblocker.