Tobias Scheible Cyber Security & IT-Forensik Dozent
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
3 Kommentare

17.05.2020 Update: Script wurde weiter optimiert.

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

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

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 Artikelserie

Dieser Blogbeitrag ist Teil der Artikelserie „Videokonferenzen mit Jitsi Meet“, die sich mit dem Webkonferenzsystem Open-Source-System Jitsi für Video-, Web- und Telefonkonferenzen beschäftigt. Die Artikelserie zu Jitsi umfasst die folgenden Themen:

Changelog

05.05.2020Abschnitt „Konfiguration einbinden“ ergänzt.

17.05.2020Script wurde weiter optimiert.

Ü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. 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.

Kommentare

Lothar am 27. Mai 2020 um 09:16 Uhr

Danke für die Anregungen hier und auf den anderen Seiten! Bisher habe ich das manuell erledigt, aber nachdem vorhin apticron wieder eine entsprechende Mail geschickt hat… 😉

Jedenfalls: Das „watermark.png“ lässt sich auch (bevor das Update es killt!) direkt von <Jitsi server>/images/watermark.png holen, also im Skript z.B. so:
wget -c -q -O /usr/share/jitsi-meet/images/watermark.png https://meet.example.com/images/watermark.png

Und eine Frage zu der „Hintergrundunschärfe“-Funktion: Wenn man die einschaltet, werden Dateien von storage.googleapis.com nachgeladen. Müsste man das nicht eigentlich in der Datenschutzerklärung erwähnen?
Bei mir habe ich das Feature wegkonfiguriert, auch, weil es eh nicht besonders toll funktioniert („Beta“ halt) und ich als Zielgruppe v.a. Schulkinder und -eltern habe, die ich erst gar nicht in Versuchung führen will viel herumzuspielen. (Und die nötigen Dateien selbst hosten würde vmtl. auch selbst Jitsi kompilieren bedeuten, habe aber nur kurz gesucht.)

Tobias am 27. Mai 2020 um 12:26 Uhr

Hallo Lothar,
Dankeschön für den Hinweis. Das Thema „Hintergrundunschärfe“-Funktion werde ich noch in meinen anderen Blog-Artikel mitaufnehmen.
Grüße Tobias

Stefan am 3. Juni 2020 um 12:24 Uhr

Lieber Tobias,

vielen Dank fuer die tollen Anleitungen zu Jitsi. Ich habe vor die Installation mal auf meinem Intel NUC i5 zu probieren. Ich habe einen maximalen Upload von 50Mbit/s. Da es nur ein ULV CPU ist kann es natuerlich sein dass auch die CPU-Performance nicht fuer sehr grosse Sessions ausreicht. Von daher super, mal die Optimierungstipps auszuprobieren, und zu schauen wo das bottleneck steckt 🙂

viele Gruesse Stefan

Schreibe einen Kommentar!

Hilfe zum Kommentieren

Um kommentieren zu können, geben sie bitte mindestens ihren Namen und ihre E-Mail-Adresse an. Bitte nutzen Sie die Kommentarfunktion nicht dazu, andere zu beleidigen oder Spam zu verbreiten. Trolle und Spammer sind hier unerwünscht! Unangemessene Kommentare, die zum Beispiel gegen geltendes Recht verstoßen oder eine Gefährdung anderer Besucher darstellen, werden gelöscht oder angepasst.

Name: Ihr Name, der oberhalb des Kommentars steht, gerne auch Ihren echten Namen, das erleichtert die Kommunikation für alle. Sollte ein Spam-Keyword als Name verwendet werden, kann dieses entfernt oder korrigiert werden.

E-Mail: Ihre E-Mail Adresse dient zur Identifizierung weiterer Kommentare und sie haben die Möglichkeit, ein Avatar-Bild zu verwenden. Dazu müssen Sie mit Ihrer E-Mail Adresse bei Gravatar angemeldet sein. Die E-Mail Adresse wird natürlich nicht veröffentlicht und nicht weitergegeben.

Website: Hier können Sie ihren eigenen Blog bzw. ihre eigene Website eintragen, dadurch wird Ihr Name und Ihr Avatar-Bild verlinkt. Werden rein kommerzielle Angebote offensichtlich beworben, setze ich den Link auf nofollow und unangemessene werden einfach entfernt.

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <hr> <big> <small> <sub> <sup> <u>

Ihre E-Mailadresse wird nicht veröffentlicht. Mit dem Absenden anerkennen Sie die Datenschutzhinweis des Blogs.