jitsi – aber sicher!

jitsi ist ein OpenSource Videokonferenz System, welches recht einfach selber bereitgestellt werden kann.
Gerade in Zeiten, wo jeden Tag ein neuer Bericht über die Zustände beim Platzhirsch zoom bekannt werden, sollte man sich auch Alternativen ansehen. Die public jitsi Server sind zwar eine schöne Sache, aber sind sie auch sicher? Wenn man weder Provider noch die Absichten des Admins kennt? Ein lokales mitschneiden aller Sessions ist durchaus machbar. Daher könnte man einen solchen Server für 50% des Geldes eines Pro Accounts bei zoom.us in Betracht ziehen.
Grundlage ist gerade ein Hetzner CPX11 mit 2VCPUS 2GB RAM für 4,15€ / Monat.

Frisch eingerichtet und den ssh key hinterlegt kann es schon losgehen. Eine Domain sollte mittels A-Record schon auf die IP des Servers zeigen. Wenn die noch nicht existiert, könnte man das bei hosting.de recht preiswert erledigen.

Jitsi installieren
Als erstes wird das Repository in die Instanz hinzugefügt.

echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list

Fehlen sollte auch nicht der Schlüsselcheck.

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

Quellen auf Stand bringen.

apt-get update 

Nun kann man die Komponenten von Jitsi installieren.

apt -y install jitsi-meet

Es folgt die Frage nach der Domain. Das haben wir ja schon vorher vorbereitet und muss nun eingetragen werden. Hier bitte aufpassen, da diese Domain in etlichen config Files eingetragen wird. Das zu ändern wäre echter Aufwand. Beispiel: jitsi.domain.de
Beim Zertifikat bitte ein selbst-signiertes SSL-Zertifikat auswählen.

Letsencrypt
HTTPS wäre natürlich schöner ohne Fehlermeldung des Browsers. Dazu erstellen wir ein letsencrypt Zertifikat und binden es in den Webserver ein. Und das geht sogar vollautomatisiert.

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

Im Browser kann man nun unter seiner URL den ersten Connect durchführen. https://jitsi.domain.de

Etwas mehr Privacy bitte.
Nun ist jeder mit der URL in der Lage, seinen eigenen Raum zu öffnen und Leute einzuladen. Kann man machen, aber manchmal ist es besser den Raum per Operator zu erstellen und dann die Nutzer joinen zu lassen. Gerade wenn man die Bandbreite braucht, ist dies ratsam.

Bevor wir das aber angehen, sollte man die Firewall auf dem Server noch etwas zuschnüren. UFW kann das für uns gleich übernehmen

ufw allow ssh
ufw allow http
ufw allow https
ufw allow 10000/udp
ufw enable

Authentification aktivieren.
Dazu müssen in den drei Dateien Anpassungen vollzogen werden.

/etc/jitsi/meet/apeunit.test-config.js
/etc/prosody/conf.avail/apeunit.test.cfg.lua
/etc/jitsi/jicofo/sip-communicator.properties

Damit dies für die folgenden Scripts geht, muss die Domain noch als Systemvariable hinterlegt werden.

export JITSI_DOMAIN="jitsi.domain.de"

Die meet Konfiguration manuell anpassen oder per Befehl downloaden und die Domain ersetzen.

curl  https://gist.githubusercontent.com/noandrea/5ff6b212273af95103996c0e71f0cdf2/raw/d14979d5b31af324c5823b3d3c8683a6c762f518/apeunit.test-config.js -s | \
sed  "s/apeunit.test/$JITSI_DOMAIN/g" \
> /etc/jitsi/meet/$JITSI_DOMAIN-config.js

Das gleiche mit der prosody Konfiguration. Hier wird gleich noch ein neues Secret generiert.

curl https://gist.githubusercontent.com/noandrea/5ff6b212273af95103996c0e71f0cdf2/raw/d14979d5b31af324c5823b3d3c8683a6c762f518/apeunit.test.cfg.lua -s | \
sed  "s/apeunit.test/$JITSI_DOMAIN/g" | \
sed  "s/JICOFO_SECRET/$(grep -e '^JICOFO_SECRET=.*' /etc/jitsi/jicofo/config | cut -d '=' -f2)/g" | \
sed  "s/TURN_SECRET/$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-8})/g" \
> /etc/prosody/conf.avail/$JITSI_DOMAIN.cfg.lua

Fehlt noch der sip communicator.

echo "org.jitsi.jicofo.auth.URL=XMPP:$JITSI_DOMAIN" \
>> /etc/jitsi/jicofo/sip-communicator.properties

Benutzer anlegen.
Damit Räume angelegt werden können, bedarf es noch eines lokalen Benutzers.

prosodyctl register jitsichef $JITSI_DOMAIN das_ganz_geheime_passwort

Wenn man das später machen will, muss man die Domain manuell eintragen, da dann die Variable nicht mehr existiert.

Neustart
Alles geklappt? Dann Neustart der Dienste.

service jicofo restart
service jitsi-videobridge2 restart
service prosody restart

Nun kann man sich über die URL im Browser mit dem lokalen Nutzer authentifizieren und dann den Wunschraum erstellen. Dann den Link an die Nutzer verteilen und ausprobieren.

Kleiner Tipp: Bei Hetzner kann man im Webfrontend auch schön die aktuelle Auslastung der Instanz monitoren. Sollte es dann Ressourcenengpässe geben, sind diese sofort zu sehen.

Schreibe einen Kommentar

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