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
9 Kommentare

06.01.2021 Update: Kleinere Korrekturen und Ergänzungen.

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

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

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

Matthias am 1. Januar 2021 um 20:04 Uhr

Hallo und vielen Dank für den Beitrag!

Leider ist Dein Update-Script so nicht ganz okay.

In Zeile 17 fehlt die Maskierung der Anführungszeichen. Korrekt wäre:

echo „Hier kommt beliebiger Inhalt“ > /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html

In Zeile 20 fehlen die Abführungszeichen. Korrekt wäre:

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

Tobias am 2. Januar 2021 um 10:49 Uhr

Dankeschön für den Hinweis. Zeile 20 ist behoben. In Zeile 17 hat mir mein Syntax Highlighting Script eine Streich gespielt – die einfachen Anführungszeichen wurden automatisch in doppelte umgewandelt. Das passiert aber nur bei den inneren …

jay am 13. Januar 2021 um 13:31 Uhr

hallo,
wann kommen die updates zum neuen release vom 12.1.?
da scheint sich ja einiges geändert zu haben.

Tobias am 13. Januar 2021 um 19:56 Uhr

Die Version 2.0.5390 wurde gestern veröffentlicht und kann auf meinem Testserver meet3.scheible.it getestet werden.

Fabian Flodman am 16. Januar 2021 um 21:18 Uhr

Hallo,
Mit dem Update vom 12.01.21 funktionieren anscheinend einige CSS Anpassungen nicht mehr. Gerade der Hintergrund und der Titel/Subtitel funktionieren nicht mehr.
Wie kann man die 3 Sachen nun ändern? Ich bekomm es nicht hin.

Vielen Dank und viele Grüße
Fabian

Tobias am 20. Januar 2021 um 19:09 Uhr

Dies ahbe ich in diesem Artikel erklärt: https://scheible.it/das-design-von-jitsi-meet-anpassen

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.