16. April 2020   Sebastian Strumegger Werner Haring

Video Konferenzen selbst hosten? Wir zeigen wie es geht!

Seit einigen Wochen nun hat das Corona Virus unser aller Privat- und Arbeitsleben teils mehr, teils weniger aus dem Lot gebracht hat. Kinder werden zu Hause via Homeschooling unterrichten und Unternehmen haben Mitarbeiter ins Homeoffice entsandt wo diese bestmöglich deren Arbeit nachgehen sollen. Das Resultat dieser abrupten Digitalisierung des Arbeitsalltags sind jede Menge Herausforderungen für Mitarbeiter und Unternehmen. Der Remote-Zugriff auf Arbeitsressourcen, die Ausstattung des Heimarbeitsplatzes und vor allem die Zusammenarbeit in Teams sind nur einige dieser neuen Challenges.

Video Konferenz Software – Wie entscheiden?

Seit Mitte März 2020 arbeiten auch bei Redlink alle Mitarbeiter von zu Hause aus. In unserem Arbeitsalltag ist die Zusammenarbeit in Teams und rege Kommunikation zwischen Mitarbeitern und mit Kunden ein wichtiger Schlüssel zu erfolgreichen Projekten. Besonders was Videokonferenzen angeht gab es in den letzten Woche heftige Diskussionen über unterschiedliche Anbieter. Die Wahl fällt hier nicht leicht. Zu beachten sind Themen wie Privatsphäre & Datenschutz (DSGVO), die Einfachheit der Nutzung, die Kosten, der Funktionsumfang (Video, Chat, Screensharing, etc.) oder die Integration der Lösung in der restlichen Software-Welt eines Unternehmens.

Jitsi – Die Open Source Video Konferenz Alternative

Wir bei der Redlink GmbH setzen in vielen Projekten auf den Einsatz von Open Source Software. Es ist uns daher ein Anliegen, folgend unsere Erfahrung mit einer Open Source Variante einer Videokonferenz Lösung mit euch zu teilen.

Es geht ganz konkret um die kostenlose Online Meeting Software Jitsi, welche in erstaunlich ähnlichem Umfang die Möglichkeiten von Google Meet, Zoom oder Online-Meetings in Microsoft Teams anbietet, ohne dabei auf einer fremden Infrastruktur betrieben werden zu müssen. Rocket.Chat beispielsweise, die Open Source Alternative zu Slack, hat Jitsi als Videokonferenz Plattform integriert. Der Chaos Computer Club bietet freie Instanzen von Jitsi für Private Online Video Meetings an. Selbst der Betrieb von Jitsi auf einem Raspberry Pi soll möglich sein.

Was nun hinter hinter dieser Lösung verbirgt, wie einfach es ist seine eigene Instanz zu installieren und zu betreiben haben wir im Rahmen eines unserer Redlink Days untersucht. Unsere Erfahrungen sollen euch folgend als Tutorial oder Input für die eigene Lösung dienen:

Jitsi – Selbst gehostet in die Video Konferenz

Praktischerweise bietet Jitsi bereits fertige docker container und ein docker-compose Setup an, um den eigenen Meeting Server sozusagen per Knopfdruck zu installieren, zu starten und zu stoppen.

Das folgende Tutorial soll kurz und einfach beschreiben, wie jeder seinen eigenen Jitsi Server betreiben kann.

Es sind dabei keine besonderen Kenntnisse abseits von Basiswissen zur Serveradministration vorausgesetzt. Man braucht lediglich eine (Linux-basierte) Maschine, die als Server fungieren soll, eine öffentliche IP-Adresse und optimalerweise eine beliebige (Sub)-Domain, um ein Let’s Encrypt SSL Zertifikat einzurichten.

Vorbereitung

Für das Hosting unseren Redlink Jitsi Server haben wir uns für einen Ubuntu 18.04 Server bei Hetzner entschieden, da wir bereits zufriedener Kunde sind und den Meeting Server einfach auf einer Instanz mit freien Ressourcen einrichten konnten. Sollte euer Server ein anderes Betriebssystem nutzen, könnte die Installation geringfügig von der hier angeführten Methode abweichen. Folgende Grundvoraussetzungen sollten erfüllt sein, um mit dem Tutorial fortzufahren:

  • Eine öffentliche IP-Adresse
  • Eine (Sub)-Domain welche auf die öffentliche IP-Adresse zeigt
    z.B.: https://jitsi.mein-server.at
  • docker wurde installiert
    Ubuntu:
