Videokonferenzen mit Jitsi Meet auf einem eigenen Server

Wir verwenden Jitsi Meet schon seit mehreren Jahren um uns im Home-Office und Weltweit bestmöglich im Team miteinander auszutauschen. Auch wenn das Office mal leer ist, können wir uns somit online jederzeit einfach treffen. Jitsi Meet ist Free/Libre Open Source Software (FLOSS) und kann auf einem eigenen Server installiert und auch verändert werden.

Seit April 2020 bieten wir unter meet.novatrend.ch einen öffentlichen Jitsi Meet Server an. Es handelt sich dabei im Hintergrund um einen unserer virtuellen Cloud Server. Mit diesem Blogbeitrag beschreiben wir wie der Server im Detail aufgebaut ist. Auf Anfrage können wir eine solche Installation / Konfiguration gemäss dieser Anleitung gerne auf einem unserer virtuellen Cloud Server für euch durchführen. Wir empfehlen einen Server in der Konfiguration von mindestens 4 GB Arbeitsspeicher und 2 CPU-Kernen zu wählen. Eine kleinere Konfiguration könnte für einfache Tests und sehr kleine Meetings auch ausreichend sein, wurde von uns aber nicht tiefer getestet.

Es ist sehr empfehlenswert grundlegende Kenntnisse zur Arbeit auf einem GNU/Linux System zu haben, um dem weiteren Ablauf der Anleitung bestmöglich folgen zu können.

Warum Jitsi Meet

Wir mögen Jitsi Meet vorallem weil es sich als eine FLOSS-Alternative zu anderen proprietären Lösungen positioniert. Viele Vereine, Institutionen und Firmen haben in den letzten Jahren mit öffentlichen Jitsi Meet Installationen dazu beigetragen eine dezentrale und freie Alternative zu den Giganten wie Zoom und Google Meet zu schaffen. Es gibt keine Lizenzkosten für den Betrieb der Software, es entsteht kein Vedor Lock-in und die Software kann auf eigene Anforderungen her angepasst werden. Der Betrieb auf einem eigenen Server bietet weiter Vorteile in der Kontrolle des Datenschutz. So ist es z.B. auch möglich in Kombination mit einem VPN eine vom öffentlichen Internet isolierte Videokonferenz-Umgebung zu schaffen.

Aufbau

Jitsi Meet besteht aus verschiedenen Software-Komponenten welche so konfiguriert sind das sie im Zusammenspiel das bekannte Jitsi Meet ergeben:

  • Webserver: Nginx
  • XMPP-Server: Prosody
  • Jitsi-Serverkoomponenten:
    • Statische Dateien für die Jitsi Webversion
    • Jitsi Videobridge (JVB): WebRTC kompatibler Video Router
    • Jicofo: Koordinator der Videokonferenz, zwischen JVB und Client

All diese Komponenten sind essentiell für den Betrieb von Jitsi Meet. Zus. wird wegen Network Address Translation (NAT) meist auch noch ein STUN-Server benötigt, damit sich die Clients bei einem 1:1 Meeting untereinander finden.

Wird ein neues Meeting gestartet, so findet es bei nur zwei Teilnehmern als Peer-to-Peer Verbindung statt (1:1 Meeting). Sobald weitere Teilnehmer dazu kommen, wird die Jitsi Videobridge aktiv, und übernimmt das Routing zwischen den verschiedenen Teilnehmern. Jicofo ist dabei zuständig für die Koordination.

Voraussetzungen

Benötigt wird:

  • Eigener Server (Wir empfehlen unseren VPS-U2)
  • Domainnamen (Domainnamen direkt über Novatrend bestellen)
  • Nameserver-Hosting (Bei über Novatrend registrierte Domainnamen bereits kostenlos dabei)
  • SSH-Client (Unter Windows kann PuTTY verwendet werden, bei anderen Betriebssystemen wie GNU/Linux und macOS ist oftmals bereits über das Terminal ein SSH-Client über den Befehl ssh verfügbar)

Für diese Anleitung verwenden wir den Subdomain meet.novatrend.ch. Das ist zugleich auch der Servername / Hostname.

Server bestellen

Wahl des Betriebssystems

In dieser Anleitung wählen wir Debian als Betriebssystem auf dem Server. Ein Upgrade auf eine neue Version des Betriebssystem ist jeweils mittels weniger Befehle möglich. Das darin enthaltene Jitsi Meet Paket stammt direkt vom Entwickler und ist deshalb gut getestet. Diese beiden Faktoren sorgen für einen unkomplizierten und zeitsparenden Betrieb des Servers. Wir setzten den Server also einmal auf und können ihn dann ohne viel Aufwand aktuell halten.

