Benutzer-Werkzeuge

Webseiten-Werkzeuge


projects:self_hosted_jitsi_server

Self hosted Jitsi Server

Wir möchten aufgrund der aktuellen Covid-19 Lage einen selbstgehosteten Jitsi Server auf unserer Netzwerkinfrastruktur betreiben.

type:
project
status:
in progress
member:
guac, peanut

Intro

Jitsi ist eine Open Source Video Conferencing Software mit screensharing-Funktion.

Jitsi ist kompatibel mit WebRTC, dem de facto Standard für offene Web Kommunikation.

Setup

VM

Als VM wurde auf der bestehenden Infrastruktur der Host „Taranis“ erstellt. Die Doku zum Erstellen von VM's auf KVM gibts hier: Userguide KVM

Dem Host wurden 4 CPU Cores und 16 GGB RAM zugewiesen.

Firewall

Um den Zugang zum Server über die Webports sicherzustellen, müssen in der Serverlokalen Firewall folgende Ports freigegeben werden.

HTTP 80 / TCP

HTTPS 443 / TCP

Videobridge 10000:20000 / UDP

Lokal verwenden wir die UFW Firewalls. Die Ports können folgendermassen freigegeben werden.

  $ ufw allow in 80
  $ ufw allow in 443
  $ ufw allow in 10000:20000

Anschliessend kann der Status der lokalen Firewall folgendermassen überprüft werden:

  $ ufw status
  

Webserver

Jitsi verwendet den Eclipse Jetty Webserver, sofern vorher nicht Apache oder Nginx auf dem Server installiert ist. Findet das Installationsskript von Jitsi eine Instanz von Apache2 oder Nginx, wird diese als Webserver konfiguriert.

Auf unserer Infra verwenden wir den Nginx Webserver für das Anbieten von Jitsi. Jetty bietet eingeschränkte Funktionalität hinter dem Reverse Proxy und die Konfiguration eines Nginx Servers ist dem Admins geläufiger.

Nginx ist standardmässig nicht auf den VMs installiert, kann aber folgendermassen installiert werden.

  $ sudo apt-get install nginx

Für die nachfolgende Jitsi Installation muss nichts am Webserver konfiguriert werden.

Installation von Jitsi

Jitsi kann über ein Repo oder als Deb Paket auf den Server installiert werden. Wir haben uns für das Repo entschieden um zukünftige Updates zu vereinfachen.

Zuerst laden wir den Key zum Jitsi Repo herunter:

  $ wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -

Danach erstellen wir ein source.list.d file mit dem Repository:

  $ sudo sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"

Nach dem Updaten der Quellen mit

 $ sudo apt-get -y update

installieren wir die volle Jitsi Suite mit folgendem Befehl:

 $ sudo apt-get -y install jitsi-meet

Dieser Befehl installiert die drei Hauptkomponenten von Jitsi. Diese sind nach der Installationsanleitung beschrieben.

Bei der Installation von Jitsi erscheinen folgende DPKG-reconfigure Fenster.

Hier muss der DNS Namen, auf welchem der Server von Extern erreichbar ist angegeben werden. Dynamic DNS habe ich nicht getestet. Vermutlich dürfte es da Probleme mit dem Letsencrypt Cert geben.

In unserem Fall haben wir im nachfolgenden Fenster, wo nach dem Zertifikat gefragt wird kein neues Zertifikat erstellen lassen. SSL wird im LuXeria Netz von Reverse Proxy gehandlet.

Möchtest du ein eigenes Let's Encrypt Zertifikat erstellen kannst du die Option „Self signed Certificate, you can later switch to let's encrypt“ wählen.

Let's Encrypt

Jitsi bietet ein Script, welches dein Let's Encrypt Zertifikat automatisch erstellt. Dazu musst du lediglich folgendes Skript ausführen:

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

Dieses Skript führt die Challenges für den Webserver automatisch aus. Jitsi muss natürlich für diesen Schritt von Ausserhalb erreichbar sein.

jitsi-videobridge

Das Jitsi Videoconferencing Tool. Handelt die Videostreams und deren Coding / Decoding Skalierbar. Jitsi Videobridge

jicofo

Jitsi Conference Focus

Conference focus is mandatory component of Jitsi Meet conferencing system next to the videobridge. It is responsible for managing media sessions between each of the participants and the videobridge. Whenever new conference is about to start an IQ is sent to the component to allocate new focus instance. After that special focus participant joins Multi User Chat room. It will be creating Jingle session between Jitsi videobridge and the participant. Although the session in terms of XMPP is between focus user and participant the media will flow between participant and the videobridge. That's because focus user will allocate Colibri channels on the bridge and use them as it's own Jingle transport.

prosody

XMPP Chatserver

Prosody is a modern XMPP communication server. It aims to be easy to set up and configure, and efficient with system resources. Additionally, for developers it aims to be easy to extend and give a flexible system on which to rapidly develop added functionality, or prototype new protocols.

projects/self_hosted_jitsi_server.txt · Zuletzt geändert: 2020/03/19 14:13 von guac