sudo apt-get update && sudo apt-get install docker.io
  • docker-compose wurde installiert
  • Ubuntu:
sudo apt-get update && sudo apt-get install docker-compose
  • git wurde installiert
  • Ubuntu:
sudo apt-get update && sudo apt-get install git
  • Zugriff auf die Maschine mittels SSH o.ä.

Download des docker-compose setups: Verbindet euch zuerst auf den Server und klont dann das offizielle Git Verzeichnis von Jitsi:
git clone https://github.com/jitsi/docker-jitsi-meet

Konfiguration

Jitsi liefert bereits eine vordefinierte Beispiel-Konfiguration, an der nun ein paar Änderungen vorgenommen werden müssen:

  • Navigiere in den “docker-jitsi-meet” Ordner, der beim Klonen des Git Verzeichnisses erstellt wurde.
  • Kopiere die Beispiel-Konfiguration oder nenne sie um, um die Konfiguration wirksam zu machen:
cp env.example .env
  • Erstelle die leeren Konfigurations-Ordner, die beim ersten Start der Applikation befüllt werden. Per Default befinden sich diese in ~/.jitsi-meet-cfg. Der Pfad kann aber nach belieben in der .env Datei geändert werden:
mkdir -p ~/.jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody,jicofo,jvb,jigasi,jibri}
  • Generiere sichere Passwörter, die automatisch in die .env Datei eingefügt werden:
./gen-passwords.sh
  • Öffne die .env Datei in einem Editor, um individuelle Einstellungen vorzunehmen:
nano .env

Grundeinstellungen

Folgende Anpassungen an der .env Datei sollten zumindest durchgeführt werden, um eine reibungslose Nutzung von Jitsi zu gewährleisten:

HTTP_PORT=80
HTTPS_PORT=443
PUBLIC_URL=<Domain eures Jitsi Servers> z.B.: “PUBLIC_URL=https://jitsi.mein-server.at”
ENABLE_LETSENCRYPT=1
LETSENCRYPT_DOMAIN=<Domain zur erstellung des SSL Zertifikats> z.B.: “LETSENCRYPT_DOMAIN=jitsi.mein-server.at”
LETSENCRYPT_EMAIL=<E-Mail-Adresse für die Erstellung des SSL Zertifikats>
ENABLE_HTTP_REDIRECT=1

Authentifizierung

Jitsi bietet verschiedenste Einstellungsmöglichkeiten um Authentifizierung der Nutzer zu erfordern. Bei einer öffentlich zugänglichen Domain sollte zumindest eine simple XMPP Authentifizierung eingerichtet werden. Dafür müssen zuerst folgende Änderungen an der .env Datei vorgenommen werden:

ENABLE_AUTH=1
AUTH_TYPE=internal

Diese Einstellungen verhindern vorerst das Betreten und Erstellen von jeglicher Konferenzen, bis zumindest ein Benutzer zur Authentifizierung angelegt wurde. Dies kann nach Starten der Applikation geschehen und wird im nächsten Schritt erläutert.

Starten von Jitsi

Da nun alle nötigen Vorbereitungen abgeschlossen sind, kann der eigene Meeting Server gestartet werden. Dazu muss einfach das docker-compose Setup im Hauptordner ausgeführt werden:

docker-compose up -d

Gebt den Applikationen nun am besten 1-2 Minuten Zeit zum Starten, bevor ihr mit der Nutzung von Jitsi oder der Erstellung eines Benutzers zur Authentifizierung beginnt.

Wenn im Abschnitt “Authentifizierung” die interne Authentifizierung aktiviert wurde, können nun bei laufender Applikation wie folgt Benutzername und Passwort angelegt werden:

docker exec dockerjitsimeet_prosody_1 prosodyctl --config /config/prosody.cfg.lua register <Benutzername> meet.jitsi <Passwort>

Achtung: Bei komplettem Neustart der Applikationen (docker-compose down/up) muss dieser Befehl erneut ausgeführt werden. Fortgeschrittene Nutzer können dies verhindern, indem sie den Befehl in docker-jitsi-meet/prosody/Dockerfile integrieren.

Happy Conferencing

Gratulation, Jitsi kann nun unter der konfigurierten Domain erreicht und benutzt werden!

Zusatzinformation: Leider scheint Jitsi derzeit teilweise Probleme mit der Unterstützung des Safari Browsers zu haben. Nutzer mit Safari sollten versuchen die Konferenz mittels eines anderen Browsers oder Mobile App zu öffnen.