Tobias ScheibleCybercrime Dozent & Live Hacking Speaker
Jitsi Meet Webkonferenz

Jitsi Meet Update Script

Jitsi Meet lässt sich sehr einfach auf einem eigenen Server installieren und kann umfassend individuell angepasst werden. Leider werden die Änderungen bei einem Update wieder überschrieben. Mit einem Script können diese Änderungen einfach automatisiert wieder eingespielt werden.

Samstag, 09. Mai 2020
16 Kommentare

16.05.2021 Update: Neue Funktionen aufgenommen und Aktualisierungen eingepflegt.

Die Open-Source-Software Jitsi Meet für Videokonferenzen im Web kann sehr einfach, ohne eine Software zu installieren, mit einem Webbrowser genutzt werden. Neben den zahlreichen öffentlichen Jitsi Meet Servern kann eine eigene Instanz einfach installiert werden. Nach der Installation erfolgt die Anpassung, wie das Ändern des Logos, des Namens und das Hinzufügen eines Impressums. Leider werden diese Änderungen mit einem Update von Jitsi Meet immer wieder überschrieben. Da die Community sehr aktiv ist, gibt es regelmäßige Updates, was zu einigem Aufwand führt.

Bash Script

Abhilfe habe ich mir mit einem Bash Script geschaffen, welches das Update von Jitsi Meet ausführt und anschließend wieder alle Änderungen automatisiert durchführt. Damit kann die Serverinstallation schnell und einfach durchgeführt werden. Das Script kann direkt in der Shell unter Linux ausgeführt werden.

Kostenloser Jitsi Meet Server (meet.scheible.it):

Aufbau des Update Scripts

Das Script wurde für eine Jitsi Meet Installation gemäß meiner Anleitung unter Ubuntu 18.04 getestet. Die einzelnen Schritte zur Aktualisierung von Jitsi Meet werden der Reihe nach ausgeführt und fangen immer mit einer Beschreibung an, die mit ausgegeben wird. Das Script ist sehr einfach gehalten, sodass es selbst sehr einfach angepasst werden kann. Für eigene Anpassungen sollten immer die Teile bearbeitet werden, die den Begriff „example“ beinhalten.

Jedes Bash Script startet mit dem Eintrag #!/bin/bash, dabei handelt es sich um eine Anweisung (Shebang) die definiert, mit welchem Kommandointerpreter (also welcher Shell) die Datei ausgeführt werden soll.

#!/bin/bash

Update der Pakete

Um Jitsi Meet zu aktualisieren, werden als Erstes die Softwarequellen aktualisiert (apt update) und dann die neuen Pakete installiert (apt upgrade).

echo "Update System and Jitsi Meet"
apt update -qq
apt upgrade -qq -y

Anpassung des Logos

wget

