Tutorial

Installieren von Jitsi Meet unter Ubuntu 18.04

Ubuntu 18.04

Der Autor hat den Open Internet/Free Speech Fund dazu ausgewählt, eine Spende im Rahmen des Programms Write for DOnations zu erhalten.

Einführung

Jitsi Meet ist eine Open-Source-basierte Videokonferenzlösung auf Grundlage von WebRTC. Ein Jitsi Meet-Server bietet Videokonferenzräume für mehrere Personen. Sie benötigen lediglich Ihren Browser, um Funktionen zu erhalten, die mit denen einer Telefonkonferenz bei Zoom oder Skype vergleichbar sind. Der Vorteil einer Jitsi-Konferenz besteht darin, dass alle Ihre Daten nur über Ihren Server übertragen werden; durchgängige TLS-Verschlüsselung sorgt zudem dafür, dass Anrufe von niemandem abgehört werden können. Mit Jitsi können Sie sicherstellen, dass Ihre privaten Daten auch privat bleiben.

In diesem Tutorial installieren und konfigurieren Sie einen Jitsi Meet-Server unter Ubuntu 18.04. Die Standardkonfiguration ermöglicht es beliebigen Benutzern, einen neuen Konferenzraum zu eröffnen. Das ist nicht ideal bei Servern, die im Internet öffentlich verfügbar sind. Darum werden Sie Jitsi Meet so konfigurieren, dass nur registrierte Benutzer neue Konferenzräume erstellen können. Nachdem Sie den Konferenzraum erstellt haben, können beliebige Benutzer teilnehmen, solange sie über die eindeutige Adresse und das optionale Passwort verfügen.

Voraussetzungen

Bevor Sie diese Anleitung beginnen, benötigen Sie Folgendes:

  • Einen Ubuntu-18.04-Server, der gemäß Ersteinrichtung eines Servers mit Ubuntu 18.04 eingerichtet wurde, einschließlich eines Nicht-root-Benutzers mit sudo-Berechtigungen. Die Größe des Servers, den Sie benötigen, hängt meistens von der verfügbaren Bandbreite und der Anzahl der Teilnehmer ab, die den Server voraussichtlich verwenden werden. Die folgende Tabelle bietet Ihnen eine Vorstellung davon, was benötigt wird.
  • Ein Domänenname, der so konfiguriert ist, dass er auf Ihren Server verweist. Sie können lernen, wie Sie Domänen auf DigitalOcean Droplets verweisen, indem Sie dem Tutorial Einrichten eines Hostnamens mit DigitalOcean folgen. In diesem Leitfaden wird der Beispieldomänenname jitsi.your-domain verwendet.

Wenn Sie einen Server für die Ausführung Ihrer Jitsi Meet-Instanz auswählen, müssen Sie die Systemressourcen berücksichtigen, die zum Hosten von Konferenzräumen benötigt werden. Die folgenden Benchmark-Daten wurden von einer virtuellen Maschine (Single-Core) mit hochwertigen Videoeinstellungen gesammelt:

CPU Serverbandbreite
Zwei Teilnehmer 3 % 30 Kb/s (Up), 100 Kb/s (Down)
Drei Teilnehmer 15 % 7 Mb/s (Up), 6,5 Mb/s (Down)

Der Sprung bei der Ressourcennutzung zwischen zwei und drei Teilnehmern entsteht dadurch, dass Jitsi den Anruf direkt zwischen den Clients routen wird, wenn es zwei von ihnen gibt. Wenn mehr als zwei Clients vorhanden sind, werden Anrufdaten über den Jitsi Meet-Server geleitet.

Schritt 1 — Einrichten des System-Hostnamens

In diesem Schritt ändern Sie den Hostnamen des Systems so, dass er dem Domänennamen entspricht, den Sie für Ihre Jitsi Meet-Instanz verwenden, und diesen Hostnamen auf die Localhost-IP 127.0.0.1 auflöst. Jitsi Meet nutzt bei der Installation beide dieser Einstellungen und generiert die Konfigurationsdateien.

