jitsi at home

Installation eines jitsi Server

Jitsi ist eine Reihe von Open-Source-Projekten, die es Ihnen ermöglichen, ein sicheres Videokonferenzsystem für Ihr Team aufzubauen.
In diesem Tutorial zeige ich Ihnen, wie man jitsi als virtuelle Maschine installiert und einen Internetzugang zur Verfügung stellt. So kann man bequem jitsi zu Hause testen. Sie können mit dieser Anleitung aber auch einen "richtigen" jitsi Server installieren. Ignorieren Sie dann die Kapitel zu DynDNS.

1 Voraussetzungen


2 DynDNS

Jitsi benötigt eine Domain - eine Adresse im Internet - um zu funktionieren, also z. B. www.beispieldomain.de. Da nicht jeder über eine feste IP-Adresse und eine Domain verfügt, verwenden wir in unserem Beispiel eine dynamische Domain (DynDNS).
Es gibt Anbieter, von denen man kostenlos eine Subdomain erhält. In unserem Beispiel verwenden wir eine Subdomain von www.selfhost.de. Diese Subdomain hat dann den Namen EIGENERNAME.selfhost.co. Im Router aktivieren wir dann DynDNS, geben die Zugangsdaten unserer Subdomain ein und leiten die Verbindung an unseren jitsi-Server weiter. Dann ist unser jitsi-Server über das Internet erreichbar. In unserem Beispiel heißt die Subdomain: vmfree.selfhost.co.
Also überall wo vmfree.selfhost.co vorkommt, bitte durch den eigenen Domainnamen ersetzen.


3 Installation Ubuntu 18.04 Server


3.1 Statische IP-Adresse

Entweder man konfiguriert den Ubuntu Server so, dass dieser eine feste IP-Adresse hat, oder man stellt den DHCP-Server im Router so ein, dass er dem Server immer die gleiche IP-Adresse zuteilt. Dies ist wichtig, da wir den Server im Router mittels DynDNS verbinden müssen.
Um dem Ubuntu-Server eine feste IP-Adresse zu geben, muss die Netzwerkkonfigurationsdatei im Ordner

/etc/netplan
geändert werden. In diesem Beispiel heißt die Datei
01-netcfg.yaml
Hier die Änderungen:

    network:
        version: 2
        renderer: networkd
        ethernets:
            enp0s3:
                dhcp4: no
                addresses: [192.168.0.51/24]
                gateway4: 192.168.0.10
                nameservers:
                    addresses: [8.8.8.8]

Hier wird der Netzwerkkarte enp0s3 die IP-Adresse 192.168.0.51 zugewiesen. Der Router hat die IP-Adresse 192.168.0.10. Es wird der Nameserver von Google verwendet 8.8.8.8.
Mit

sudo netplan apply
werden die Änderungen aktiviert.


3.2 Optional: Konfiguration Firewall

Die Firewall muss nur konfiguriert werden, wenn man diese auch verwendet. Ubuntu verwendet voreingestellt keine Firewall. Es müssen diese Ports geöffnet werden:

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

Ports prüfen:

sudo ufw status

Verwendet man als Zugang DynDNS mit einer Fritz!Box, so ist die Firewall nicht notwendig. Man gibt dann in der Fritz!Box die benötigten Ports frei.



Jetzt gibt es zwei Möglichkeiten: Jitsi mittels Installationsskript installieren (Kapitel 4 Installationsskript) oder jitsi manuell installieren. Dann lesen Sie ab Kapitel 5 Konfiguration Ubuntu 18.04 Server weiter.


4 Installationsskript

Mit diesem Skript erfolgt die Installation automatisch. Als Zertifikat wird dabei letsencrypt verwendet. Zuvor müssen Sie aber noch DynDNS im Router aktivieren.

#!/bin/bash
# Installiert einen jitsi-Server
# $1 = Domainname
if [ -z $1 ]
then
  echo "Bitte Domainname eingeben"
  exit 1