Server bestellen

Damit haben wir alle angaben um die Bestellung zu erfassen. Bei der Bestellseite wählen wir VPS-U2, definieren den vollständigen Hostnamen meet.novatrend.ch und selektieren Debian als Betriebssystem:

Wir erhalten darauf innert einiger Stunden ein E-Mail mit den Zugangsdaten zum bestellten Server.

Vorbereitung

Subdomain im DNS konfigurieren

Im E-Mail mit den Zugangsdaten zum bestellten Server wird die dem Server zugeteilte IPv4 und IPv6 Adresse aufgelistet. Mit dieser Angabe erstellen wir einen A und AAAA DNS-Eintrag für die Subdomain meet.novatrend.ch. Der A-Eintrag ist für die IPv4-Adresse. Der AAAA-Eintrag für die IPv6-Adresse. Wenn der Domainname bereits mit den Nameservern von einem Hosting bei Novatrend verbunden ist, dann erfolgt die DNS-Konfiguration über den cPanel DNS Zone Editor. Ansonsten können über das Kundencenter der aktuelle Nameserver nachgeschaut werden, um herauszufinden wo die DNS-Änderung zu erledigen ist.

Für den Server meet.novatrend.ch haben wir folgende IP-Adressen erhalten:

  • IPv6-Adresse: 2a02:6201:b943:c100:fc23:23ff:fea1:98e7
  • IPv4-Adresse: 185.67.193.90

Die DNS-Einträge erstellen wir also wie folgt:

  • AAAA-Eintrag
    • Name: meet.novatrend.ch
    • TTL: 3600 (Eine Stunde)
    • Typ/Type: AAAA
    • Record/Ziel: 2a02:6201:b943:c100:fc23:23ff:fea1:98e7
  • A-Eintrag
    • Name: meet.novatrend.ch
    • TTL: 3600 (Eine Stunde)
    • Typ/Type: A
    • Record/Ziel: 185.67.193.90
cPanel DNS Editor mit den beiden DNS-Einträgen für die Jitsi Meet installation
cPanel DNS Editor mit den beiden DNS-Einträgen für die Jitsi Meet installation

Installation

Mit SSH auf den Server verbinden

Mit dem Benutzernamen und dem Servernamen können wir per SSH auf den Server verbinden:

$ ssh novatrend@meet.novatrend.ch

Das $-Zeichen zu Beginn der Linie bedeutet das es sich dabei um einen Kommandozeilen-Befehl handelt.

Bei der ersten Verbindung wird ein Warnhinweis angezeigt:

The authenticity of host ‚meet.novatrend.ch (2a02:6201:b943:c100:fc23:23ff:fea1:98e7)‘ can’t be established.
ED25519 key fingerprint is SHA256:tuk3WNc6vFHX4u7HFPS6X+A9R4dAR1ZMlqyWgGhWgF4.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Warnhinweis bei der ersten Verbindung über SSH

Novatrend erwähnt die SSH-Fingerprints im E-Mail mit den Zugangsdaten zum Server. Es empfiehlt sich den Fingerprint daraus zu kopieren und dann einzufügen. Mit Enter bestätigen:

SHA256:tuk3WNc6vFHX4u7HFPS6X+A9R4dAR1ZMlqyWgGhWgF4

Damit sind wir auf dem Server eingeloggt.

Erste Verbindung über SSH
Erste Verbindung über SSH

Grundkonfiguration des Servers

Betriebssystem aktualisieren

Updates werden mit dem Befehl sudo apt update && sudo apt upgrade installiert. apt benötigt Root-Rechte. Da sudo im Standard nicht installiert ist, müssen wir vorerst mit Hilfe von su zum Root-Benutzer wechseln:

$ su -

Die Shell hat danach kein $ mehr im Prefix, sondern ein #, als Indikator das wir uns momentan als Root-Benutzer auf dem Server bewegen. Danach können wir apt update && apt upgrade ausführen:

# apt update && apt upgrade

Die installierten Sicherheitspatches werden aufgelistet. Es empfiehlt sich danach einen Neustart des Servers zu machen, mit dem reboot-Befehl . Wenn der Server erst gerade installiert wurde, so ist er oft bereits mit allen aktuellen Updates ausgestattet.

Einfacher Befehle als Root-Benutzer ausführen