Setzen Sie zunächst den Hostnamen des Systems auf den Domänennamen, den Sie für Ihre Jitsi-Instanz verwenden werden. Der folgende Befehl legt den aktuellen Hostnamen fest und ändert den /etc/hostname, der zwischen Neustarts den Hostnamen des Systems enthält:

  • sudo hostnamectl set-hostname jitsi.your-domain

Der Befehl, den Sie ausgeführt haben, sieht wie folgt aus:

  • hostnamectl ist ein Dienstprogramm aus der Toolsuite systemd zur Verwaltung des System-Hostnamens.
  • set-hostname legt den Hostnamen des Systems fest.

Überprüfen Sie, ob das erfolgreich war, indem Sie Folgendes ausführen:

  • hostname

Dadurch wird der Hostname zurückgegeben, den Sie mit dem Befehl hostnamectl festgelegt haben:

Output
jitsi.your-domain

Als Nächstes richten Sie eine lokale Zuordnung des Hostnamens des Servers zur Loopback-IP-Adresse 127.0.0.1 ein. Öffnen Sie dazu die Datei /etc/hosts mit einem Texteditor:

  • sudo nano /etc/hosts

Fügen Sie dann die folgende Zeile hinzu:

/etc/hosts
127.0.0.1 jitsi.your-domain

Durch Zuordnung des Domänennamens Ihres Jitsi Meet-Servers zu 127.0.0.1 kann Ihr Jitsi Meet-Server verschiedene Netzwerkprozesse nutzen, die an der IP-Adresse 127.0.0.1 lokale Verbindungen zueinander zulassen. Diese Verbindungen werden mit einem TLS-Zertifikat, das auf Ihren Domänennamen registriert ist, authentifiziert und verschlüsselt. Durch lokale Zuordnung des Domänennamens zu 127.0.0.1​ wird es möglich, das TLS-Zertifikat für diese lokalen Netzwerkverbindungen zu verwenden.

Speichern und schließen Sie Ihre Datei.

Ihr Server verfügt nun über den Hostnamen, den Jitsi zur Installation benötigt. Im nächsten Schritt öffnen Sie die Firewall-Ports, die von Jitsi und dem TLS-Zertifikat-Installer benötigt werden.

Schritt 2 — Konfigurieren der Firewall

Wenn Sie dem Leitfaden Ersteinrichtung eines Servers unter Ubuntu 18.04 gefolgt sind, haben Sie die UFW-Firewall aktiviert und den SSH-Port geöffnet. Der Jitsi-Server benötigt einige geöffnete Ports, damit er mit den Anrufclients kommunizieren kann. Außerdem ist der TLS-Installationsprozess auf einen geöffneten Port angewiesen, damit er die Zertifikatsanfrage authentifizieren kann.

Die Ports, die Sie öffnen werden, sind folgende:

  • 80/tcp, der in der TLS-Zertifikatanfrage verwendet wird.
  • 443/tcp, der für die Webseite zur Erstellung von Konferenzräumen verwendet wird.
  • 4443/tcp,10000/udp, die zur Übertragung und zum Empfang des verschlüsselten Anrufverkehrs dienen.

Führen Sie folgende ufw-Befehle aus, um diese Ports zu öffnen:

  • sudo ufw allow 80/tcp
  • sudo ufw allow 443/tcp
  • sudo ufw allow 4443/tcp
  • sudo ufw allow 10000/udp

Überprüfen Sie mit dem Befehl ufw status, ob sie alle hinzugefügt wurden:

  • sudo ufw status

Sie sehen folgende Ausgabe, wenn diese Ports geöffnet sind:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere 4443/tcp ALLOW Anywhere 10000/udp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6) 4443/tcp (v6) ALLOW Anywhere (v6) 10000/udp (v6) ALLOW Anywhere (v6)

Der Server ist nun bereit für die Installation von Jitsi, die Sie im nächsten Schritt vornehmen werden.

Schritt 3 — Installieren von Jitsi Meet