fi    
JITSIHOST=$1
hostnamectl set-hostname $JITSIHOST
sed -i "s/localhost$/localhost $JITSIHOST/" /etc/hosts
# jitsi
wget https://download.jitsi.org/jitsi-key.gpg.key
apt-key add jitsi-key.gpg.key
echo "deb https://download.jitsi.org stable/" > /etc/apt/sources.list.d/jitsi-stable.list
apt update
apt -y install jitsi-meet
# set logging level WARNING
sed -i "s/^.level=INFO/.level=WARN/" /etc/jitsi/videobridge/logging.properties
# letsecnrypt
apt -y install certbot
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
# jitsi neu starten
systemctl restart prosody.service
systemctl restart jicofo.service
systemctl restart jitsi-videobridge2.service

Dieses Skript als Datei abspeichern und auf den Server kopieren und ausführen. Als Eingabeparameter muss der Domain Name mitgegeben werden:

sudo sh jitsi.sh vmfree.selfhost.co
Nach Ausführen des Skripts, können Sie jitsi testen.


5 Konfiguration Ubuntu 18.04 Server

Nach der Installation diese Anpassungen vornehmen (die Änderungen müssen mit sudo oder Benutzer root durchgeführt werden):

  1. Eine feste (static) IP-Adresse verwenden. In unserem Beispiel 192.168.0.51.
  2. Hostname auf Domain name ändern:
    sudo hostnamectl set-hostname vmfree.selfhost.co
  3. Datei
    /etc/hosts
    ändern von:
    127.0.0.1 localhost
    nach:
    127.0.0.1 localhost	vmfree.selfhost.co


6 DynDNS im Router aktivieren

Damit man über das Internet auf den jitsi-Server zugreifen kann, muss im Router DynDNS aktiviert werden. Hier die Konfiguration für die FRITZ!Box: hostname
Der FRITZ!Box mitteilen, welcher Server mit DynDNS verbunden werden soll und welche Ports freizugeben sind. Es müssen die Ports freigegeben werden, die der jitsi-Server benötigt. Siehe Kapitel Firewall.
: hostname


7 Installation jitsi-Server

Jetzt kann jitsi installiert werden.

  1. jitsi GPG-Key herunterladen:
    wget https://download.jitsi.org/jitsi-key.gpg.key
  2. jitsi-GPG-Key installieren:
    sudo apt-key add jitsi-key.gpg.key
  3. Repository für den jitsi-Server in das Ubuntu Repository für den Download eintragen. Dazu die Datei
    /etc/apt/sources.list.d/jitsi-stable.list
    mit diesem Inhalt erstellen:
    deb https://download.jitsi.org stable/
  4. Installation jitsi-Server:
    sudo apt update
    sudo apt install jitsi-meet
  5. Während der Installation wird nach dem Hostname gefragt. Eingabe ist vmfree.selfhost.co:
    hostname
  6. Danach erfolgt die Abfrage, welche Art von Zertifikat genutzt werden soll. Für ein Zeritifkat von letsecnrypt wählen Sie "Generate a new self-signed certificate" aus. Möchten Sie ein eigenes Zertifikat verwenden, muss "I wont to use my own certificate" ausgewählt werden. Siehe dazu auch das Kapitel Zertifikate:
    hostname
  7. Die weiteren Abfragen ohne Änderungen übernehmen.


8 Zertifikate

jitsi benötigt ein TLS-Zertifikat. Für unsere Installation verwenden wir ein kostenloses Zertifikat von letsencrypt. Das haben wir auch in der Installation bereits angegeben.

8.1 Zertifikat mit letsencrypt erstellen

Installation Zertifikatserstellung mit letsencrypt:

sudo apt install certbot
Zertifikat erstellen:
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Beim Start des Skripts, werden Sie nach einer Emailadresse gefragt. letsencrypt informiert sie dann per email, wenn das Zertifikat abläuft:

