16.05.2021 Update: Mehrere kleinere Aktualisierungen vorgenommen.
Jitsi Meet ist ein quelloffenes Videokonferenzsystem, das ohne Anmeldung und Installation in einem Webbrowser genutzt werden kann. Durch die einfache Installation kann sehr einfach ein eigener Jitsi Meet Server installiert werden.
Die Installation auf einem Ubuntu 18.04 habe ich bereits im Artikel „Installation eines eigenen Jitsi Meet Servers“ beschrieben. Im April dieses Jahres wurde die neue LTS-Version von Ubuntu mit Langzeitunterstützung bis April 2025 veröffentlicht. Daher habe ich mich entschlossen, eine neue Anleitung zu schreiben.
Öffentlicher Jitsi Meet Server (meet.scheible.it):
Das Ziel dieser Anleitung ist die Installation von Jitsi Meet auf einem Root-Server. Dabei sind die Erklärungen auch für Anfänger verständlich gehalten. Die Einrichtung des Servers erfolgt dabei Schritt für Schritt inklusive der Absicherung vor der eigentlichen Jitsi Meet Installation.
Als Basis für diese Anleitung habe ich einen dedizierten Root-Server verwendet. Als Option habe ich das Betriebssystem „Ubuntu 20.04 LTS minimal“ ausgewählt. Für die Konfiguration verwende ich meine Domain meet.scheible.it, sie muss immer durch die eigene ersetzt werden.
Wird ein Linux Root-Server neu eingerichtet bzw. initialisiert, ist auf ihm meist nur ein SSH-Server aktiviert. Mittels SSH ist es möglich, über eine verschlüsselte Verbindung mit einer Konsole auf einem entfernten Server zu arbeiten und ihn zu administrieren. Um SSH unter Windows zu nutzen, kann die Software Putty verwendet werden (Anleitung). In den nächsten Schritten werden die Befehle auf der SSH-Konsole eingegeben. Um die Eingabe zu erleichter, sollten Sie mit dem Befehl sudo su in den Root-Modus zu wechseln.
Ubuntu absichern
Nach der Bestellung eines Root-Servers kann mit dem Root-Benutzer per SSH zugegriffen werden. Dies muss geändert werden, um die IT-Sicherheit des Servers zu erhöhen. Zusätzlich zeige ich, wie mit dem Tool Fail2Ban eingesetzt wird, um Angreifer abzuwehren, und die Konfiguration einer Firewall.
Passwort ändern
Als Erstes ändern wir das Passwort des Root-Benutzers, da dies vom Provider generiert worden ist. Dazu muss der Befehl passwd eingegeben werden. Anschließend erfolgt die Abfrage des Passwortes und die dazugehörige Wiederholung. Hier sollte ein möglichst langes und einmaliges Passwort gewählt werden.
# passwd New password: Retype new password: passwd: password updated successfully
Benutzer anlegen
Damit der Login nicht mit dem Root-Benutzer erfolgen muss, wird ein neuer Benutzer mit eingeschränkten Rechten angelegt. Dazu wird der Befehl useradd gefolgt von dem Namen des Benutzers eingegeben. Es folgt die Eingabe des Passworts mit der Kontrolle und einige weitere Abfragen, die einfach mit Enter quittiert werden können. Am Ende muss die Korrektheit der Eingaben bestätigt werden.
# adduser admin Adding user `admin' ... Adding new group `admin' (1000) ... Adding new user `admin' (1000) with group `admin' ... Creating home directory `/home/admin' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for admin Enter the new value, or press ENTER for the default Full Name []: Admin Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y
Jetzt muss unbedingt getestet werden, ob dieser neue Benutzer funktioniert, bevor die nächsten Schritten durchgeführt werden. Dazu einfach ein zweites Putty Fenster öffnen, eine Verbindung herstellen und mit dem neuen Benutzer anmelden. Nach dem Login den Befehl su eingeben, um in die Rolle des Root-Benutzers zu wechseln.
SSH absichern
Danach können wir die Konfiguration von SSH anpassen. Dazu muss die Datei /etc/ssh/sshd_config bearbeitet werden. Wir verwenden den Editor Nano (Anleitung).
# nano /etc/ssh/sshd_config
Als Erstes ändern wir den Port für den SSH-Zugriff. Das erhöht die Sicherheit zwar nur ein wenig, da mit einem Port-Scan sehr schnell der geänderte SSH-Port gefunden werden kann, aber einige automatisierte Tools werden ausgebremst. Es sollte ein Port über 1024 und nicht höher als 65535 gewählt werden.
Port 10022
Um den externen SSH-Login des Root-Benutzers nicht mehr zu erlauben, suchen wir den Eintrag PermitRootLogin und ändern den Wert auf no.
PermitRootLogin no
Unter dem Block mit diesem Eintrag fügen wir die folgende Zeile hinzu, damit sich unser neuer Benutzer anmelden kann:
AllowUsers admin
Um Anmeldeversuche zu blockieren, kann mit der Option MaxAuthTries die maximale Anzahl an Anmeldeversuchen beschränkt werden. Da diese Option aber nur pro Verbindung einen Schutz bietet und ein Angreifer sich nach fünf Fehlversuchen einfach neu verbinden kann, wird weiter unten die Installation des Tool fail2ban erklärt, um SSH gegen Angriffe besser abzusichern.
MaxAuthTries 5
Anschließend können die Änderungen mit der Tastenkombination STRG + O gespeichert werden. Die Nachfrage nach dem Dateinamen kann einfach mit Enter bestätigt werden. Um den Editor zu verlassen, wird die Tastenkombination STRG + X verwendet.
Um die Änderungen zu übernehmen, muss der SSH-Dienst neugestartet werden:
# service ssh restart
Wichtig ist, dass das aktuelle Putty-Fenster nicht geschlossen werden darf. Es muss erst überprüft werden, ob die Einstellungen funktionieren. Dazu wird wieder ein zweites Putty-Fenster geöffnet und ein Login mit dem geänderten Port durchgeführt.
Für Fortgeschrittene: Um noch mehr Sicherheit zu erreichen, sollte der SSH-Login per Keyfiel durchgeführt werden (Anleitung).
Fail2Ban installieren
Fail2Ban ist ein Tool, das fehlgeschlagene Login Versuche analysiert. Nach einer fest definierten Anzahl von Fehlschlägen, wird der Verursacher geblockt. Damit können sehr effektiv Brute-Force-Angriffe, die versuchen, das Passwort zu erraten, abgewehrt werden. Als Erstes muss das Tool installiert werden:
# apt install fail2ban
Als Nächstes muss eine lokale Kopie der Konfigurationsdatei erstellt werden:
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Die neu erstellte Datei wird mit dem nano Editor geöffnet:
# nano /etc/fail2ban/jail.local
Und die folgenden Zeilen ganz am Ende der Datei eingefügt:
# # SSH servers # [sshd] enabled = true port = 10022 filter = sshd logpath = /var/log/auth.log maxretry = 3
Zum Abschließen der Konfiguration muss Fail2Ban neugestartet werden:
# service fail2ban restart
Firewall konfigurieren
Als Software für die Firewall wird ufw (uncomplicated firewall) eingesetzt. Damit lässt sich eine unkomplizierte kommandozeilenbasierte Konfiguration der Firewall vornehmen. Als Erstes muss die Software installiert werden:
# apt install ufw
Nach der Installation von ufw kann ein einzelner Port mit dem Parameter allow freigegeben werden. Als Erstes muss unbedingt der SSH-Port freigegeben werden, damit ein weiterer Zugriff nach der Aktivierung der Firewall noch möglich ist.
# ufw allow 10022
Zum Abschluss kann die Firewall mit dem folgenden Befehl aktiviert werden:
# ufw enable
Für die Funktionen von Jitsi Meet müssen noch weitere Port freigehalten werden.
# ufw allow 80/tcp # ufw allow 443/tcp # ufw allow 10000/udp # ufw enable
Anschließend sollte die Konfiguration der Firewall für Jitsi Meet noch einmal überprüft werden:
# ufw status verbose
Jitsi Meet installieren
Die Installation von Jitsi Meet auf einem eigenen Server ist sehr einfach. Die nachfolgenden Schritte sind beschrieben, um möglichst viele Szenarien abzudecken.
Vorbereitungen
Vor der Installation von Jitsi Meet müssen zur Vorbereitung ein paar Konfigurationen vorgenommen werden.
Für einen reibungslosen Betrieb muss in der Datei /etc/systemd/system.conf die Anzahl der zulässigen Prozesse eingetragen werden. Dazu müssen die folgenden Einträge am Ende hinzugefügt werden:
DefaultLimitNOFILE=65000 DefaultLimitNPROC=65000 DefaultTasksMax=65000
Damit die Einträge wirksam sind, muss der Dienst Systemd neugestartet werden:
# systemctl daemon-reload
Als nächster Schritt muss die verwendete Domain konfiguriert werden, damit die verschiedenen Module von Jitsi Meet reibungslos zusammenarbeiten können.
# hostnamectl set-hostname meet.scheible.it
Zusätzlich muss in der Datei /etc/hosts ebenfalls die Domain als localhost eingetragen werden. Dazu kann die Domain einfach in der ersten Zeile am Ende hinzugefügt werden.
# nano /etc/hosts 01: 127.0.0.1 localhost.localdomain localhost meet.scheible.it
Als Erstes wird das System auf den aktuellen Stand gebracht und alle Ubuntu Updates installiert:
# apt update && apt upgrade
Jetzt muss überprüft werden, ob das universe Repositorie eingerichtet ist. Dies kann mit dem folgenden Befehl überprüft werden:
# grep ^deb /etc/apt/sources.list
In der folgenden Ausgabe muss der folgende Eintrag vorhanden sein:
deb http://de.archive.ubuntu.com/ubuntu/ focal universe
Falls nicht, müssen die folgenden Befehle ausgeführt werden:
# apt install software-properties-common # apt-add-repository universe
Jetzt muss noch das folgende Paket installiert werden:
# apt install apt-transport-https
Installation
Nun kann die eigentliche Installation von Jitsi Meet beginnen. Als Erstes werden die Software-Quellen von Jitsi Meet mit den nachfolgenden beiden Zeilen hinzugefügt und die Paketquelle aktualisiert.
# curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg' # echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null # apt update
Der Download und die Installation von jitsi Meet werden dabei mit dem folgenden Befehl initiiert:
# apt -y install jitsi-meet
Nachdem die Jitsi Meet Pakete heruntergeladen und installiert worden sind, erfolgt eine Abfrage der Domain und der SSL-Konfiguration.
Danach ist die Installation von Jitsi Meet abgeschlossen.
SSL-Zertifikat
Als Nächstes muss noch das Let’s Encrypt Zertifikat für die sichere HTTPS-Verbindung eingerichtet werden. Die Einrichtung des Let’s Encrypt Zertifikat für Jitsi Meet kann mit dem folgenden Script gestartet werden:
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
Es muss nur eine E-Mailadresse angegeben werden. Diese wird nur verwendet, falles es Probleme mit dem Zertifikat geben sollte.
Jetzt kann die Domain aufgerufen werden und das Web-Interface von Jitsi Meet wird angezeigt:
Konfiguration
Wie das Logo getauscht und die Farben angeapsst werden können beschreibe ich im Blog-Artikel „Das Design von Jitsi Meet anpassen“.
Informationen zur Geschwindigkeitsoptimierung von Jitsi Meet habe ich im Blog-Artikel „Geschwindigkeitsoptimierung von Jitsi Meet“ bereits beschrieben.
Zusätzliche Einstellungen, um den Datenschutz von Jitsi Meet zu verbessern, habe ich im Blog-Artikel „Datenschutzfreundliche Konfiguration von Jitsi Meet“ beschrieben.
STUN/TURN-Server
Die Technologie der STUN-Server kommt aus dem VoIP-Bereich und ermöglicht es einem Rechner hinter einer restriktiven Firewall trotzdem eine Verbindung aufzubauen. Mit dem TURN-Protokoll können Teilnehmer Daten austauschen, auch wenn keine direkte Verbindung besteht. Der Server dient dabei als Relay (Zwischenstation). In früheren Versionen nutzte Jitsi Meet hierfür STUN/TURN-Server von Google und wurde dafür kritisiert. Mit den Updates im April 2020 wurden diese Einträge entfernt und durch den eigenen Server von Jitsi meet-jit-si-turnrelay.jitsi.net ersetzt.
Mit weiteren Updates wurde eine einfache Methode realisiert, um einen eigenen coturn STUN/TURN-Server einzurichten. Das Paket jitsi-meet-turnserver sollte bereits automatisch installiert worden sein. Falls nicht, kann es auch manuell installiert werden:
$ sudo apt install jitsi-meet-turnserver
In früheren Varianten musste anschließend noch eine Konfiguration vorgenommen werden, diese wird mittlerweile automatisiert durchgeführt.
Als letzter Schritt muss noch der Port 3478 für UDP-Datenverkehr und der Port 5349 für TCP -Datenverkehr in der Firewall freigegeben werden:
$ sudo ufw allow 3478/udp $ sudo ufw allow 5349/tcp
Nun wird ein eigener STUN/TURN-Server verwendet. In den Konfigurationsdateien /etc/prosody/conf.avail/meet.scheible.it.cfg.lua und /etc/jitsi/meet/meet.scheible.it-config.js wurden automatisch die richtigen Parameter eingefügt. Mit dem Trickle ICE Tool, kann die Funktionsweise getestet werden. Dort muss in das Feld STUN or TURN URI die eigene Domain, nach dem Schema stun:meet.exmaple.com:3478, eingetragen werden. Mit dem Button „Add Server“ wird er in die Liste aufgenommen und der Test wird dem Button „Gather candidates“ gestartet. Wenn alles in Ordnung ist, erscheint nach kurzer Zeit rechts unten als Bestätigung der Begriff „Done“.
Wird die Konfiguration Secure Domain von Jitsi Meet verwendet, wird in der Prosody Konfigurationsdatei meet.scheible.it.cfg.lua ein neuer VirtualHost Eintrag für Gäste hinzugefügt. Hierbei kann es zu Problemen kommen, dass der TURN-Server für Gäste nicht mehr korrekt funktioniert. Das liegt daran, dass für den Gast-Eintrag auch das Modul turncredentials eingebunden werden muss.
// /etc/prosody/conf.d/meet.scheible.it.cfg.lua VirtualHost "guest.meet.example.com" authentication = "anonymous" modules_enabled = { "bosh"; "pubsub"; "ping"; -- Enable mod_ping "speakerstats"; "turncredentials"; "conference_duration"; -- "muc_lobby_rooms"; } c2s_require_encryption = false
Jitsi Meet Aktualisierung
Die Macher und die Community hinter Jitsi Meet sind sehr fleißig und veröffentlichen regelmäßig Updates. Auf der Github Seite des Projektes werden die Änderungen in einer Changelog zusammengefasst. Hier lohnt sich regelmäßig ein Blick, welche neuen Funktionalitäten Jitsi Meet inzwischen bietet. Die Aktualisierung von Jitsi Meet erfolgt gleich wie das Update des Ubuntu Systems, da die Softwarequellen fest eingebunden sind.
# sudo apt-get update && sudo apt-get upgrad
Hinweis: Bei der Aktualisierung werden zum Teil die Konfigurationsdateien überschrieben. Daher bietet es sich an ein spezielles Update Script zu verwenden.
Welche Version von Jitsi Meet derzeit installiert ist, kann übrigens mit dem folgenden Befehl abgefragt werden:
dpkg -l | grep jitsi
Jitsi Meet Artikelserie
Dieser Blogbeitrag ist Teil der Artikelserie „Videokonferenzen mit Jitsi Meet“, die sich mit dem Open-Source-Webkonferenzsystem Jitsi für Video-, Web- und Telefonkonferenzen beschäftigt. Die Artikelserie zu Jitsi Meet umfasst die folgenden Themen:
Jitsi Meet Artikel für Anwender
- Liste mit öffentlichen Jitsi Meet Instanzen
- Anleitung für Jitsi Meet Videokonferenzen
- Jitsi Meet Anleitung für Moderatoren
- Jitsi Meet für Smartphones und Tablets
- Jitsti Meet Nutzung per Desktop App
- Tipps und Tricks mit Jitsi Meet
- Meine eigene Jitsi Meet Instanz
- Jitsi Meet Server mit ressourcensparender Konfiguration
- Neuer Jitsi Meet Testserver (Nightly Builds)
- Virtuelle Webcam in Jitsi Meet verwenden
- Virtuelle Desktops für die Freigabe nutzen
- Neues zu Jitsi Meet – Update und Server
- Breakout Rooms in Jitsi Meet
Jitsi Meet Artikel für Administratoren
- Installation eines eigenen Jitsi Meet Servers
- Jitsi Meet unter Ubuntu 20.04 installieren
- Mehrere Jitsi Meet Varianten per API
- Geschwindigkeitsoptimierung von Jitsi Meet
- Das Design von Jitsi Meet anpassen
- Datenschutzfreundliche Konfiguration von Jitsi Meet
- Jitsi Meet Update Script
- Jitsi Meet Server Auslastung
- Jitsi Meet Statistik als Grafana Dashboard
- Neues Jitsi Meet Feature: Lobby Wartebereich
- Jitsti Meet und die Log4Shell Sicherheitslücke
Changelog
16.05.2021Mehrere kleinere Aktualisierungen vorgenommen.
06.01.2021Abschnitte SSH absichern und STUN/TURN-Server erweitert.
22.11.2020Abschnitt STUN/TURN-Server aktualisiert.
24.10.2020Korrekturen und Abschnitt Jitsi Meet Aktualisierung hinzugefügt.
15.07.2020Abschnitt über die Installation des STUN/TURN-Server hinzugefügt.
Eine tolle Anleitung! Vielen Dank für die ganze Arbeit die dahinter steckt und geteilt wird!
Ich habe einen Server mit ubuntu 20.04 und Apache2 auf dem auch andere Server wie Moodle laufen. Moodle erreiche ich unter https://meineseite.ddns.net/moodle. Das ganze zielt auf das Verzichenis /var/www/html.
Mein Frage: Kann man Jitsi Meet so installieren, dass meine bisher vorhandenes Setup möglichst beibehalten kann und Jitsi dann über https://meineseite.ddns.net/jitsi erreichbar ist?
Ehrlich gesagt, bislang bin ich damit gescheitert. Aber vielleicht ist jemand so nett und veröffentlicht ein gutes Step-by-Step-Tutorial, damit auch Anfänger dies hinbekommen – ähnlich der obigen Anleitung.
Eine Installation nach obiger Anleitung klappte einwandfrei. Allerdings konnte ich mit allen anderen vorhandenen Servern wie Moodle, Nextcloud, etc nichts mehr anfangen – weil nicht mehr erreichbar. Ergo habe ich seither das Projekt Jitsi Meet über Apache2 leider auf Eis legen müssen. Die Recherche im Internet ergab für mich ebenfalls kein klares Bild, ausser viele gutgemeinte Ratschläge, die allesamt nicht funktionierten.
Schon jetzt vielen Dank!