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

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

Sebastian am 29. Januar 2021 um 13:26 Uhr

Hallo,
vielen Dank für die guten Anleitungen! Klappt bei mir fast alles. Eine Fragen bleibt für mich offen:
Warum editieren Sie diese Datei? /etc/nginx/sites-enabled/meet.example.com.conf
Soweit ich mich in die Thematik einlesen konnte, ist das ja nur ein symlink auf die Datei in sites-available und es können irreparable Schäden am System auftreten (?). Ich habe mich bisher nicht an diese Datei herangetraut und deshalb auch noch keine individuelle Fußzeile mit der neuen Version erstellen können.

Grüße
Sebastian

Tobias am 29. Januar 2021 um 19:11 Uhr

Hallo Sebastian,
das ist korrekt, dass es sich um einen Symlink handelt. Dadurch wird automatisch die verknüpfte Datei bearbeitet. Wenn manuell eine neue Domain auf dem Webserver angelegt wird, wird solch ein Datei erstellt. Ich habe es nur als Alternative aufgezeigt, diese Methode muss nicht angewendet werden.
Grüße Tobias

Rüdiger am 29. April 2021 um 17:26 Uhr

Hallo Tobias,

hatte Dir schon einmal eine Mail geschickt, auf die Du nicht geantwortet hast. Jetzt habe ich Deine Kommentarfunktion entdeckt.

Folgende Fragen stellen sich mir:
1. Beim updaten und upgraden kommen folgende Warnmeldungen. Soll man sie beachten?
– W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://download.jitsi.org stable/ InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY B4D2D216F1FD7806
– W: Failed to fetch https://download.jitsi.org/stable/InRelease The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY B4D2D216F1FD7806
– W: Some index files failed to download. They have been ignored, or old ones used instead.

2. Die Aufnahmefunktion geht bei Jitsi nicht. Du hast dazu leider keine tolle Anleitung. Soll man sich einfach dort entlanghangeln?
https://community.jitsi.org/t/tutorial-how-to-install-the-new-jibri/88861

3, Gibt es eine technische Begrenzung seitens Jitsi hinsichtlich der Anzahl der Teilnehmer mit und ohne Kamera, sofern der Server natürlich nicht begrenzt ist?

Vielen Dank für Deine Antworten, Rüdiger

Tobias am 29. April 2021 um 23:41 Uhr

Hallo Rüdiger,
du musst die Key für die Signatur aktualisieren, indem du ihn neu hinzufügst:

# curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
# echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null

Die Aufnahmefunktion von Jitsi Meet verwende ich nicht. Die offizielle Seite ist ein guter Ansatz dafür. Ein technische Begrenzung für Jitsi Meet gibt es nicht.
Grüße Tobias

Rüdiger am 29. April 2021 um 17:46 Uhr

Hallo Tobias,

hier bin ich wieder. Ich habe bei hetzner. de einen Ubuntu 20.x Server installiert.

Wie kann ich die update.sh, wenn ich root bin, z.B. von meinen Linux Terminal aus, auf den Server kopieren:
cp -uv QUELLE ZIEL
Die Frage ist wie kann ich die Quelle adressieren?

Danke, Rüdiger

Tobias am 29. April 2021 um 23:39 Uhr

Hallo Rüdiger,
es gibt mehrere Wege. Du kannst zum Beispiel die Software Filezilla oder auf dem Terminal das Tool scp verwenden. Je nach verwendete Umgebung kannst du auch eine neue Datei in einem Editor öffnen und den Code über die Zwischenablage einfügen.
Grüße Tobias

Rüdiger am 6. Mai 2021 um 11:06 Uhr

Hallo Tobias,
danke für Deine Hinweise, mit denen ich die Probleme lösen konnte.

Wie lautet eigentlich der sed-Befehl, wenn ich
DEFAULT_LOCAL_DISPLAY_NAME: ‚me‘ durch DEFAULT_LOCAL_DISPLAY_NAME: ‚Ich‘
BRAND_WATERMARK_LINK: “ zu BRAND_WATERMARK_LINK: ‚images/watermark.png‘
ersetzen möchte?

Erfolgen alle css-Änderungen am besten über html Einträge in die welcomePageAdditionalContent.html?

Und hier ein Tipp von mir.
Bei dem Update Skript update.sh für das Logo wird das alte Logo watermark.svg nicht richtig überschrieben, ebenso wenn ich welcome-background.png austausche. Lediglich bei watermark.png scheint es zu klappen. Das habe ich mehrfach geprüft. Das neueste Jitsi bevorzugt watermark.svg
Hierzu habe die einfache Lösung vor dem wget Befehl verwendet
$ rm /images/watermark.png
$ rm /images/welcome-background.png
….
Danke & herzliche Grüße, Rüdiger

PS: Wäre toll, wenn man zu der hinterlegten E-Mail automatisch eine Nachricht bekommt, wenn Du eine Antwort schreibst. Ich weiß aber nicht, ob das technisch auf Deiner Website so einfach ist.

Schreibe einen Kommentar!

Hilfe zum Kommentieren und Hiweise

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, eine Gefährdung anderer Besucher darstellen oder keinen sinvollen Inhalt beinhalten, 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 damit ich direkt Kontakt aufnehmen kann. 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.