hostname

Zertifikate von letsencrypt haben eine Gültigkeit von 90 Tagen. Danach müssen sie erneuert werden. Bei der Ausführung dieses Skripts, wurde daher ein weiteres Skript installiert. Dieses Skript prüft wöchentlich, ob das Zertifikat erneuert werden muss.

/etc/cron.weekly/letsencrypt-renew
Nachdem das Zertifikat erstellt wurde, kann der Port 80 in der Firewall bzw. im Router wieder geschlossen werden. Port 80 in der Firewall "ufw" schliessen:
sudo ufw delete allow 80/tcp

8.2 Eigenes Zertifikat erstellen

Eigenes Zertifikat erstellen:

sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -keyout /etc/ssl/vmfree.selfhost.co.key -out /etc/ssl/vmfree.selfhost.co.crt
Dieses Zertifikat hat eine Gültigkeit von 3 Jahren (-days 1095).


9 Jitsi neu starten

Entweder man startet den Server neu (mit reboot), oder man startet die jitsi-Prozesse neu:

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


10 Zugang testen

  1. Browser starten
  2. URL: https://vmfree.selfhost.co
  3. Dann sollte diese Seite angezeigt werden:
    hostname
    Durch Eingabe eines Namens und Anklicken von "Los" wird ein neues Meeting gestartet.


11 Logging Level ändern

Standardmäßig wird bei jitsi alles mitprotokolliert, z. B. auch die IP Adressen der Teilnehmer. Um dies abzuschalten, muss der Logging Level von INFO auf WARNING geändert werden. Dazu die Datei

/etc/jitsi/videobridge/logging.properties
ändern von:
.level=INFO
nach
.level=WARNING
Danach jitsi neu starten.


12 STUN Server ändern

jitsi benötigt STUN-Server für NAT. Gerne protokollieren STUN-Servern von Datenkraken die IP-Adressen der Nutzer. Man kann vorgeben, welche STUN-Server verwendet werden sollen. Dazu diese Datei ändern:

/etc/jitsi/meet/vmfree.selfhost.co-config.js
In unsrem Beispiel fügen wir den STUN-Server von mozilla hinzu:
stunServers: [ 
	{ urls: 'stun:stun.services.mozilla.com:3478' },
	{ urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }
],
Danach jitsi neu starten.


13 Erlaubte Benutzer

Damit nicht jeder eine Sitzung in jitsi anlegen darf, kann man Benutzer anlegen. Nur diese Benutzer haben dann das entsprechende Recht.

  1. Datei
    etc/prosody/conf.avail/vmfree.selfhost.co.cfg.lua
    ändern von:
    authentication = "anonymous"
    nach:
    authentication = "internal_plain"
  2. Datei
    etc/prosody/conf.avail/vmfree.selfhost.co.cfg.lua
    um diesen Text ergänzen:
    	VirtualHost "guest.vmfree.selfhost.co"
    	    authentication = "anonymous"
    	    c2s_require_encryption = false
  3. Datei
    /etc/jitsi/meet/vmfree.selfhost.co-config.js
    ändern von:
    // anonymousdomain: 'guest.example.com',
    nach:
    anonymousdomain: 'guest.vmfree.selfhost.co',
  4. Datei
    /etc/jitsi/jicofo/sip-communicator.properties
    ergänzen:
    org.jitsi.jicofo.auth.URL=XMPP:vmfree.selfhost.co
  5. Benutzer anlegen, die eine Konferenz erstellen dürfen:
    prosodyctl register Anwendername vmfree.selfhost.co Passwort
    Wobei Anwendername durch den gewünschten Anwendernamen ersetzt werden muss und Passwort durch das Passwort mit dem sich der Anwender authentifizieren muss.
  6. Danach
  7. jitsi neu starten.


14 Keine Verbindungen zu gravatar.com