In diesem Schritt fügen Sie Ihrem Server das Jitsi-Stable-Repository hinzu und installieren dann das Jitsi Meet-Paket aus diesem Repository. Dadurch wird sichergestellt, dass Sie stets das neueste stabile Jitsi Meet-Paket ausführen.

Laden Sie zuerst den Jitsi-GPG-Schlüssel mit dem Download-Dienstprogramm wget herunter:

  • wget https://download.jitsi.org/jitsi-key.gpg.key

Der Paketmanager apt verwendet diesen GPG-Schlüssel zur Validierung der Pakete, die Sie aus dem Jitsi-Repository herunterladen werden.

Fügen Sie als Nächstes mit dem Dienstprogramm apt-key den heruntergeladenen GPG-Schlüssel dem Keyring von apt hinzu:

  • sudo apt-key add jitsi-key.gpg.key

Sie können die GPG-Schlüsseldatei nun löschen, da sie nicht mehr benötigt wird:

  • rm jitsi-key.gpg.key

Nun fügen Sie Ihrem Server das Jitsi-Repository hinzu, indem Sie eine neue Quelldatei erstellen, die das Jitsi-Repository enthält. Öffnen und erstellen Sie die neue Datei mit Ihrem Editor:

  • sudo nano /etc/apt/sources.list.d/jitsi-stable.list

Fügen Sie der Datei für das Jitsi-Repository folgende Zeile hinzu:

/etc/apt/sources.list.d/jitsi-stable.list
deb https://download.jitsi.org stable/

Speichern und schließen Sie Ihren Editor.

Führen Sie abschließend eine Systemaktualisierung durch, um die Paketliste aus dem Jitsi-Repository zu erhalten, und installieren Sie dann das Paket jitsi-meet:

  • sudo apt update
  • sudo apt install jitsi-meet

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

Bild mit dem Hostnamen-Dialogfeld bei der Installation von jitsi-meet

Anmerkung: Bewegen Sie den Cursor aus dem Hostnamenfeld, um die Schaltfläche <OK> mit der Taste TAB auszuwählen. Drücken Sie ENTER, wenn <OK> ausgewählt ist, um den Hostnamen zu übermitteln.

Dann sehen Sie ein neues Dialogfeld, in dem Sie gefragt werden, ob Jitsi ein selbstsigniertes TLS-Zertifikat erstellen und verwenden oder ein bestehendes Zertifikat, das bereits vorhanden ist, nutzen soll:

Bild mit dem Zertifikat-Dialogfeld bei der Installation von jitsi-meet

Wenn Sie über kein TLS-Zertifikat für Ihre Jitsi-Domäne verfügen, wählen Sie die erste Option Generate a new self-signed certificate (Generieren eines neuen selbstsignierten Zertifikats).

Ihre Jitsi Meet-Instanz wurde nun mit einem selbstsignierten TLS-Zertifikat installiert. Das führt dazu, dass Browserwarnungen angezeigt werden. Darum erhalten Sie im nächsten Schritt ein signiertes TLS-Zertifikat.

Schritt 4 — Abrufen eines signierten TLS-Zertifikats

Jitsi Meet verwendet TLS-Zertifikate, um den Anrufverkehr zu verschlüsseln, damit Ihre Anrufe bei der Übertragung über das Internet nicht abgehört werden können. TLS-Zertifikate sind die gleichen Zertifikate, die von Websites zur Aktivierung von HTTPS-URLs verwendet werden.

Jitsi Meet bietet ein Programm zum automatischen Herunterladen eines TLS-Zertifikats für Ihren Domänennamen, das das Dienstprogramm Certbot nutzt. Sie müssen dieses Programm installieren, bevor Sie das Zertifikatinstallationsskript ausführen.

Fügen Sie Ihrem System zuerst das Certbot-Repository hinzu, um sicherzustellen, dass Sie über die neueste Version von Certbot verfügen. Führen Sie den folgenden Befehl aus, um das neue Repository hinzuzufügen und Ihr Systems zu aktualisieren:

  • sudo add-apt-repository ppa:certbot/certbot