Auf GNU/Linux wird oft sudo verwendet um Befehle als Root oder anderer Benutzer auszuführen. Wir wechseln nochmals zum Root-Benutzer:

$ su -

Und installieren das entsprechende Paket für sudo:

# apt install sudo

In der Standardkonfiguration erlaubt das Benutzer der Gruppe sudo Befehle als andere Benutzer auszuführen. Unseren Benutzer fügen wir deshalb noch der sudo-Gruppe hinzu:

# usermod -a -G sudo novatrend

Wir verlassen danach den Root-Benutzer und loggen uns aus der SSH-Verbindung aus:

# exit
$ exit

Nach einem erneuten Login per SSH können wir Befehle mit dem Prefix sudo aufrufen, damit diese als Root-Benutzer ausgeführt werden.

Passwörter ändern

Es ist höchste Zeit die von Novatrend per E-Mail übergebenen initialen Passwörter des Servers zu ändern. Zuerst für den Benutzer:

$ passwd

Und danach noch für den Root-Benutzer:

$ sudo passwd root

Sonstiges

Den Servernamen können wir mit dem hostname-Befehl überprüfen. Die Netzwerkkonfiguration mit ip addr, die DNS-Auflösung mit host oder dig, Datum und Zeit mit date. In der Regel sollte das unter einem von Novatrend bereitgestellten Debian Cloud Server jedoch alles schon stimmen. Datum und Zeit wird z.B. automatisch über NTP synchronisiert.

Vorbereitungen für Jitsi Meet

Ein paar Sachen müssen vorbereitet werden, damit die Installation von Jitsi Meet funktioniert. Die nächsten Schritte sind der Installationsanleitung vom Hersteller angelehnt.

Zuerst installieren wir einen HTTPS-Transport für den Paketmanager, welcher für die zus. Repositories (Paketquellen) benötigt wird:

$ sudo apt install apt-transport-https

Danach konfigurieren wir das Repository vom Hersteller:

$ sudo wget -O /etc/apt/keyrings/jitsi-key.gpg.key https://download.jitsi.org/jitsi-key.gpg.key
$ echo "deb [signed-by=/etc/apt/keyrings/jitsi-key.gpg.key] https://download.jitsi.org stable/" | sudo tee /etc/apt/sources.list.d/jitsi.list

Danach soll der Paketmanager sich mit dem neuen Repository aktualisieren:

# sudo apt update

Wir installieren und konfigurieren weiter eine Firewall, da einige installierte Komponenten wie z.B. der XMPP-Server nicht direkt vom Internet aus erreichbar sein müssen:

$ sudo apt install firewalld
$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
$ sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
$ sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
$ sudo firewall-cmd --zone=public --add-port=5349/tcp --permanent
$ sudo firewall-cmd --zone=public --add-port=10000/udp --permanent
$ sudo firewall-cmd --reload

Jitsi Meet installieren

Jetzt können wir die eigentliche Installation von Jitsi Meet starten:

# sudo apt install jitsi-meet

Während der Installation werden verschiedene Einstellungen abgefragt. Zuerst der Domainname für die Installation. Diesen Schritt bestätigen wir mit Eingabe der gewählten Subdomain:

Abfrage der Subdomain für Jitsi Meet wärend der Installation
Abfrage der Subdomain für Jitsi Meet während der Installation

Danach erfolgt die Konfiguration des HTTPS Zertifikat. Eine Integration für Zertifikate über Let’s Encrypt ist direkt eingebaut. Es ist dabei wichtig das die beiden DNS-Einträge definitiv vorhanden sind, wie es in dieser Anleitung in der Vorbereitungsphase beschrieben wurde.

Integration für Let's Encrypt Zertifikate in der Jitsi Meet Installation
Integration für Let’s Encrypt Zertifikate in der Jitsi Meet Installation

Es wird nach einer E-Mail Adresse verlangt. Let’s Encrypt verwendet diese um über wichtige Informationen und Änderungen im Zusammenhang mit dem Zertifikat zu informieren. So erhält man z.B. ein E-Mail wenn ein Zertifikat bald abläuft und vom Server nicht automatisch erneuert wurde. Die Let’s Encrypt Webseite beschreibt die E-Mail Benachrichtigungen im Detail.

Zum Schluss wirbt Jitsi mit einem Jitsi as a Service Feature, was wir ablehnen:

Jitsi as a Service Werbung
Jitsi as a Service Werbung

Jitsi Meet ist damit bereits installiert.

Konfiguration der Weboberfläche

