jitsi at home
Installation eines jitsi Server
Stand: 18.06.2024
Installation eines jitsi Server
Stand: 18.06.2024
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 VirtualBox und 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.
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:
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.
:
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/netplangeändert werden. In diesem Beispiel heißt die Datei
01-netcfg.yamlHier 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 applywerden die Änderungen aktiviert.
Firewall installieren:
sudo apt install ufwPorts für jitsi meet öffnen:
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.
fail2ban analysiert fehlgeschlagene Loginversuche und sperrt diese. Installation fail2ban:
sudo apt install fail2banKonfiguration:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
enabled = true filter = sshd maxretry = 3
systemctl restart fail2ban
Jetzt gibt es zwei Möglichkeiten: Jitsi mittels Installationsskript installieren (Kapitel 4 Installationsskript) oder jitsi manuell installieren. Dann lesen Sie ab Kapitel Manuelle Installation weiter.
Mit diesem Skript erfolgt die Installation automatisch und es werden auch die Anpassungen vorgenommen. Als Zertifikat wird dabei letsencrypt verwendet. Das Skript kann hier heruntergeladen werden.
Die Konfigurationsdatei enthält alle notwendigen Informationen zur Anpassung von jitsi. Die Datei hat die Syntax
PARAMETER=WertPassen Sie die Werte entsprechend an.
HOST=vmfree.selfhost.co MAIL=info@vmfree.org ADMINISTRATOR=administrator PASSWD=AdminPassword TITLE=Test Videokonferenz SUBTITLE=mit Jitsi URL=https://www.vmfree.org URLTITLE=Example URLDATENSCHUTZ=https://vmfree.selfhost.co/datenschutzerklaerung/ URLDATENSCHUTZTITLE=Datenschutz URLIMPRESSUM=https://vmfree.selfhost.co/impressum/ URLIMPRESSUMTITLE=Impressum
Das Skript muss mit root-Rechten ausgeführt werden und es muss die Konfigurationsdatei mitgegeben werden:
sudo sh install.sh KonfigurationsdateiWährend der Installation, wird nochmals der Hostname abgefragt und die Art des Zertifikats. Geben Sie als Hostname den Fully Quallified Domain Name (FQDN) an, wie in der Konfigurationdatei mit dem Parameter HOST angegeben. Wählen Sie bei der Abfrage des Zertifikats den ersten Eintrag: "Generate a new self-signed certificate". Siehe auch Kapitel Installation jitsi-Server.
Nach der Installation diese Anpassungen vornehmen (die Änderungen müssen mit sudo oder Benutzer root durchgeführt werden):
hostnamectl set-hostname vmfree.selfhost.co
/etc/hostsändern von:
127.0.0.1 localhostnach:
127.0.0.1 localhost vmfree.selfhost.co
apt install software-properties-common apt-add-repository universe
apt install apt-transport-https
Jetzt kann jitsi installiert werden. Als Erstes werden die Software-Quellen von Jitsi Meet mit den nachfolgenden beiden Zeilen hinzugefügt und die Paketquelle aktualisiert:
sudo curl https://download.jitsi.org/jitsi-key.gpg.key | sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg' sudo echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null sudo apt update
Installation jitsi-Server:
sudo apt install jitsi-meet
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.
Installation Zertifikatserstellung mit letsencrypt:
sudo apt install certbotZertifikat 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:
Zertifikate von letsencrypt haben eine Gültigkeit von 90 Tagen. Danach müssen sie erneuert werden. Um ein Zertifikat zu erneuern können Sie dieses Programm ausführen:
certbot renew
Sie können periodisch ausführen lassen. Erstellen Sie dazu eine crontab-Datei mit dem Namen
renewund diesem Inhalt:
00 23 * * * cerbot renewMachen Sie die Datei cron bekannt:
crontab renewDamit wird jeden Tag um 23 Uhr ein neues Zertifikat erstellt, wenn das bisherige Zertifikat abgelaufen ist. 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
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.crtDieses Zertifikat hat eine Gültigkeit von 3 Jahren (-days 1095).
Entweder man startet den Server neu (mit reboot), oder man startet die jitsi-Prozesse neu:
sudo systemctl reload nginx sudo systemctl restart prosody.service sudo systemctl restart jicofo.service sudo systemctl restart jitsi-videobridge2.service
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=INFOnach
.level=WARNINGMan sollte auch das Logging des Webservers (nginx) abschalten. Dazu die Datei
/etc/nginx/nginx.confändern von:
access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log;nach
access_log off; error_log off;Danach jitsi neu starten.
/etc/jitsi/meet/vmfree.selfhost.co-config.jsvon:
// doNotStoreRoom: true,nach:
doNotStoreRoom: true,geändert werden.
Ein STUN-Server ermöglicht es einem Rechner hinter einer Firewall trotzdem eine Verbindung aufzubauen. Mit dem TURN-Protokoll können Teilnehmer Daten austauschen, auch wenn keine direkte Verbindung besteht. Der Server ist dabei eine Zwischenstation. Das Paket jitsi-meet-turnserver wird mit jitsi meet installiert. Es muss aber noch die entsprechenden Ports in der Firewall freigegeben werden:
sudo ufw allow 3478/udp sudo ufw allow 5349/tcp
Damit nicht jeder eine Sitzung in jitsi anlegen darf, kann man Benutzer anlegen. Nur diese Benutzer haben dann das entsprechende Recht.
etc/prosody/conf.avail/vmfree.selfhost.co.cfg.luaändern von:
authentication = "anonymous"und
authentication = "jitsi-anonymous"nach:
authentication = "internal_hashed"
etc/prosody/prosody.cfg.luaändern von:
allow_registration = falsenach:
allow_registration = true
etc/prosody/conf.avail/vmfree.selfhost.co.cfg.luaum diesen Text ergänzen:
VirtualHost "guest.vmfree.selfhost.co" authentication = "anonymous" c2s_require_encryption = false
/etc/jitsi/meet/vmfree.selfhost.co-config.jsändern von:
// anonymousdomain: 'guest.example.com',nach:
anonymousdomain: 'guest.vmfree.selfhost.co',
/etc/jitsi/jicofo/jicofo.confvor der letzten Zeile einfügen:
authentication: { enabled: true type: XMPP login-url: }
prosodyctl register Anwendername vmfree.selfhost.co PasswortWobei Anwendername durch den gewünschten Anwendernamen ersetzt werden muss und Passwort durch das Passwort mit dem sich der Anwender authentifizieren muss.
Ü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-jsgeändert werden. Von:
// disableThirdPartyRequests: false,nach:
disableThirdPartyRequests: true,Danach jitsi neu starten.
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.
Als Startseite wird das eigene Webcambild verwendet. Dazu die Datei
/etc/jitsi/meet/vmfree.selfhost.co-config.jsvon:
// prejoinPageEnabled: false,nach:
prejoinPageEnabled: true,ändern.
Den Text der Startseite finden Sie in der Datei
/usr/share/jitsi-meet/lang/main-de.jsonDen Text für den Titel und Untertitel finden Sie hier:
headerTitle:
headerSubtitle:Um ein eigenes Logo einzubinden überschreiben Sie die Datei
/usr/share/jitsi-meet/images/watermark.svg
Um das Hinterbrundbild zu ändern, überschreiben Sie die Datei
/usr/share/jitsi-meet/images/welcome-background.png
In der Datei
/usr/share/jitsi-meet/css/all.csskönnen weitere Anpassungen für an der Startseite vorgenommen werden. Der besseren Lesbarkeit, sollte man die Datei zuvor formatieren, z. B. hier.
Hintergrundbild in voller Größe darstellen:
von:.welcome .header { background-image:linear-gradient(0deg,rgba(0,0,0,.2),rgba(0,0,0,.2)),url(../images/welcome-background.png); background-position:center; background-repeat:none; background-size:cover; padding-bottom:0; background-color:#131519; overflow:hidden; edit by jitsi.sh height:400px; position:relative; }nach:
.welcome .header{ background-image:linear-gradient(0deg,rgba(0,0,0,.2),rgba(0,0,0,.2)),url(../images/welcome-background.png); background-position:center; background-repeat:none; background-size:cover; padding-bottom:0; background-color:#131519; overflow:hidden; height:auto; position:absolute; bottom: 0; top: 0; left: 0; right: 0 }
Box mit Titel und Eingabe weiter nach unten setzen. Dazu Datei
/usr/share/jitsi-meet/css/all.cssändern von:
.welcome .header .header-container { display:flex; flex-direction:column; margin:104px 32px 0 32px; z-index:2 }nach:
.welcome .header .header-container { display:flex; flex-direction:column; margin:15% 32px 0 32px; z-index:2 }
Raumliste ausblenden:
.welcome-cards-container { display: none; }Hat das Bild ein anderes Dateiformat (z. B. png, jpg), dann müssen Sie die den Dateinamen in
/usr/share/jitsi-meet/css/all.cssanpassen. Achtung: Bei einem Update wird die Datei überschrieben.
Um eine Datenschutzerklärung auf der Willkommensseite von jitsi hinzuzufügen, muss die Datei
/usr/share/jitsi-meet/static/welcomePageAdditionalContent.htmlvon:
<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.
/usr/share/jitsi-meet/interface_config.jsvon:
DISPLAY_WELCOME_PAGE_CONTENT: false, DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: false,nach:
DISPLAY_WELCOME_PAGE_CONTENT: true, DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: true,ändern. Danach muß der Webserver neu geladen werden: Nach diesen Änderungen jitsi neu starten.
Für einen reibungslosen Betrieb sollte man in der Datei
/etc/systemd/system.confdie Anzahl der zulässigen Prozesse erhöhen. Dazu müssen die folgenden Einträge am Ende hinzugefügt werden:
DefaultLimitNOFILE=65000 DefaultLimitNPROC=65000 DefaultTasksMax=65000Damit die Einträge wirksam werden, muss der Dienst Systemd neugestartet werden:
systemctl daemon-reload
Dieser Optimierungen werden nicht durch das Installationsskript durchgeführt und müssen daher manuell geändert werden.
Man kann die Auflösung des eigenen Videos heruntersetzen. Dazu in der Datei
/etc/jitsi/meet/vmfree.selfhost.co-config-jsdie Auflösung ändern von:
// resolution: 720,nach:
resolution: 480,
/etc/jitsi/meet/vmfree.selfhost.co-config-jsUm 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 } } },
/etc/jitsi/meet/vmfree.selfhost.co-config-jsdiesen Wert ändern von:
// enableClosePage: true,nach:
enableClosePage: false,und die Datei
/usr/share/jitsi-meet/interface_config.jsvon:
SHOW_PROMOTIONAL_CLOSE_PAGE: false,nach:
SHOW_PROMOTIONAL_CLOSE_PAGE: true,ändern.
/etc/jitsi/meet/vmfree.selfhost.co-config-jsdiesen Wert ändern von:
channelLastN: -1,nach:
channelLastN: 1,
/etc/jitsi/meet/vmfree.selfhost.co-config-jsdiesen Wert ändern von:
// enableLayerSuspension: false,nach:
enableLayerSuspension: true,Nach diesen Änderungen jitsi neu starten.
Contact info@vmfree.org