Installieren Sie als Nächstes das Paket certbot:

  • sudo apt install certbot

Ihr Server ist nun bereit, das von Jitsi Meet zur Verfügung gestellte Installationsprogramm für TLS-Zertifikate auszuführen:

  • sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Wenn Sie das Skript ausführen, sehen Sie folgende Aufforderung zur Eingabe einer E-Mail-Adresse:

Output
------------------------------------------------------------------------- This script will: - Need a working DNS record pointing to this machine(for domain jitsi.example.com) - Download certbot-auto from https://dl.eff.org to /usr/local/sbin - Install additional dependencies in order to request Let’s Encrypt certificate - If running with jetty serving web content, will stop Jitsi Videobridge - Configure and reload nginx or apache2, whichever is used - Configure the coturn server to use Let's Encrypt certificate and add required deploy hooks - Add command in weekly cron job to renew certificates regularly You need to agree to the ACME server's Subscriber Agreement (https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf) by providing an email address for important account notifications Enter your email and press [ENTER]:

Diese E-Mail-Adresse wird dem Zertifikatsaussteller https://letsencrypt.org übermittelt und zur Meldung von Sicherheitsaspekten und anderen Fragen genutzt, die mit dem TLS-Zertifikat zusammenhängen. Sie müssen hier eine E-Mail-Adresse eingeben, um mit der Installation fortzufahren. Die Installation wird dann ohne weitere Eingabeaufforderungen abgeschlossen.

Nach der Fertigstellung ist Ihre Jitsi Meet-Instanz so konfiguriert, dass für Ihren Domänennamen ein signiertes TLS-Zertifikat verwendet wird. Zertifikaterneuerungen erfolgen auch automatisch, da der Installer unter /etc/cron.weekly/letsencrypt-renew ein Erneuerungsskript platziert hat, das jede Woche ausgeführt wird.

Der TLS-Installer hat Port 80 verwendet, um zu verifizieren, dass Sie die Kontrolle über Ihren Domänennamen haben. Nachdem Sie das Zertifikat nun erhalten haben, benötigt Ihr Server den geöffneten Port 80 nicht mehr, da Port 80 für regulären, nicht verschlüsselten HTTP-Verkehr genutzt wird. Jitsi Meet stellt seine Website ausschließlich über HTTPS an Port 443 bereit.

Schließen Sie diesen Port in Ihrer Firewall mit dem folgenden ufw-Befehl:

  • sudo ufw delete allow 80/tcp

Ihr Jitsi Meet-Server ist nun fertig und bereit zum Testen. Öffnen Sie einen Browser und verweisen Sie ihn auf Ihren Domänennamen. Sie können einen neuen Konferenzraum erstellen und andere dazu einladen, teilzunehmen.

Die Standardkonfiguration für Jitsi Meet lautet, dass jeder, der Ihre Jitsi Meet-Server-Homepage besucht, einen neuen Konferenzraum erstellen kann. Dabei werden zur Ausführung des Konferenzraums die Systemressourcen Ihres Servers verwendet, was bei unbefugten Benutzern nicht erwünscht ist. Im nächsten Schritt konfigurieren Sie Ihre Jitsi Meet-Instanz so, dass nur noch registrierte Benutzer Konferenzräume erstellen können.

Schritt 5 — Sperren der Erstellung von Konferenzräumen

Im nächsten Schritt konfigurieren Sie Ihren Jitsi Meet-Server so, dass nur registrierte Benutzer Konferenzräume erstellen können. Die Dateien, die Sie bearbeiten werden, wurden vom Installer generiert und mit Ihrem Domänennamen konfiguriert.

Die Variable your_domain wird in den folgenden Beispielen anstelle eines Domänennamens verwendet.

Öffnen Sie zuerst sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua mit einem Texteditor:

  • sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua

Bearbeiten Sie diese Zeile:

/etc/prosody/conf.avail/your_domain.cfg.lua
...
        authentication = "anonymous"
...

Tun Sie Folgendes:

/etc/prosody/conf.avail/your_domain.cfg.lua
...
        authentication = "internal_plain"