Über ein Einstellungsmenü können Teilnehmer ihr Profil bzw. ihren Namen anpassen. Dieser wird dann in der Konferenz angezeigt. Beim Klick auf die Einstellungen (Rädchen-Symbol) gelangt man in ein Menü, wo man seine Geräte, Profil und mehr konfigurieren kann. Unter Profil lässt sich eine E-Mail-Adresse für Gravatar eingeben. Eine Eingabe dort löst wiederum eine Verbindung zu www.gravatar.com aus. Damit wird eine Verbindung zu einem externen Dienstleister hergestellt.
Um dies zu unterbinden muß die Datei

/etc/jitsi/meet/vmfree.selfhost.co-config-js
geändert werden. Von:
// disableThirdPartyRequests: false,
nach:
disableThirdPartyRequests: true,
Danach jitsi neu starten.


15 jitsi App mit Android

Um jitsi auf einem Gerät mit Android zu verwenden, sollte man die jitsi-App von F-Droid installieren. Die App vom Google Play Store enthält Tracker.


16 Datenschutzerklärung

Um eine Datenschutzerklärung auf der Willkommensseite von jitsi hinzuzufügen, muss die Datei

/usr/share/jitsi-meet/static/welcomePageAdditionalContent.html
von:
<template id = "welcome-page-additional-content-template"></template>
nach:
<template id = "welcome-page-additional-content-template">
    <div id="footer"> 
        <center>Betrieben von vmfree | 
        <a href="https://www.vmfree.org/impressum.html">Impressum</a> | 
        <a href="https://www.vmfree.org/datenschutzhinweis.html/">Datenschutzhinweis</a></center>
        </center>
    </div>
    </template>

geändert werden. Dazu müssen natürlich die Dateien impressum.html und datenschutzhinweis.html noch erstellt werden. Danach muß der Webserver neu geladen werden:
sudo service nginx reload


17 Weitere Optimierungen

Für einen reibungslosen Betrieb sollte man in der Datei

/etc/systemd/system.conf
die Anzahl der zulässigen Prozesse erhöhen. Dazu müssen die folgenden Einträge am Ende hinzugefügt werden:
    DefaultLimitNOFILE=65000  
    DefaultLimitNPROC=65000  
    DefaultTasksMax=65000
Damit die Einträge wirksam werden, muss der Dienst Systemd neugestartet werden:
systemctl daemon-reload
Man kann die Auflösung des eigenen Videos heruntersetzen. Dazu in der Datei
/etc/jitsi/meet/vmfree.selfhost.co-config-js
die Auflösung ändern von:
// resolution: 720,
nach:
resolution: 480,
Zusätzlich kann die zu übertragende Videoqualität in Jitsi Meet eingestellt werden. Dies erfolgt in der Datei
/etc/jitsi/meet/vmfree.selfhost.co-config-js
Um eine niedrigere Videoqualität einzustellen, müssen diese Zeilen geändert werden von:
    // constraints: {
    //     video: {
    //         height: {
    //             ideal: 720,
    //             max: 720,
    //             min: 240
    //         }
    //     }
    // },
nach:
     constraints: {
         video: {
             height: {
                 ideal: 480,
                 max: 480,
                 min: 240
             }
         }
     }, 
Bei jitsi werden alle Teilnehmer angezeigt. Um Video-Stream zu reduzieren kann nur das Video des aktuellen Sprechers eingeblendet werden. Dazu in der Datei
/etc/jitsi/meet/vmfree.selfhost.co-config-js
diesen Wert ändern von:
channelLastN: -1,
nach:
channelLastN: 1,
Videos nur übertragen, die auch bei einem Teilnehmer dargestellt werden:
/etc/jitsi/meet/vmfree.selfhost.co-config-js
diesen Wert ändern von:
// enableLayerSuspension: false,
nach:
enableLayerSuspension: true,
Nach diesen Änderungen jitsi neu starten.

Contact us info@vmfree.org