Wir öffnen die Konfigurationsdatei /etc/jitsi/meet/meet.novatrend.ch-config.js mit einem Editor um noch einige Anpassungen zu machen. Z.B. mit vi:

$ sudo vi /etc/jitsi/meet/meet.novatrend.ch-config.js

Startseite für die Meetingräume (prejoinConfig)

Mit einer preJoinConfig können wir für die Meeting-räume einen Startscreen aufschalten. Man landet damit nicht direkt im Meeting, sondern kann zuerst noch prüfen ob die Webcam und das Mikrofon funktioniert und allenfalls gleich noch Änderungen vornehmen. Wir finden das um einiges angenehmer, als wenn man direkt in das Meeting geschmissen wird. Der Konfigurationsabschnitt ist bereits vorhanden, jedoch auskommentiert. Wir suchen am besten nach „Configs for prejoin page.“ und fügen daran dann unsere Konfiguration an:

    prejoinConfig: {
        enabled: true,
        hideExtraJoinButtons: ['no-audio', 'by-phone'],
    },
prejoinConfig Abschnitt in der Konfigurationsdatei. Unsere Änderungen unten angefügt
prejoinConfig Abschnitt in der Konfigurationsdatei. Unsere Änderungen unten angefügt

Third-Party Abfragen deaktivieren

Jitsi Meet verwendet im Betrieb verschiedene externe Dienste. Wie z.B. Avatare über Gravatar. Wir deaktivieren diese mit:

disableThirdPartyRequests: true,

Auch diese Option findet sich bereits in der Konfigurationsdatei, sodass wir danach suchen und sie dort abändern können. Am besten den Standardwert zur Referenz auch wieder stehen lassen und unten die eigene Konfiguration einfügen, gleich wie bei der prejoinConfig.

Änderungen an der /etc/jitsi/meet/meet.novatrend.ch-config.js sind damit abgeschlossen.

STUN-Server

In der Standardkonfiguration wird ein STUN-Server vom Hersteller verwendet. In früheren Versionen wurde mal ein Dienst von Google verwendet. Idealerweise betreiben wir unseren eigenen STUN-Server. Da diese Konfiguration jedoch etwas aufwändiger ist, beschreiben wir sie nicht in diesem Blogbeitrag. Wir werden hier einen Link setzen, sobald dazu ein Beitrag erstellt wurde.

Logging

Jitsi Meet zeichnet in der Standardkonfiguration sehr viele Informationen auf. Dazu zählen auch IP-Adressen. Wir reduzieren das Log-Level der beiden Jitsi-Komponenten videobridge und jicofo indem wir folgende Dateien abändern:

  • /etc/jitsi/videobridge/logging.properties
  • /etc/jitsi/jicofo/logging.properties

Darin ändern wir das .level=INFO auf:

.level=WARNING

Der XMPP-Server Prosody kann gleich auch noch angepasst werden. Er scheint zwar keine IP-Adressen zu protokollieren, benötigt aber Speicherplatz:

sudo vi /etc/prosody/prosody.cfg.lua

Hier ändern wir die Zeile info = "/var/log/prosody/prosody.log"; zu:

warn = "/var/log/prosody/prosody.log";

Neustarten und Testen

Mit der Installation sind wir fertig. Es empfiehlt sich zu diesem Zeitpunkt den kompletten Server einmal neuzustarten:

$ sudo reboot

Danach rufen wir das Jitsi Meet im Browser auf: https://meet.novatrend.ch/

Wartung des Servers

Es empfiehlt sich den Server wöchentlich mit den neusten Updates zu versorgen. Das bereits erwähnte sudo apt update && sudo apt upgrade ist dafür ausreichend. Wird ein neuer Kernel installiert, so sollte nach dem Update ein Neustart vom Server erfolgen.

Es gibt Changelogs zu Jitsi Meet Releases.

Weiter ist es gut die Errata zu den verschiedenen Komponenten zu beobachten: Jitsi, Debian. Da Nginx und Prosody direkt aus den Debian Paketquellen installiert sind, reicht es in der Regel aus die Sicherheitshinweise von Debian zu abonnieren.

Und wenn es dann Zeit für eine neue Debian Version ist, dann findet sich auf der Debian Projektseite in den Debian Stable Release Notes jeweils eine Anleitung für das Upgrade.


Photo by yann maignan on Unsplash


Beitrag veröffentlicht

in

, , , , ,

von

Schlagwörter:

Kommentare

Schreibe einen Kommentar

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