...

Diese Konfiguration weist Jitsi Meet dazu an, eine Authentifizierung mit Benutzername und Passwort durchzusetzen, bevor neue Besucher einen Konferenzraum erstellen können.

Fügen Sie dann in der gleichen Datei folgenden Abschnitt am Ende der Datei hinzu:

/etc/prosody/conf.avail/your_domain.cfg.lua
...
VirtualHost "guest.your_domain"
    authentication = "anonymous"
    c2s_require_encryption = false

Diese Konfiguration ermöglicht es anonymen Benutzern, Konferenzräumen beizutreten, die von einem authentifizierten Benutzer erstellt wurden. Der Gast muss jedoch über eine eindeutige Adresse und ein optionales Passwort für das Betreten des Raums verfügen.

Hier haben Sie guest. am Anfang Ihres Domänennamens hinzugefügt. Für jitsi.your-domain würden Sie zum Beispiel guest.jitsi.your-domain eingeben. Den guest.-Hostnamen nutzt Jitsi Meet ausschließlich intern. Sie werden ihn niemals in einen Browser eingeben oder einen DNS-Eintrag dafür erstellen müssen.

Öffnen Sie mit einem Texteditor eine weitere Konfigurationsdatei unter /etc/jitsi/meet/your_domain-config.js:

  • sudo nano /etc/jitsi/meet/your_domain-config.js

Bearbeiten Sie diese Zeile:

/etc/jitsi/meet/your_domain-config.js
...
        // anonymousdomain: 'guest.example.com',
...

Tun Sie Folgendes:

/etc/jitsi/meet/your_domain-config.js
...
        anonymousdomain: 'guest.your_domain',
...

Auch hier weist der Hostname guest.your_domain, den Sie zuvor in dieser Konfiguration verwendet haben, Jitsi Meet an, welcher interne Hostname für die nicht authentifizierten Gäste verwendet werden soll.

Öffnen Sie als Nächstes /etc/jitsi/jicofo/sip-communicator.properties:

  • sudo nano /etc/jitsi/jicofo/sip-communicator.properties

Und fügen Sie die folgende Zeile hinzu, um die Konfigurationsänderungen abzuschließen:

/etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.auth.URL=XMPP:your_domain

Diese Konfiguration verweist einen der Jitsi Meet-Prozesse auf den lokalen Server, der die jetzt obligatorische Benutzerauthentifizierung vornimmt.

Ihre Jitsi Meet-Instanz ist nun so konfiguriert, dass nur registrierte Benutzer Konferenzräume erstellen können. Nach der Erstellung eines Konferenzraums können ihm sowohl registrierte als auch nicht registrierte Benutzer beitreten. Sie benötigen lediglich die eindeutige Adresse des Konferenzraums und ein optionales Passwort, das ggf. vom Ersteller des Raums festgelegt wurde.

Nachdem Jitsi Meet nun so konfiguriert ist, dass nur authentifizierte Benutzer Räume erstellen können, müssen Sie diese Benutzer und ihre Passwörter registrieren. Dazu verwenden Sie das Dienstprogramm prosodyctl.

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

  • sudo prosodyctl register user your_domain password

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

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

  • sudo systemctl restart prosody.service
  • sudo systemctl restart jicofo.service
  • sudo systemctl restart jitsi-videobridge2.service

Die Jitsi Meet-Instanz wird nun mit einem Dialogfeld einen Benutzernamen und ein Passwort anfordern, sobald ein Konferenzraum erstellt wird.

Bild mit dem Jitsi-Dialogfeld für Benutzername und Passwort

Ihr Jitsi Meet-Server ist nun eingerichtet und sicher konfiguriert.

Zusammenfassung

In diesem Artikel haben Sie einen Jitsi Meet-Server bereitgestellt, mit dem Sie sichere und private Videokonferenzräume hosten können. Sie können Ihre Jitsi Meet-Instanz mit Anweisungen aus dem Jitsi Meet-Wiki erweitern.

0 Comments

Creative Commons License