Inhaltsverzeichnis
Letzte Aktualisierung am 20.07.2022, 14:07:44 Uhr
Aus aktuellen Anlass habe ich mich wie viele andere mit der Open Source Videokonferenz Software Jitsi Meet beschäftigt. Nachstehend eine kurze Beschreibung meiner durchgeführten Schritte bzw. Konfigurationen.
Basis ist in meinem Fall eine virtuelle Maschine mit 2 vCPU, 4GB RAM und 40GB (CX21) Festplattenspeicherplatz. Die Netzwerkanbindung ist 1000Mbit/s und der Server hat eine IPv4 und IPv6 Adresse. Es kann natürlich bei vielen parallelen Räumen und Teilnehmer durch aus Sinn machen, einen dedizierten Server zu nutzen. Ich habe mich für das Betriebssystem Ubuntu Server 20.04 LTS entschieden.
Es empfiehlt sich auf Grund der Architektur einen Webserver als Reverse Proxy einzusetzen. Ich habe mich für den schlanken Nginx entschieden. Selbstverständlich wird auch Apache unterstützt. Bitte unbedingt das Ubuntu Package Repository benutzen. Bei Verwendung der Nginx Repository (Stable als auch Mainline) schlug die Installation von Jitsi Meet fehl.
Definition des DNS-Namen, unter dem die Jitsi Installation erreichbar ist. Somit sind in der Regel keine Anpassungen an den weiteren Befehlen notwendig.
export FqdnJitsiServer=meet.wydler.eu echo $FqdnJitsiServer
Installation von Nginx
apt update && apt upgrade -y && apt autoremove -y && apt autoclean apt install -y nginx systemctl start nginx systemctl enable nginx
Wird keiner von beiden Webservern vorinstalliert, wird im Rahmen der Installation Jitsi automatisch der Webserver Jetty installiert.
Installation Jitsi Meet
Nun geht’s an die eigentliche Installation Jitsi Meet. Zuerst muss das entsprechend Package Repository eingebunden werden. Denn die Anwendung ist nämlich nicht im Standard Package Repository vorhanden. Unabhängig davon stellen die Repositories des Softwareherstellers fast immer aktuellere Versionen zur Installation bereit.
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add - echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list apt update
Start der Installation der Software und dessen abhängige Pakete.
apt-mark hold jitsi-meet-turnserver apt install -y jitsi-meet
Im Rahmen der Installation der Software werden zwei wichtige Parameter nacheinander angefragt.
Zuerst muss der FQDN angegeben werden, unter dem die Instanz erreichbar sein wird. Dies setzt natürlich voraus, dass im DNS-Server der A und AAAA-Eintrag korrekt gesetzt sind. Anderenfalls scheitert ein Aufruf im Browser und somit an späterer Stelle auch der Abruf des Zertifikats bei Let’s Encrypt.
Der zweite Parameter ist die Abfrage des SSL Zertifikats. Für die Fertigstellung der Konfiguration reicht erst einmal ein Self-Signed Zertifikat.
Danach werden die verbleibenden Schritte der Installation automatisch durchgeführt.
Im Rahmen der Installation wurde automatisch auch die notwendige Konfiguration für Nginx erstellt. Diese ist unter /etc/nginx/sites-enabled/meet.wydler.eu.conf. Der Dateiname variiert natürlich je nach Installation. Nachstehende Schritte sollen die Sicherheit des Reverse Proxy verbessern, damit gleich von Anfang das Thema halbwegs angegangen ist.
cp /etc/nginx/sites-available/$FqdnJitsiServer.conf /etc/nginx/sites-available/$FqdnJitsiServer.conf.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 24c"\ listen 443 ssl http2;" /etc/nginx/sites-available/$FqdnJitsiServer.conf sed -i -e 25c"\ listen [::]:443 ssl http2;" /etc/nginx/sites-available/$FqdnJitsiServer.conf sed -i -e 30c"\ ssl_ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES256-CCM8:DHE-RSA-AES256-CCM:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA";" /etc/nginx/sites-available/$FqdnJitsiServer.conf sed -i -e 32i"\ ssl_ecdh_curve secp384r1;" /etc/nginx/sites-available/$FqdnJitsiServer.conf service nginx configtest service nginx restart
Bevor wir nun das SSL-Zertifikat von Let’s Encrypt abrufen, ändern wir noch die Schlüssel von 2048 Bit auf 4096 Bit.
cp /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 79c"\ --deploy-hook $TURN_HOOK --rsa-key-size 4096" /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh sed -i -e 84c"\ --agree-tos --email $EMAIL --rsa-key-size 4096" /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh sed -i -e 113c"\ --agree-tos --email $EMAIL --rsa-key-size 4096" /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
Nun das Bash-Skript ausführen, welches die Entwickler von Jitsi mitliefern. Dieses sorgt dafür, dass neben dem Abruf des Zertifikats auch die Konfiguration bzw. der Webserver neu geladen wird.
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
Gleich nach dem Start kann wird eine E-Mailadresse angegeben. An diese werden wichtige Informationen/Benachrichtigungen für das Zertifikat bzw. Account geschickt.
Es wird bei der Erstnutzung des Skripts das Paket certbot mit seinen Abhängigkeiten installiert. Das kann je nach Systemleistung einen Moment in Anspruch nehmen.
Wichtig ist der Text am Ende der Ausgabe. Nach der Installation wird automatisch versucht das Zertifikat abzurufen.
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Obtaining a new certificate Performing the following challenges: http-01 challenge for meet.wydler.eu Using the webroot path /usr/share/jitsi-meet for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/meet.wydler.eu/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/meet.wydler.eu/privkey.pem Your cert will expire on 2020-06-20. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le Configuring nginx
Somit ist die Grundeinrichtung erfolgreich durchgeführt. Jitsi Meet ist damit über den Browser https://meet.wydler.eu erreichbar.
Anpassung der STUN/TURN-Server
Standardmäßig wird der STUN/TURN – Server nicht für Peer-to-Peer Verbindungen (nicht mehr als zwei Nutzer) genutzt. Ist einer der Teilnehmer in einem geschützten Netzwerk bzw. wird für ausgehenden Datenverkehr ein Regelwerk auf der Firewall gepfelgt, kommt keine stabile Verbindung zu stande.
cp /etc/jitsi/meet/$FqdnJitsiServer-config.js /etc/jitsi/meet/$FqdnJitsiServer-config.js.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 482c"\ enabled: true," /etc/jitsi/meet/$FqdnJitsiServer-config.js sed -i -e 489c"\ ]," /etc/jitsi/meet/$FqdnJitsiServer-config.js service jitsi-videobridge2 restart
Die Entwickler haben in der Konfiguration (/etc/jitsi/meet/meet.wydler.eu-config.js) von Jitsi Videobridge einen eigenen STUN Server hinterlegt. In vorherigen Versionen waren dort Server-Adressen von Google hinterlegt. Was natürlich gerade unter dem Aspekt der EU-Datenschutzgrundverordnung definitiv in Frage gestellt werden sollte.
Footer auf der Startseite ergänzen
Gerade in Deutschland ist der Verweis auf die Datenschutzerklärung als auch Impressum eine Pflichtkür. Die verwendete Version der Software bietet leider keine Möglichkeit benutzerdefinierte Text/Links im Footer unterzubringen. Es geht unter der Wendung der DEB Pakete nur über einen Umweg (/usr/share/jitsi-meet/static/welcomePageAdditionalContent.html).
cp /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html.$(date '+%Y-%m-%d_%H-%M-%S') cat << EOF > /usr/share/jitsi-meet/static/welcomePageAdditionalContent.html <template id = "welcome-page-additional-content-template"> <!-- 22.03.2020, 13:17 Uhr / Wydler https://community.jitsi.org/t/welcome-page-additional-content/17144/5 --> <!-- CSS Start --> <style> .welcome-page-content { display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between; position: relative; z-index: 1; /*margin-top: 35px;*/ width: 100% } .welcome-page-content .welcome-footer { color: #FFF; display: flex; padding-bottom: 20px; padding-top: 20px; width: 100%; z-index: 1 } .welcome-page-content .welcome-footer-content a { color: #fff !important; text-decoration: underline } .welcome-page-content .welcome-footer-content { display: flex; justify-content: center; width: 100%; z-index: 2 } .welcome-page-content .welcome-footer-about { display: flex; flex-direction: column; flex: 1; font-size: 14px; line-height: 20px; text-align: center; justify-content: center } .welcome-page-content .welcome-footer-about:last-child { margin-left: 4px } .welcome-page-content .welcome-footer-about .welcome-footer-main { color: #B02323; font-weight: bold; font-size: 120%; animation: blinker 4s step-start infinite; } @keyframes blinker { 50% { opacity: 0; } } </style> <!-- CSS Ende --> <!-- HTML Anfang --> <div class="welcome-page-content"> <div class="welcome-footer"> <div class="welcome-footer-content"> <div class="welcome-footer-about"> <div class="welcome-footer-main"> Am 25.04.2020 finden von 12:00 bis 12:30 Uhr Wartungsarbeiten statt. </div> <div> <a href="https://play.google.com/store/apps/details?id=org.jitsi.meet" rel="noopener" target="_blank">Google Play</a> | <a href="https://apps.apple.com/de/app/jitsi-meet/id1165103905" rel="noopener" target="_blank">Apple Appstore</a> | <a href="https://www.domain.de/datenschutz/" rel="noopener" target="_blank">Datenschutzerklärung</a> | <a href="https://www.domain.de/impressum/" rel="noopener" target="_blank">Impressum</a> </div> </div> </div> </div> </div> <!-- HTML Ende --> </template> EOF
Anschließend muss Jitsi Meet noch mitgeteilt werden, dass die Datei eingebunden werden soll.
cp /usr/share/jitsi-meet/interface_config.js /usr/share/jitsi-meet/interface_config.js.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 96c"\ DISPLAY_WELCOME_FOOTER: false," /usr/share/jitsi-meet/interface_config.js sed -i -e 98c"\ DISPLAY_WELCOME_PAGE_CONTENT: true," /usr/share/jitsi-meet/interface_config.js
Das Ergebnis als Screenshot.
Neben den Pflichtangaben habe ich z.B. noch die Links zu dem App bei Apple und Google verlinkt. Es bietet sich natürlich auch an ein FAQ oder eine Kurzanleitung zu verlinken. Damit auch nicht affine Personen nach wenigen Minuten startklar sind.
Diverse Anpassungen
Das Favicon der Webseite ist direkt im Verzeichnis „/usr/share/jitsi-meet/images/“ zu finden. Ich habe das neue Favicon via SCP auf von meinem Rechner auf dem Server kopiert. Danach mit dem „mv“ die Originaldatei umbenannt und mit demselben Befehl die neue Datei in das Zielverzeichnis verschoben.
Das Logo links oben kann über die Konfigurationsdatei ausgeblendet werden. Diese heißt „interface_config.js“ und liegt im Verzeichnis „/usr/share/jitsi-meet“. Dazu folgende Befehle ausführen:
cp /usr/share/jitsi-meet/interface_config.js /usr/share/jitsi-meet/interface_config.js.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 195c"\ SHOW_JITSI_WATERMARK: false," /usr/share/jitsi-meet/interface_config.js
Aktuell gibt es wohl einen Bug. Es reicht leider nicht aus, die beiden Parameter auf false zu setzen. Daher passe ich den Dateinamen des Logos an, der nicht existiert.
sed -i -e 56c"\ DEFAULT_LOGO_URL: 'images/watermark.svg.disable'," /usr/share/jitsi-meet/interface_config.js sed -i -e 58c"\ DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg.disable'," /usr/share/jitsi-meet/interface_config.js
Der Titel im Browserfenster ist standardmäßig Jitsi Meet. Das ist natürlich gerade bei Unternehmen/Behörden ein Wunsch, dem Service einen eigenen Namen zugeben.
cp /usr/share/jitsi-meet/interface_config.js /usr/share/jitsi-meet/interface_config.js.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 12c"\ APP_NAME: 'Webconference Wydler'," /usr/share/jitsi-meet/interface_config.js sed -i -e 158c"\ NATIVE_APP_NAME: 'Webconference Wydler'," /usr/share/jitsi-meet/interface_config.js
Wer möchte kann erzwingen, dass jeder Teilnehmer beim Betreten eines Raums einen Namen eingeben muss. Somit hat man in der Regel schnell ein Überblick, wer schon da ist und wer wer ist. Standardmäßig heißen die Teilnehmer „Fellow Jitster“.
cp /etc/jitsi/meet/$FqdnJitsiServer-config.js /etc/jitsi/meet/$FqdnJitsiServer-config.js.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 354c"\ requireDisplayName: true," /etc/jitsi/meet/$FqdnJitsiServer-config.js cp /usr/share/jitsi-meet/interface_config.js /usr/share/jitsi-meet/interface_config.js.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 55c"\ DEFAULT_LOCAL_DISPLAY_NAME: \'Ich\'," /usr/share/jitsi-meet/interface_config.js sed -i -e 57c"\ DEFAULT_REMOTE_DISPLAY_NAME: \'Unbekannt\'," /usr/share/jitsi-meet/interface_config.js
Falls es noch ein bisschen Datenschutz sein darf, so können inzwischen auch Verbindungen zu anderen Servern (z.B. Abruf von Avatars u.ä. unterbunden werden.
cp /etc/jitsi/meet/$FqdnJitsiServer-config.js /etc/jitsi/meet/$FqdnJitsiServer-config.js.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 469c"\ disableThirdPartyRequests: true," /etc/jitsi/meet/$FqdnJitsiServer-config.js
Beim betreten der Konferenz Ton und Bild standardmäßig deaktivieren.
cp /etc/jitsi/meet/$FqdnJitsiServer-config.js /etc/jitsi/meet/$FqdnJitsiServer-config.js.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 114c"\ startWithAudioMuted: true," /etc/jitsi/meet/$FqdnJitsiServer-config.js sed -i -e 165c"\ startWithVideoMuted: true," /etc/jitsi/meet/$FqdnJitsiServer-config.js
Jitsi Meet nutzt standardmäßig keine Cookies. Allerdings gibt es einen lokalen Speicher für die Anzeige des Verlaufs der Konferenzen auf dem Client. Diese Option kann in inzwischen ebenfalls standardmäßig deaktiviert weden.
cp /etc/jitsi/meet/$FqdnJitsiServer-config.js /etc/jitsi/meet/$FqdnJitsiServer-config.js.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 639c"\ doNotStoreRoom: true," /etc/jitsi/meet/$FqdnJitsiServer-config.js
Der Titel und Subtitel auf der Startseite können ebenfalls angepasst werden.
cp /usr/share/jitsi-meet/lang/main-de.json /usr/share/jitsi-meet/lang/main-de.json.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 914c"\ \"title\": \"Sichere, voll funktionale und komplett kostenlose Videokonferenzen\"," /usr/share/jitsi-meet/lang/main-de.json sed -i -e 915i"\ \"headerTitle\": \"Webconference Wydler\"," /usr/share/jitsi-meet/lang/main-de.json sed -i -e 916i"\ \"headerSubtitle\": \"Sichere, funktionale und datenschutzfreundliche Videokonferenzen\"" /usr/share/jitsi-meet/lang/main-de.json
Einstellungen deaktivieren
Standardmäßig sind im jedem Raum eine Fülle von Funktionen nutzbar.
Die einzelnen Funktionen können selbstverständlich einzeln deaktiviert werden. Die dazu passenden Parameter findet man in der Datei /usr/share/jitsi-meet/interface_config.js, ab Zeile 204.
Name | Parameter |
Vollbildmodus | fullscreen |
Livestream starten | livestreaming |
Aufnahme starten | recording |
YouTube-Video teilen | sharedvideo |
Sprecherstatistik | stats |
Konferenz einbetten | embedmeeting |
Tasenkürzel anzeigen | shortcuts |
Firewall
Last but not Least kommen wir nochmals auf den Punkt Sicherheit zurück. Selbstverständlich darf die Grundkonfiguration einer Firewall grundsätzlich nicht fehlen. Ich greife ich hier auf UFW zurück. Diese ist inzwischen standardmäßig bei der eingesetzten Distribution und Version standardmäßig dabei.
ufw allow ssh ufw allow http ufw allow https ufw allow in 10000/udp echo y | ufw enable ufw status
Damit ist das System für einen produktiven Einsatz gerüstet. 🙂
Apps für Smartphone/Tablet
Selbstverständlich steht eine App sowohl für Apple als auch Google im jeweiligen Store kostenlos zur Verfügung.
Anpassung von systemd
Standardbereitstellungen auf Systemen, die systemd verwenden, haben niedrige Standardwerte für maximale Prozesse und geöffnete Dateien. Wenn die verwendete Bridge eine höhere Teilnehmerzahl erwartet, müssen die Standardwerte angepasst werden.
Die Werte können in der Datei /etc/systemd/system.conf angepasst werden.
cp /etc/systemd/system.conf /etc/systemd/system.conf.$(date '+%Y-%m-%d_%H-%M-%S') sed -i 's/#DefaultLimitNOFILE=1024:524288/DefaultLimitNOFILE=65000/g' /etc/systemd/system.conf sed -i 's/#DefaultLimitNPROC=/DefaultLimitNPROC=65000/g' /etc/systemd/system.conf sed -i 's/#DefaultTasksMax=/DefaultTasksMax=65000/g' /etc/systemd/system.conf systemctl daemon-reload systemctl restart jitsi-videobridge2 systemctl show --property DefaultLimitNPROC systemctl show --property DefaultLimitNOFILE systemctl show --property DefaultTasksMax
Natürlich muss die Änderung auch geprüft werden, ob diese angewendet werden.
cat /proc/`cat /var/run/jitsi-videobridge/jitsi-videobridge.pid`/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 65000 65000 processes Max open files 65000 65000 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 7621 7621 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us
Nach dem Neustart der Jitsi Videobridge sind maximal 65.000 Tasks möglich.
systemctl status jitsi-videobridge2 ● jitsi-videobridge2.service - Jitsi Videobridge Loaded: loaded (/lib/systemd/system/jitsi-videobridge2.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-12-27 14:11:15 CET; 1min 50s ago Process: 14699 ExecStartPost=/bin/bash -c echo $MAINPID > /var/run/jitsi-videobridge/jitsi-videobridge.pid (code=exited, status=0/SUCCESS) Main PID: 14698 (java) Tasks: 48 (limit: 65000) Memory: 149.4M CGroup: /system.slice/jitsi-videobridge2.service └─14698 java -Xmx3072m -XX:+UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Djdk.tls.ephemeralDHKeySize=2048 -Dconfig.file=/etc/jitsi/videobridge/jvb.conf -Dnet.java.sip.communicator.SC_HOME_DIR_LO> Dec 27 14:11:15 meet systemd[1]: Starting Jitsi Videobridge... Dec 27 14:11:15 meet systemd[1]: Started Jitsi Videobridge.
Konferenzräume absichern
Standardmäßig kann nach der Installation und Konfiguration von Jitsi Meet jeder Besucher/Gast einen Konferenzraum starten. Das ist gerade auf der Hinsicht der Moderationsrechte mit mehreren Teilnehmer oft problematisch. Denn der erste Teilnehmern im Konferenzraum erhält automatisch nit notwendigen Rechte, wenn weitere Teilnehmer denselben Raum betreten. Des Weiteren ist durch die freie Nutzung auch schnell eine rege Überlastung durch Dritte möglich, die primär nicht für die Nutzung des Systems vorgesehen sind und waren.
Aus diesem Grund gibt es eine Funktion mit den Namen „Secure Domain„, mit der eine freie Nutzung unterbunden wird. Nach Aktivierung können Konferenzräume ausschließlich mit Benutzernamen und Passwort erstellt werden. Folgende Änderungen sind für die Nutzung der Funktion notwendig.
Anpassung von prosody.
cp /etc/prosody/conf.avail/$FqdnJitsiServer.cfg.lua /etc/prosody/conf.avail/$FqdnJitsiServer.cfg.lua.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 25c"\ -- authentication = \"anonymous\"" /etc/prosody/conf.avail/$FqdnJitsiServer.cfg.lua sed -i -e 26i"\ authentication = \"internal_hashed\"" /etc/prosody/conf.avail/$FqdnJitsiServer.cfg.lua sed -i -e 82i"\ authentication = \"internal_hashed\"" /etc/prosody/conf.avail/$FqdnJitsiServer.cfg.lua cat << EOF >> /etc/prosody/conf.avail/$FqdnJitsiServer.cfg.lua VirtualHost "guest.$FqdnJitsiServer" modules_enabled = { "bosh"; "pubsub"; "ping"; -- Enable mod_ping "speakerstats"; "turncredentials"; "conference_duration"; "muc_lobby_rooms"; } authentication = "anonymous" c2s_require_encryption = false EOF
Anpassung von jicofo.
cp /etc/jitsi/jicofo/sip-communicator.properties /etc/jitsi/jicofo/sip-communicator.properties.$(date '+%Y-%m-%d_%H-%M-%S') cat << EOF >> /etc/jitsi/jicofo/sip-communicator.properties org.jitsi.jicofo.auth.URL=XMPP:$FqdnJitsiServer EOF
Anpassung von Jtisi Meet.
cp /etc/jitsi/meet/$FqdnJitsiServer-config.js /etc/jitsi/meet/$FqdnJitsiServer-config.js.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 12c"\ anonymousdomain: 'guest.$FqdnJitsiServer'," /etc/jitsi/meet/$FqdnJitsiServer-config.js
Abschlißend alle beteiltigen Dienste neu starten.
service prosody restart service jicofo restart service jitsi-videobridge2 restart
Versucht man danach einen Konferenzraum anzulegen, erhält die Person folgenden Hinweis.
Wer einen Benutzernamen und ein Passwort hat, klickt auf „Ich bin der Organisator“. Es erscheint folgender Dialog:
Sind die Zugangsdaten korrekt, wird der Konferenzraum gestartet. Andere Teilnehmer sehen weiterhin den ersten Dialog bis eine Berechtige Person den Raum gestartet hat. Ist da der Fall, werden alle warteten Teilnehmer automatisch in den Raum aufgenommen.
Die Benutzerverwaltung kann bisher ausschließlich über die Konsole bzw. SSH erfolgen. Für die Verwaltung der Benutzerkonten habe ich zwei kl. Skripte geschrieben. Zum Einem um die Tipparbeit zu sparen. Zum anderen sollen Zufallspasswörter erstellt werden.
Benutzer anlegen
cat << EOF > /root/jitsi-meet-benutzer-anlegen.sh #!/bin/bash # Überprüfe, ob ein Argument übergeben wurde if [ $# -eq 0 ] then echo "Kein Benutzername übergeben!" exit 1; fi username=\$1 password=$(openssl rand -hex 5) prosodyctl register $username $FqdnJitsiServer $password echo "Benutzername: $username" echo "Passwort: $password" EOF
chmod 700 /root/jitsi-meet-benutzer-anlegen.sh
Als einzigster Übergabeparameter wird ein Benutzernamen erwartet. Der DNS-Namen für Jitsi wird über die Variable $FqdnJitsiServer automatisch übernommen.
root@meet:~# /root/jitsi-meet-benutzer-anlegen.sh test1 Benutzername: test1 Passwort: 4758388e1e root@meet:~#
Die Zugangsdaten sind sofort aktiv und könne genutzt werden.
Benutzer löschen
cat << EOF > /root/jitsi-meet-benutzer-loeschen.sh #!/bin/bash # Überprüfe, ob ein Argument übergeben wurde if [ $# -eq 0 ] then echo "Kein Benutzername übergeben!" exit 1; fi username=\$1 prosodyctl unregister $username $FqdnJitsiServer EOF
chmod 700 /root/jitsi-meet-benutzer-loeschen.sh
Als einzigster Übergabeparameter wird ein Benutzernamen erwartet. Der DNS-Namen für Jitsi wird über die Variable $FqdnJitsiServer automatisch übernommen.
root@meet:~# /root/jitsi-meet-benutzer-loeschen.sh test1 root@meet:~#
Wird keine Fehlermeldung ausgegeben, wurde der Benutzer erfolgreich gelöscht.
IPv6 Problematik
Für die Deaktivierung von IPv6 muss man den Namen der Netzwerkkarte(n) wissen.
ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 96:00:00:48:3b:ec brd ff:ff:ff:ff:ff:ff
Den Namen der Netzwerkkarte in Zeile 9 auf eth0 ändern und anschließend via Copy & Paste ausführen:
cp /etc/sysctl.conf /etc/sysctl.conf.$(date '+%Y-%m-%d_%H-%M-%S') cat << EOF >> /etc/sysctl.conf # Jitsi Meet - Bug - IPv4 Address on udp6 protocol net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 1 EOF
Abschließend die Änderungen neu laden:
sysctl -p
Teilnehmer sehen sich nicht
Wenn Smartphones/Tablets mit älteren Betriebssystemen (z.B. Android 7) zum Einsatz kommen, haben mich verschiedene Meldungen erreicht, dass die Teilnehmer zwar den selben Raum betreten, aber dort alleine sind. Nach diversen Tests mit Unterstützung von Dritten und betroffenen, meien ich eine Lösung dafür gefunden zu haben. Abhilfe schafft die Aktivierung von TLS 1.0 und TLS 1.1 in der Konfiguration vom Webserver Nginx für Jitsi Meet.
cp /etc/nginx/sites-available/$FqdnJitsiServer.conf /etc/nginx/sites-available/$FqdnJitsiServer.conf.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 25c"\ ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;" /etc/nginx/sites-available/$FqdnJitsiServer.conf service nginx configtest service nginx reload
Statistik mit Hilfe von Grafana
Der nachstehende Abschnitt ist auf Basis des Artikels Jitsi Meet Statistik als Grafana Dashboard von Tobias Scheible entstanden. Grund dafür ist, dass man ein gutes Rat nicht neu erfinden muss. Ich habe die einzelnen Abschnitte an Ubuntu 20.04 LTS angepasst.
Aktivieren der Statistikfunktion in Jitsi Meet.
cp /etc/jitsi/videobridge/config /etc/jitsi/videobridge/config.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 16c"\JVB_OPTS=\"--apis=rest,xmpp\"" /etc/jitsi/videobridge/config
cp /etc/jitsi/videobridge/sip-communicator.properties /etc/jitsi/videobridge/sip-communicator.properties.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 3c"org.jitsi.videobridge.ENABLE_STATISTICS=true" /etc/jitsi/videobridge/sip-communicator.properties sed -i -e 4c"org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri" /etc/jitsi/videobridge/sip-communicator.properties service jitsi-videobridge2 restart
Installation von InfluxDB
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - source /etc/lsb-release echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list apt update && apt install influxdb -y systemctl enable --now influxdb systemctl status influxdb
Installation von Telegraf
apt install telegraf -y
Anpassung der Standardkonfiguration von Telegraf.
mv /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.original cat << EOF > /etc/telegraf/telegraf.conf # Global tags can be specified here in key="value" format. [global_tags] # Configuration for telegraf agent [agent] interval = "10s" debug = false hostname = "$FqdnJitsiServer" round_interval = true flush_interval = "10s" flush_jitter = "0s" collection_jitter = "0s" metric_batch_size = 1000 metric_buffer_limit = 10000 quiet = false logfile = "" omit_hostname = false EOF
Konfiguration für den Abruf der Daten von Jitsi Meet.
cat << EOF > /etc/telegraf/telegraf.d/jitsi.conf ############################################################################### # INPUTS # ############################################################################### [[inputs.http]] name_override = "jitsi_stats" urls = [ "http://localhost:8080/colibri/stats" ] data_format = "json" ############################################################################### # OUTPUTS # ############################################################################### [[outputs.influxdb]] urls = ["http://localhost:8086"] database = "jitsi" timeout = "0s" retention_policy = "" EOF
Konfiguration von Telegraf für die Abfrage von System Ressourcen.
cat << EOF > /etc/telegraf/telegraf.d/system.conf ############################################################################### # INPUTS # ############################################################################### [[inputs.cpu]] ## Whether to report per-cpu stats or not ## percpu = true ## Whether to report total system cpu stats or not totalcpu = true [[inputs.mem]] ############################################################################### # OUTPUTS # ############################################################################### [[outputs.influxdb]] urls = ["http://localhost:8086"] database = "jitsi" timeout = "0s" retention_policy = "" EOF
Telegraf Dienst aktivieren und starten.
systemctl enable --now telegraf systemctl status telegraf service telegraf restart
Installation von Grafana
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" apt update apt install grafana -y systemctl enable --now grafana-server systemctl status grafana-server service grafana-server restart
Anpassung der Konfiguration für Jitsi Meet (Let’s Encrypt, Berechtigungen, etc…).
cp /etc/grafana/grafana.ini /etc/grafana/grafana.ini.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 32c"protocol = https" /etc/grafana/grafana.ini sed -i -e 64c"cert_file = /etc/letsencrypt/live/$FqdnJitsiServer/cert.pem" /etc/grafana/grafana.ini sed -i -e 65c"cert_key = /etc/letsencrypt/live/$FqdnJitsiServer/privkey.pem" /etc/grafana/grafana.ini groupadd sslcerts usermod -G sslcerts -a grafana chown -R root:sslcerts /etc/letsencrypt/ chmod 750 /etc/letsencrypt/live/$FqdnJitsiServer chmod 640 /etc/letsencrypt/live/$FqdnJitsiServer/* chmod 755 /etc/letsencrypt/live chmod 755 /etc/letsencrypt/archive
Den Port 3000 in der Firewall freischalten.
ufw allow 3000/tcp
Anpassung der Konfiguration von Grafana für den Zugriff ohne Benutzerkonto.
cp /etc/grafana/grafana.ini /etc/grafana/grafana.ini.$(date '+%Y-%m-%d_%H-%M-%S') sed -i -e 336c"enabled = true" /etc/grafana/grafana.ini sed -i -e 339c"org_name = Gast" /etc/grafana/grafana.ini sed -i -e 343c"org_role = Viewer" /etc/grafana/grafana.ini sed -i -e 345c"hide_version = true" /etc/grafana/grafana.ini service grafana-server restart
Nun kann die Weboberfläche von Grafana über https://meet.wydler.eu:3000 aufgerufen werden.
Die Standardzugangsdaten lauten wie folgt: Email/username=admin, Password=admin.
Falls das Dashboard öffentlich zugänglich sein soll, muss dazu die passende Organisation erstellt werden. Dazu im Navigationsbereich (linke Seite) das Menü Server Admin -> Orgs anklicken.
Zuerst muss die Datenquelle, in diesen Fall InfluxDB Grafana bekannt gemacht werden. Dazu im Navigationsbereich (linke Seite) das Menü Configuration -> Data Sources auswählen.
Über New org kann eine neue Organisation angelegt werden.
Als Name der neue Organisation ist „Gast“. Diese haben ich mehr oder weniger bereits in der Konfiguration unter „Anpassung der Konfiguration von Grafana für den Zugriff ohne Benutzerkonto.“ bereits festgelegt.
Damit wird auch automatisch die Organisation gewechselt.
Nun können die eigentlichn Konfiguration erfolgen. Zuerst muss Grafana die Datenquelle, in diesen Fall InfluxDB bekannt gemacht werden. Dazu auf in der Navigation Configuration -> Data Sources klicken.
Danach kann das Dashboard erstellt und konfiguiert werden. Dazu links im Navigationsbereich Dashboards -> Manage anklicken.
Auf Basis von Tobias Scheible ist meine Vorlage für das Dashboard enstanden. Ich habe ein paar kleine Änderungen vorgenommen, damit Prozessor und Arbeitsspeicher Auslastung ausgelesen wird: >> Download <<. Diese herunterladen und auf dem Rechner zwischenspeichern.
Die JSON Datei muss anschließend in Grafana über die markierte Schaltfläche wieder hochgeladen werden.
Optional kann nun noch der Name das Dashboards sowie Speicherort (=Folder) geändert werden. Abschließend wird mit „Import“ das neue Dashboard angelegt.
Fertig.
Die ein oder andere Anpassung werde ich sicherlich noch nachreichen.Weitere Ideen/Verbesserungsvorschläge sind natürlich gerne gesehen. Das Ganze soll mit der Zeit wachsen.
Hallo Daniel, liebe Mitlesenden, heute mal eine Frage zum Thema eine Jitsi-Instanz unter 2 bzw. mehreren unterschiedlichen Domains. Hat damit jemand von Euch Erfahrung? Nach einigen Threads im Netz habe ich es hinbekommen, dass ich meine Jitsi-Instanz mit 2 unterschiedlichen Domains aufrufen kann, xx.server1.de und xx.server2.de.Nun das große ABER, über die erste Subdomain xx.server1.de funktioniert alles prima. Über die nachträglich hinzugefügte Subdomain xx.server2.de (eine Weiterleitung von einer anderen Adresse) kann ich meinen Jitsi-Server zwar aufrufen und komme auch in ein Meeting, auch ins selbe wie über xx.server1.de, dort funktioniert aber weder Kamera noch Mikro. Hat hier vielleicht jemand bereits Erfahrungen… Weiterlesen »
Hallo, gute Anleitung mit vielen Tipps. Meine Frage: Ich habe mir bei einem Anbieter einen Namen, sagen wir mal http://www.video_hallihallo.de angelegt und von dort auf meinen Linux-Jitisserver per DNS verwiesen bei einem anderen Anbieter. Klappt auch wunderbar. Nun möchte ich eine zusätzliche einfache statische html-Seite haben (z.B. Impressum), die auf dem gleichen Server wie jitis läuft und dann z. B. im Footer darauf verlinken. Ist es möglich, auf dem gleichen Server, auf dem jitsi installiert ist, eine statische html Seite anzulegen oder ist das Quatsch und ich muss mir noch einen eigenen dazugehörigen Webauftriitt zulegen auf einem zusätzlichen Server? Freue… Weiterlesen »
Hallo Stefan,
deine Anforderung lässt sich schnell und einfach umsetzen.
1) Lege die Datei impressum.html im Verzeichnis „/usr/share/jitsi-meet/static/“ ab.
2) Testaufruf im Browser: https://sub.domain.de/static/impressum.html
3) Neue Datei verlinken.
Grüße
Daniel
Hallo Daniel,
vielen Dank, genau das habe ich gesucht, funktioniert!
Grüße
Stefan
Ich habe auch die Probleme, dass die Nutzer in unterschiedlichen Netzen kein Video-Bild sehen. Man/Fraz kann den gleichen Raum betreten und die Sitzungen werden auch angezeigt, jedoch kein Bild übertragen. Sind sie im gleichen Netz, läuft die Videoübertragung. Den Hinweis auf TLSv1 und TLSv1.1 habe ich ausprobiert, jedoch ist das Problem nicht behoben. Kennt jemand eine Lösung?
Hallo Daniel,
ich habe meine Jitsi-Instanz anhand deiner Anleitung schnell aufsetzen können. Vielen Dank für die Anleitung! Kennst du folgendes Problem, seit kurzem passiert es, dass sich bei Einwahl eines dritten Teilnehmers die bereits vorhandenen Teilnehmer weder sehen noch hören können. Wenn einer dann wieder rausgeht, sehen und hören die beiden sich wieder. Was habe ich falsch konfiguriert? Kennt das Problem vielleicht jemand?
Wenn man nur zu zweit ist, bauen die Clients eine p2p Verbindung auf, sprich dein Server wird nur für das Interface benutzt. Erst ab 3 Personen gehen die Daten über deinen Server. Das ist normal, wenn du es nicht in der Config geändert hast. Ich vermute den Fehler bei dir in der ****-config.js
Ok, aber was soll dort verkehrt sein?
Hallo Frank,
nutzt die hinterlegten TURN Server der Standardkonfiguration oder einen Eigenen?
Gruß,
Daniel
Hallo Daniel,
die hinterlegten in der Standardkonfiguration.
LG Frank
Hallo Frank,
hast du die aktuelle Version von Jitsi Meet am Laufen? Falls dem nicht so ist, spiele diese ein.
Ansonsten ist für eine Fehlersuche interessant,
Gruß,
Daniel
Danke Daniel,
mittlerweile scheint es zu funktionieren…
Gruß
Frank
Vielen Vielen Dank für diese tolle Anleitung! Vor allem für die Anleitung zur Absicherung. Leider habe ich da ein kleines Problem mit. Wenn ich nach Ihrer Anleitung vorgehe und dann versuche einen Benutzer anzulegen kommt: /root/jitsi-meet-benutzer-anlegen.sh test1 /root/jitsi-meet-benutzer-anlegen.sh: line 9: syntax error near unexpected token (' /root/jitsi-meet-benutzer-anlegen.sh: line 9:password=\$(openssl rand -hex 5)' Vielleicht haben Sie da eine Idee? Und kann es sein das es im Code von Ihnen ein Tippfehler gibt? Überprüfe, ob ein Argument übergeben wurdeif [ \$# -eq 0 ] then echo "Kein Benutzername übergeben!" exit 1; fi username=\$1 password=\$(openssl rand -hex 5) Müsste es statt FI nicht… Weiterlesen »
Guten Abend Dennis,
auf Grund der Fehlermeldung kommt bei mir die Verdacht auf, dass du Skripte nicht mit meinem Codeblock 1:1 erzeugt hast, sondern die Datei manuelle mit einem Editor erstellt hast und anschließend den Inhalt 1:1 eingefügt hast. Das führt dazu, dass die Backlash „\“ vor den Variablen nicht übersetzt werden.
Das fi ist der Stelle genau richtig.Bei der Nutzung der Bash wird eine If/Else Abfrage so korrekt beendet. Details kannst du hier nachlesen.
Gruß,
Daniel
Gibt es eine einfache Möglichkeit (evtl. per GUI) die Anzahl aktiver Konferenzen, die der Teilnehmer, Traffic, CPU, RAM usw. zu monitoren?
Vielen Dank,
Arnold
Hallo Arnold,
ich habe auf Grund der regen Nachfrage den Abschnitt heute hinzugefügt. Hoffentlich ist es „einfach“ dokumentiert und verständlich.
Gruß,
Daniel
Vielen Dank für diese tolle Anleitung! Ich hätte noch eine Frage: Könnte man gleichzeitig Jitsi und einen Streaming-Server auf dem selben Host installieren, um eigene Videos zu zeigen? Zum Umlenken des Streams habe ich das hier gefunden: https://community.jitsi.org/t/stream-to-any-or-multiple-rtmp-destinations-record-simultaneously/51943 . Wäre sowas möglich oder braucht man da einen besonders leistungsfähigen Server?
Guten Abend Ulrich,
die Frage kann ich dir leider nicht beantworten.
Im dem von dir verlinkten Artikel steht folgender Satz:
if you prefer to have both jitsi & jibri running on the same machine, use this jitsi-jibri installer 87 script
Daher gehe ich davon aus, dass es möglich ist. Natürlich hängt das von deinen Gegebenheiten auch ab. Schließlich ist jede Jitsi Meet Instanz anders eingerichtet und konfiguriert. Kommt also auf eienn Versuch an. Zieh doch ein Testsystem bei Hetzer Cloud hoch und spiele dein Szenario durch.
Gruß,
Daniel
Vielen Dank für die super Anleitung. Habe Sie sogleich umgesetzt. Funktioniert einwandfrei, solange ich keine Secure Domain einsetze. Wenn die Änderung für die Secure Domain einfliessen lasse, bekomme ich bei Erstellung eines neuen Raumes die Credentials angezeigt und wenn ich die richtige angebe also username und passwort dann will er die einfach nicht nehmen und es kommt zu einer Schleife, indem ich immer wieder die Berechtigung eingeben soll. Ich komme nicht über „Warten auf Organisator“ hinaus.
Hat da jemand eine Idee
Hallo Patrick,
ich habe die Anleitung gerade nochmals in meiner Testumgebung durchgespielt. Secure Domain funktioniert problemlos.
Hast du den Benutzer für die Authentifizierung mit Hilfe des Scripts angelegt?
Gruß,
Daniel
Ja habe ich. Ich probiere es nochmal von vorne…
Bitte im Ordner /var/lib/prosody schauen ob der Ordner auth.deine-Domain.de vorhanden ist.
Nun einen neuen Ordner /deine-Domain.de anlegen
Jetzt noch den ordner accounts anlegen. /var/lib/prosody/deine-Domain.de/accounts wechseln und die Datei yxz.dat die dein Passwd enthält reinkopieren. im Abschluß noch chmod 777 /var/lib/prosody/deine-Domain.de auch unterordner und Datein.
Dann klappt es .
Vielen Dank für die tolle Anleitung! Hat alles exakt so funktioniert wie beschrieben! Lediglich der Schnee auf dieser Seite hat mich gestört, aber das liegt wohl an meinem inneren Grinch 😀
DlzG
Du kannst sowohl Jitsi Meet als auch Coturn auf einem Server betreiben. Voraussetzung dafür ist, dass du dafür zwei IPv4 Adressen hast. Auf jeweils eine IP-Adresse bindest du einen der beiden Dienste.
TOP
danke für die coole Anleitung .Habe es mit Ubuntu 20.04 installiert – funzt !
Würde gerne Additional_Content kopieren, es kommt aber nur unformatierter Schraddelkram rüber.
Gruß Peter Büttner
Hallo Peter,
vielen Dank für deinen Hinweis. Ich habe gerade erfolgreich den Inhalt aus der Codebox kopiert und über eine SSH-Sitzung ausgeführt. Der Code wird korrekt dargestellt. Versuch es einmal über die Funktion „Open code in new window“ der Codebox.
Gruß,
Daniel
[…] Anleitung von blog.wydler.eu […]
Hallo,
vielen Dank für die Anleitung. Wir haben schon einige Konferenzen abgehalten. Alles hat soweit funktioniert.
Ich hatte meine Seite durch einen Login auf dem Webserver geschützt. Jetzt wollte ich das weiter machen und nur das neu erstellen von Meetingräumen mit Usernamen und PW schützen.
Leider funktioniert dies nicht. Wenn ich prosody, jitsi-videobridge2 und nginx start ist alles in Ordnung mit dem Start.
Sobald ich aber jicofo starte oder neu starte wird die sip-communicator.properties gelöscht.
Ich gehe davon aus, das dadurch nicht zu einem Login aufgefordert wird.
Hatte jemand schon dieses Problem?
Bin für jede Hilfe dankbar.
Gruss
Thomas
Hallo Thomas,
nein, das Problem ist mir so noch nicht untergekommen.
Welches Betriebssystem setzt du ein?
Hast du Jitsi Meet und Co. via APT installiert oder manuell kompiliert?
Has du Funktionen wie Jigasi und/oder ähnliches installiert?
Gruß,
Daniel
Hallo, vielen Dank für die super Anleitung. Ich habe dabei aber noch ein Problem, nach dem ergänzen des Footers auf der Startseite zeigt mein Jitsi nur noch eine graue Webseite an. Was habe ich falsch gemacht. Ich muss zugeben, ich bin nicht der größte Ubuntuuser und auch Webadmin. Vielleicht ist es ja nur eine Kleinigkeit, die ich übersehen habe?
Vielen Dank für deine/eure Hilfe..
Frank
Hallo Frank,
das deutet darauf hin, dass der Inhalt der Datei welcomePageAdditionalContent.html unvollständig ist. Hast du den Inhalt 1:1 aus meinem Beitrag kopiert und über eine SSH Sitzung eingefügt oder bist du über den Webadmin gegangen. Bei letzterem ist es gut möglich, dass es zu Problemen mit dem Zeichensatz gekommen ist.
Gruß,
Daniel
Hallo Daniel,
sorry, dass ich mich so lange nicht gemeldet habe. Ich präzisiere das mal. Der Fehler mit der grauen Webseite taucht erst auf, wenn ich die Änderungen zur Anzeige des Titels im Browserfenster ändere. Sobald ich dort nach deiner Anleitung unter dem Punkt „Diverse Änderungen“ den Titel ändere, sehe ich meine Startseite nur noch grau. Vielleicht hast du ja einen Tipp, was ich falsch gemacht haben könnte. Ich habe lediglich den Titel innerhalb der “ geändert, ansonsten alles übernommen.
Vielen Dank nochmal und dies ist wirklich eine super Anleitung!!
Grüße,
Frank
Guten Abend Frank,
ich habe nun schon mehrere Instanzen aufgesetzt und keine Probleme feststellen können. Bitte prüfe einmal, ob das beschriebene Verhalten durch Löschen des Caches und dem privaten Modus beheben lässt. Tritt das Problem bei allen Browsern auf?
Gruß,
Daniel
Hallo Daniel,
ich hoffe, ich gehe dir nicht auf die Nerven! Ausschließen kann ich nicht, dass sich irgendwo ein Fehler eingeschlichen hat. Aber, eigentlich habe ich alles aus den Codeboxen kopiert. Mal eine Frage, ist es egal wo die Codezeilen in der interface_config.js stehen? Bei mir stehen sie unter dem Eintrag CONNECTION_INDICATOR_AUTO_HIDE_ENABLED: true,. Liegt da vielleicht ein Fehler?
Ansonsten danke ich dir sehr für deine Hilfe, ohne deine Anleitung hätte ich bisher keine Jitsi-Instanz zum Laufen gebracht.
Grüße,
Frank
Zur Antwort noch kurz, die Caches der Browser habe ich jeweils gelöscht. Getestet habe ich es mit Firefox, Chrome und Edge.
Hallo Frank,
ich habe bisher immer die zu bearbeitende Zeile gesucht und ersetzt.
Wie du sicherlich gemerkt hast, gehe ich bei meinem Skripten immer auf die Zeilennummer.
Wenn bei der nächsten Version von Jitsi der Parameter CONNECTION_INDICATOR_AUTO_HIDE_ENABLED nicht mehr in Zeile 34 sondern 78 steht, hast du die Variable zweimal in der Datei interface_config.js. Somit könne ich mir vorstellen, dass es Probleme gibt.
Daher versuche ich immer meine Artikel zeitnah an die neue Installationspakete anzupassen, damit dies nahe zu ausgeschlossen ist.
Gruß,
Daniel
Ich finde es sehr fragwürdig, wenn hier bei angeblichen Probleme mit IPv6 gleich wieder die „Brechstange“ rausgeholt wird und es vorsorglich systemweit deaktiviert wird. Erstens gibt es laut den verlinkten Quellen gar kein Problem (nur falsch interpretierte Anzeigen) und zweitens gibt es eigentlich immer Möglichkeiten, zu steuern, auf welchen Adressen die Videobridge oder andere Dienste horchen. Drittens und vielleicht am wichtigsten: Gerade bei Echtzeitanwendungen wie Videokonferenzen bietet IPv6 schon heute potentiell große Vorteile, denn das muntere herumgeNATte bei IPv4 geht deutlich auf Kosten der Performance. Schon vor Jahren konnte Facebook in Studien zeigen, dass durch den Einsatz von… Weiterlesen »
Moin, vielen dank für die gute Anleitung. Leider habe ich mit der Absicherung der Konferenzräume mittels Secure Domain keinen Erfolg. Ich habe die Anleitung eins zu eins so übernommen. Nachdem dem Starten der genannten Dienste wird die Jitsi Meet Seite nicht mehr angezeigt. Ich erhalte keine Fehlermeldung, lediglich eine graue Webseite. Irgendwie ist die Seite zwar da (Favicon, Webadresse wird angezeigt), aber ohne Inhalt.
Wo könnte das Problem sein, wo müßte ich nachjustieren? Jitsi Meet läuft ohne diese Anpassungen unter Ubuntu 18.04.4 ansonsten problemlos.
Hallo Klaus,
ich habe meine Konfiguration nochmals erfolgreich getestet, um ein Fehler meinerseits auszuschließen.
Wenn du die Konfigurationsanpassungen für Secure Domain wieder rückgängig machst, funktioniert deine Instanz wieder?
Es kann aus meiner Sicht nur ein Fehler bezüglich der DNS-Namen in der Konfiguration eingeschlichen haben. So dass eine Kommunikation nicht mehr möglich ist.
das Benutzer-anlegen-Skript gibt aus:
./benutzer-anlegen.sh: line 3: [: $#: integer expression expected
./benutzer-anlegen.sh: line 9: syntax error near unexpected token
('
password=\$(openssl rand -hex 5)‘./benutzer-anlegen.sh: line 9:
Habe den Quellcode kopiert und eingefügt. Wo liegt das Problem???
Hallo Werner, hast du vor dem Anlegen der Skripte den Befehl „export FqdnJitsiServer=meet.wydler.eu“ angepasst und ausgeführt? Ich habe gerade beide Skripte nochmals mit dem Code Schnipsel angelegt und erfolgreich ausgeführt. Gruß Daniel
>> Es sei an der Stelle erwähnt, dass die Passwörter leider im Klartext auf dem Server abgespeichert werden. Ich hoffe die Entwickler ändern dies in den kommenden Wochen noch entsprechend ab.
Das geht auch anders. Einfach internal_plain in internal_hashed ändern (2x in der Konfigurationsdatei vorhanden). Wenn es zu Problemen kommt, müssen evtl. die Benutzerpasswörter erneut erstellt werden, damit sie korrekt gehashed werden. Bei mir konnte sich der User focus nach der Änderung (weiter unten in der Konfigurationsdatei) nicht mehr mit der Videobridge verbinden, nachdem ich die Änderung vorgenommen hatte.
Vielen Dank für den Hinweis. Ich habe mich auf die Doku von Jitsi verlassen. 🙁 Ich habe den Artikel dahingehend angepasst.
Wurde für den User focus das Passwort nach der Änderung gehashed und dann auch hashed hinterlegt?
Laut Doku erfolgt die Umwandlung von Plain in Hash automatisch.
Hallo,
eine weitere sehr schöne Anleitung. Allerdings habe ich ein Problem mit der Absicherung der Räume. Die Konfiguration ist wie hier angegeben.
Haben Sie danach mal versucht mit der Android-App auf den Server zuzugreifen? Nachdem der Organisator einen Raum erstellt hat, kann ich mit dem Browser ohne Probleme als Gast hinzukommen, Mit der Android-App (von f-droid.org) muss ich mich allerdings mit den Organisator-Credentials anmelden und kann nicht als Gast dazustoßen. Können Sie das nachvollziehen?
Hallo Micha, a) Haben Sie danach mal versucht mit der Android-App auf den Server zuzugreifen? Nein, ich habe leider kein Gerät mit Android als Betriebssystem. b) Nachdem der Organisator einen Raum erstellt hat, kann ich mit dem Browser ohne Probleme als Gast hinzukommen, Das Verhalten ist in diesem Fall in Ordnung. Das Feature „Secure Domain“ sorgt dafür, dass nur berechtige Personen einen Raum anlegen können. Das bedeutet aber nicht, dass der Raum automatisch auch mit einem Passwort geschützt ist. Ein Passwort kann der Organisator nach erstellen eines Raums manuell (rechts unten) festlegen. c) Mit der Android-App (von f-droid.org) muss ich… Weiterlesen »
Hallo Daniel,
da Sie sicherlich nicht ganz ohne mobile Endgeräte leben werden, haben Sie sicherlich die adäquate aus dem Hause Apple. Tritt bei diesen und der Nutzung der iOS-App das von mir beschriebene Verhalten unter b) nicht auf?
Dass ein Raum mit Secure Domain noch nicht abgesichert ist, weiß ich. Dennoch Danke, dass Sie noch einmal explizi drauf hingewiesen haben.
Grüße Micha
Hallo Micha,
in der aktuellen Version der App für Apple Geräte (iPhone 6 mit iOS 13.4.1) erhalte ich ordnungsgemäß die Abfrage wie im Browser.
Gruß,
Daniel
Hallo Micha,
ich habe inzwischen den Nutzer eines Android Smartphones, der das von dir geschilderte Problem, ebenfalls hat. Bevor ich jetzt in die Analyse eintaucht, die Frage an dich: Bist du schon weiter gekommen?
Gruß,
Daniel
Hallo, besten Dank für die sehr schöne Anleitung. Ist bisher der ausführlichste Artikel zum Thema Sicherheit, den ich zu Jitsi-Meet gefunden habe.
Die sysctl-Werte waren für 4GB Ram ausgelegt. Da mein Vserver über 2GB Ram verfügt, nehme ich an, es würde Sinn machen, sämtliche Werte auf die Hälfte zu reduzieren?
Hallo Fred, natürlich macht es Sinn. Was nicht da ist, kann auch nicht vergeben werden. Gruß
Followed your guide. Server on internal network. Alsi accessed from there.
But every (about) 20 seconds i got „You have been disconnected“.
Any hints ?
Some Idees:
– Do not use ip address, use a dns name
– Do you see warning or error in the developement tools of the browser (F12 -> Console)
[…] Fall soll der TURN-Server in Verbindung mit Jitsi Meet betrieben werden. Dazu habe ich bereits diesen Beitrag geschrieben, welcher als Basis für diesen Aritkel […]
Gute Anleitung! Vor allem mit den DSGVO Anpassungen an der Startseite. Eine Frage;
In der aktuellen Debian Installation wird ja bereits ein TURN Server mitgeliefert und konfiguriert, aber irgendwie nicht aktiviert, jedenfalls nicht für TCP. Gibt es eine Möglichkeit, diesen TURN Server auch für TCP ans Laufen zu bekommen, oder ist zwingend eine weitere Kiste nötig?
Hallo Holger, soweit ich weiß wird der TURN-Server über das Package jitsi-meet-turnserver installiert, konfiguiert und auch nutzbar. Schau am Besten in die Datei /etc/turnserver.conf. Dort müsstest du einen Parameter „tls-listening-port“ finden. Dies entspricht dem TCP Port. Ich trau der Konstellation (Jitsi Meet und TURN Server auf einem Server) nach wie vor nicht. Zum damligen Zeitpunkt wo ich mich damit intensiver beschäfigt habe, hat es nicht zuverlässig funktioniert. Es gibt/gab Überschneidungen und Probleme nit nginx, da dieser natürlich auch Port 443/tcp nutzt. Seitdem haben die Entwickler sicherlich die Problem beheben und Lösungen gefunden. Aber ich persönlich weiß gerne wie wo was… Weiterlesen »
Die Konfigurationsdatei für den mitgelieferten Turnserver (Coturn) liegt unter /etc/turnserver.conf Ich habe dort unter anderem die folgende Anpassung vorgenommen 1. die Zeile no-tcp auskommentiert: #no-tcp 2. den listening port geändert, da tatsächlich Jitsi-Meet nach einem Update nicht mehr auf dem Port 443 funktioniert hat und irgendwie mit nginx in die Quere gekommen ist: #listening-port=443 listening-port=4443 ^^Den Port auch in den anderen Config-Dateien verändern, ich meine in der prosody config und in der /jitsi/meet/mein-server-config.js. Ansonsten wird soweit ich weiß ein ganz normaler Coturn mitinstalliert, den man ohne Probleme nach der Anleitung von dw (mit meinen Änderungen) verwenden kann. Bei mir funktioniert… Weiterlesen »