Als erste Anpassung wird das Logo getauscht. Dazu wird mittels wget das eigene Logo heruntergeladen. Das eigene Logo muss auf einem Webspace abgelegt werden (Link https://example.com/watermark.png entsprechend anpassen).

echo "+ Modify Logo"
wget -c -q -O /usr/share/jitsi-meet/images/watermark.png https://example.com/watermark.png

In der neuen Version von Jitsi Meet wird eine SVG-Datei als Logo verwendet. Die Dateiendung kann einfach wieder auf .png geändert werden:

$ sed -i -e 's/watermark.svg/watermark.png/g' /usr/share/jitsi-meet/interface_config.js

Anpassung des Interface

sed

Im nächsten Schritt wird die Datei interface_config.js angepasst, sie beinhaltet die Optionen für das Interface von Jitsi Meet. Hier werden exemplarisch drei Einträge geändert. Als Befehl bzw. Tool wird sed verwendet, damit kann innerhalb einer Datei nach einer Zeichenkette gesucht werden und diese durch eine andere ersetzen. Die wichtigen Teile befinden sich innerhalb der Schrägstriche „/“ mit dem folgenden Schema:

sed -i -e 's/SUCHE/ERSETZE/g' DATEI

Der erste Eintrag ersetzt die URL des Logos durch die eigene URL. Dann wird der Eintrag DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT auf true gesetzt, um den Link zum Impressum einzubinden. Da es keinen anderen Eintrag gibt, der mit _CONTENT endet, reicht diese Zeichenfolge zum Suchen. Zum Schluss wird noch der eigene Namen zum Standardnamen Jitsi Meet mitangehängt. Dieser erscheint auf der Startseite und im Titel.

echo "+ Modify interface_config.js"
sed -i -e 's/jitsi.org/example.com/g' /usr/share/jitsi-meet/interface_config.js
sed -i -e 's/_CONTENT: false/_CONTENT: true/g' /usr/share/jitsi-meet/interface_config.js
sed -i -e 's/Jitsi Meet/Jitsi Meet – Example Company/g' /usr/share/jitsi-meet/interface_config.js

Link zum Impressum

Nachdem der zusätzliche Inhalt auf der Startseite aktiviert wurde, muss noch die Datei welcomePageAdditionalContent.html mit Inhalt befüllt werden. Dazu wird der Echo-Befehl verwendet und die Ausgabe in die Datei umgeleitet, dies geschieht mit dem „>“-Operator. Damit wird der Inhalt der Datei komplett überschrieben. Wichtig dabei ist, den ursprünglichen <template>-Tag nicht zu vergessen und nur einfache Anführungszeichen zu verwenden.

echo "+ Modify welcomePageAdditionalContent.html"
echo "" > /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html

CSS-Layout

Als Nächstes werden die individuellen CSS-Anweisungen in die all.css geschrieben. Damit kann zum Beispiel das Layout der Startseite von Jitsi Meet angepasst werden. Dazu wird wieder der Echo-Befehl verwendet, aber mit dem doppelten „>>“-Operator. Da die CSS-Datei nicht überschrieben werden soll, sondern die zusätzlichen Einträge werden am Ende angefügt.

echo "+ Modify all.css"
echo "/* Custom */ a{color: red;} >> /usr/share/jitsi-meet/css/all.css

Sollen mehrere CSS-Anweisungen eingetragen werden, ist es komfortabler, diese in eine extra Datei abzuspeichern. Mit dem cat-Befehl kann der Inhalt einer Datei ausgegeben und mit dem >>-Operator in eine andere Datei umgeleitet und an das Ende angefügt werden.

cat /root/jitsi/jitsi.css >> /usr/share/jitsi-meet/css/all.css

Abschluss des Updates

Damit die Änderungen vom System auch übernommen werden, müssen zum Abschluss die Jitsi Meet Services neu gestartet werden.

echo "+ Restarting services"
# service prosody restart && service jicofo restart && service jitsi-videobridge2 restart && service nginx restart

Das komplette Script

Hier das komplette Script zum bequemen Aktualisieren von Jitsi Meet Servern:

#!/bin/bash
echo "Update System and Jitsi Meet"
apt update -qq
apt upgrade -qq -y
echo "Modify Jitsi Meet Config"
echo "+ Modify Logo"
wget -c -q -O /usr/share/jitsi-meet/images/watermark.png https://example.com/watermark.png
echo "+ Modify interface_config.js"
sed -i -e 's/jitsi.org/example.com/g' /usr/share/jitsi-meet/interface_config.js
sed -i -e 's/_CONTENT: false/_CONTENT: true/g' /usr/share/jitsi-meet/interface_config.js
sed -i -e 's/Jitsi Meet/Jitsi Meet – Example Company/g' /usr/share/jitsi-meet/interface_config.js
echo "+ Modify welcomePageAdditionalContent.html"
echo '' > /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html
echo "+ Modify all.css"
echo "/* Custom */ a{color: red;}" >> /usr/share/jitsi-meet/css/all.css
echo "+ Restarting services"
service prosody restart
service jicofo restart
service jitsi-videobridge2 restart
service nginx restart

Das Bash Script kann zum Beispiel direkt im Root-Verzeichnis abgelegt werden. Als Beispiel wird hier der Name update.sh verwendet. Der obige Inhalt wird angepasst und in die Datei gespeichert. Zusätzlich müssen noch die Rechte zum Ausführen gesetzt werden.

$ sudo chmod +x /root/update.sh

Zum Ausführen des Jitsi Meet Update Scripts kann dann der folgende Befehl verwendet werden:

$ sudo /root/update.sh

Konfiguration einbinden

Den obigen Weg habe ich gewählt, da ich auch Änderungen an der CSS-Datei vornehme. Wenn nur das Logo, die Konfigurationsdatei und der zusätzliche Inhalt geändert werden soll, kann dies über eine Verknüpfung realisiert werden. Die individuellen Dateien werden dazu am besten im Ordner /etc/jitsi/meet abgelegt. Danach muss in der Konfigurationsdatei des Webservers NGINX für die verwendete Domain, die im Ordner /etc/nginx/sites-enabled/ liegt, die folgenden Einträge ganz am Ende, aber noch vor der letzten schließenden geschweiften Klammer, hinzugefügt werden:

// /etc/nginx/sites-enabled/meet.example.com.conf
location = /favicon.ico { alias /etc/jitsi/meet/favicon.ico;
}
location = /images/watermark.png { alias /etc/jitsi/meet/watermark.png;
}
location = /static/welcomePageAdditionalContent.html { alias /etc/jitsi/meet/welcomePageAdditionalContent.html;
}
location = /interface_config.js{
alias /etc/jitsi/meet/interface_config.js;
}

Wichtig ist im Hinterkopf zu behalten, dass es auch Änderungen an der interface_config.js geben kann. Dadurch kann es sein, dass neue Funktionen nicht zur Verfügung stehen oder es im schlimmsten Fall zu Komplikationen kommen kann.

Jitsi Meet Fehlerbhebung

Sollte es nach einem Update von Jitsi Meet zu Fehlern kommen, hilft als Erstes ein Neustart der Services:

 # service nginx restart && service jitsi-videobridge2 restart && service prosody restart && service jicofo restart

Sollte es danach immer noch zu Fehlern kommen, empfiehlt sich ein Blick in die Logdateien der unterschiedlichen Jitsi Meet Komponenten:

Video Bridge Logs:
# tail -F /var/log/jitsi/jvb.log
Jicofo Logs:
# tail -F /var/log/jitsi/jicofo.log
Prosody Logs:
# tail -F /var/log/prosody/prosody.log
Nginx Logs:
# tail -F /var/log/nginx/error.log

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


Jitsi Meet Artikel für Administratoren

Changelog

16.05.2021Neue Funktionen aufgenommen und Aktualisierungen eingepflegt.

06.01.2021Kleinere Korrekturen und Ergänzungen.

24.10.2020Neuer Bereich Fehlerbhebung ergänzt.

17.05.2020Script wurde weiter optimiert.

05.05.2020Abschnitt „Konfiguration einbinden“ ergänzt.

Über Tobias Scheible

Tobias Scheible

Hallo, mein Name ist Tobias Scheible. Ich bin begeisterter Informatiker und Sicherheitsforscher mit den Schwerpunkten Cyber Security und IT-Forensik. Mein Wissen teile ich gerne anhand von Fachartikeln hier in meinem Blog und in meinem Fachbuch. Als Referent halte ich Vorträge und Workshops für Verbände und Unternehmen u. a. auch offene Veranstaltungen für den VDI und die IHK.