Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:erweiterungen:jitsi]] 

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
anwenderwiki:erweiterungen:jitsi [2020/06/28 23:35] – [Installation] martin.resanwenderwiki:erweiterungen:jitsi [2020/06/28 23:49] (aktuell) – [Installation] martin.res
Zeile 1: Zeile 1:
 +{{tag> videokonferenz jitsi}}
  
 +====== Videokonferenzen mit Jitsi Meet ======
 +
 +  * Hersteller -> https://jitsi.org/ \\
 +  * Erläuterung der Anwendung, Schuleinsatz -> https://grundschullernportal.zum.de/wiki/Videokonferenzen_mit_Jitsi_Meet
 +  * Ausführliche Erläuterung der Anwendung -> https://ffmuc.net/wiki/doku.php?id=knb:meet
 +  * Erläuterung zur Anwendung und Technisches -> [[https://www.kuketz-blog.de/kurzanleitung-jitsi-meet-videokonferenz-per-browser-oder-app/]]
 +  * Installation und weitergehende Konfigurationen -> https://scheible.it/jitsi-meet-server-installation/
 +
 +<note>
 +  * funktioniert am besten mit Chrome, ein Firefox verringert die Qualität und Datenrate für alle Teilnehmer
 +  * für alle Betriebssysteme gibt es die jitsi-meet-electron App
 +  * das eigene Bild wird als "Spiegelbild" angezeigt
 +</note>
 +===== Freie Jitsi-Server im Internet =====
 +
 +  * Automatische Weiterleitung zu einen nicht-überlasteten Jitsi-Server -> [[https://jitsi.random-redirect.de|random-redirect]]
 +  * [[https://meet.golem.de/]]
 +  * [[https://meet.chaosdata.de/]]
 +  * [[https://www.kuketz-meet.de/]]
 +  * [[https://meet.linus-neumann.de/]]
 +  * [[https://jitsi.fem.tu-ilmenau.de/]]
 +  * [[https://jitsi.hamburg.freifunk.net/]]
 +===== Installation =====
 +
 +Testinstallation im Grünen Netz ohne Let's Encrypt siehe -> [[anwenderwiki:webapps:jitsi_in_gruen]]
 +==== Server ====
 +
 +Für eine eigene Jitsi-Installation nimmt man sinnvollerweise einen eigenen Server. Wir hatten keine Probleme mit einer virtuellen Maschine, bei hoher Last kann eine Installation auf der Hardware je nach installierten Zusatzmodulen eventuell Vorteile bringen.
 +
 +Als Betriebssystem funktioniert für eine Basisinstallation Ubuntu Server 18.04 LTS, das bringt aber eine recht alte Prosody-Version mit. Es gibt ein paar Zusatzfeatures wie eine Statistik über die Anzahl der Meetings und Teilnehmer, die dann nicht funktionieren. Möchte man solche Features nutzen, ist eine Prosody-Version ab 11 sinnvoll (man kann die z. B. für Ubuntu 18.04 aus dem [[https://prosody.im/download/package_repository|Prosody-Repossitory nachinstalliern]]).
 +
 +==== Firewall ====
 +
 +Wenn man den Server hinter eine Firewall betreibt, so muss man diverse TCP-Ports und einen großen Bereich UDP-Ports öffnen. Da auf unserem Server sowieso nur Jitsi läuft, betreiben wir ihn ohne vorgeschaltete Firewall (man sollte dann den SSH-Port umbiegen).\\
 +Die zu öffnenden Ports sind TCP/443 TCP/80 and UDP/10000.
 +
 +==== Installation ====
 + 
 +
 +
 +Die Installation besteht aus zwei Schritten, Jitsi + Let's-Encrypt. Bei der Installation sollte man gleich die endgültige Domain angeben. Wenn man die später ändern will, dann installiert man besser neu. Alle Befehle muss man als root (das ist die Bedeutung des "#" vor jeder Befehlszeile) oder mit sudo ausführen:
 +<code>
 +# wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
 +# sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
 +# apt update
 +# apt install jitsi-meet
 +</code>
 +Während der Installation „Zertifikat erstellen“ wählen. (... Generate ...)\\
 +Danach Let’s-Encrypt einrichten:
 +<code>
 +# cd /usr/share/jitsi-meet/scripts/
 +# ./install-letsencrypt-cert.sh
 +</code>
 +Siehe auch -> [[https://jitsi.org/downloads]]
 +
 +==== Probleme mit dem TCP-Harvester ====
 +
 +Wir hatten in der Standardkonfiguration das Problem, dass der Java-Prozess für die Videobridge völlig aus dem Ruder lief, auch ohne aktive Meetings. Dies äußerte sich in einer Prozessorlast am Anschlag. Meetings mit mehr als einer Handvoll Leuten waren nicht sinnvoll.
 +
 +Ich habe dann in der Datei ''/etc/jitsi/videobridge/sip-communicator.properties'' die folgende Option
 +gesetzt:
 +<code>
 +org.jitsi.videobridge.DISABLE_TCP_HARVESTER=true
 +</code>
 +Dies unterdrückt offenbar eine Kommunikation per TCP -- wir sehen keine offensichtlichen Konsequenzen (siehe [[https://github.com/jitsi/jitsi-videobridge/blob/master/doc/tcp.md]]).
 +
 +In manchen Posts habe ich auch die Empfehlung gefunden, stattdessen einen Port vorzugeben (''org.jitsi.videobridge.TCP_HARVESTER_PORT=4443''), habe das aber nicht getestet.
 +
 +
 +===== STUN-Server =====
 +
 +Ein STUN-Server (Simple Traversal of User Datagram Protocol [UDP] Through Network Address Translators) ermöglicht es NAT-Clients (z. B. Computer hinter einer Firewall), die Kommunikation mit anderen Konferenzteilnehmern außerhalb des lokalen Netzwerks aufzubauen. Die meisten STUN-Server arbeiten auf Port 3478. Jitsi verwendet WebRTC und benötigt dazu ggf. einen STUN-Server.
 +
 +Wenn man seinen Jitsi-Server datenschutzkonform betreiben möchte, dann sollte man die standardmäßig verwendeten Google-STUN-Server deaktivieren.
 +
 +Die werden in der Datei ''/etc/jitsi/meet/meine.domain.de-config.js'' konfiguriert. Hier kann man seinen eigenen STUN-Server eintragen (z.<html>&nbsp;</html>B. ein Coturn). Es gibt öffentliche STUN-Server, bei denen man aber vorher klären sollte, ob man die für seine Jitsi-Installation verwenden darf. Beispiele wären:
 +
 +  { urls: 'stun:stun.t-online.de:3478' }
 +oder
 +  { urls: 'stun:stun.1und1.de:3478' }
 +oder
 +  { urls: 'stun:stun.nextcloud.com:443' }
 +  
 +  
 +oder weitere öffentliche STUN-Server -> [[https://gist.github.com/mondain/b0ec1cf5f60ae726202e|public STUN List]]
 +
 +
 +===== LDAP-Anbindung =====
 +<note>Hier werden Konfigurationsdateien mit der Endung "lua" verwendet. Kommentare in diesen Dateien beginnen mit zwei Minus-Zeichen und werden benutzt um Zeilen zu deaktivieren.</note>
 +1. Zunächst muss man einige Prosody-Module nachinstallieren:
 +  # apt install prosody-modules
 +2. Nun aktiviert man man in der Datei ''/etc/prosody/conf.d/jitsi.meinedomain.de.cfg.lua'' die LDAP-Anmeldung:
 +<code>...
 +VirtualHost "jitsi.meinedomain.de" 
 +  -- authentication = "anonymous"
 +  authentication = "ldap2"
 +  ...
 +  c2s_require_encryption = false
 +  ...
 +</code>  
 +3. Datei ''/etc/prosody/prosody.cfg.lua'': Im allgemeinen Teil bei „Server wide settings“ fügt man folgende Option ein:
 +<code>
 +--------- Server wide settings ----------
 +consider_bosh_secure = true
 +...
 +</code>
 +Und weiter unten überprüft man (Achtung, genau hinschauen: es gibt auch c2s):
 +  s2s_secure_auth = false
 +4. Die Einstellungen für den LDAP-Server kommen in eine neue Datei ''/etc/prosody/conf.avail/ldap.cfg.lua''. Hier ein Beispiel für eine LMN 6.2. Als hostname kann auch eine IP eingetragen werden.
 +  authentication = 'ldap2'
 +  ldap = {
 +    hostname      = 'server.meine-schule.kfz.schule-bw.de:389',
 +    use_tls       = true,
 +    bind_dn       = 'uid=ldapbinddummy,ou=accounts,dc=meine-schule,dc=kfz,dc=schule-bw,dc=de',
 +    bind_password = 'geheimesPasswort',
 +    user = {
 +      basedn        = 'ou=accounts,dc=meine-schule,dc=kfz,dc=schule-bw,dc=de',
 +      filter        = '(objectClass=posixAccount)',
 +      usernamefield = 'uid',
 +      namefield     = 'cn',
 +    },
 +  }
 +
 +5. Config aktivieren:
 +  # cd /etc/prosody/conf.d/
 +  # ln -s ../conf.avail/ldap.cfg.lua
 +
 +6. Dienste neu starten:
 +  # service prosody restart
 +  # service jicofo restart
 +  # service jitsi-videobridge2 restart
 +
 +Wie man sieht, muss man über Port 389 (mit TLS) gehen, LDAPS über Port 636 fuinktioniert nicht. Den Port 389 muss man gegebenenfalls in der Firewall (IPFire/OPNsense) für den LMN-Server aufmachen. Der bind-user „ldapbinddummy“ ist ein Dummy-Account (z. B. ein Extraschüler).
 +
 +Als bind-user funktionierte bei uns leider nur der admin bei einer anderen **''use_tls''** Einstellung:
 +<code>
 +  ...
 +  use_tls      = false,
 +  bind_dn      = 'cn=admin,dc=meine-schule,dc=kfz,dc=schule-bw,dc=de',
 +  ...  
 +</code>
 +
 +Siehe auch -> [[https://booting-rpi.blogspot.com/2015/09/using-ldap-authentication-with-jitsi.html]]
 +
 +==== Tool zum Testen der LDAP-Verbindung ====
 +Zum Testen, ob die LDAP-Verbindung funktioniert kann man das Tool "ldapsearch" am Jitsi-Server verwenden:
 +  # apt-get install ldap-utils
 +  # ldapsearch -x -H ldap://server.meine-schule.de:389 -b "dc=meine-schule,dc=kfz,dc=schule-bw,dc=de"
 +Beim voranstehendem Befehl sollte eine Liste aller LDAP-Einträge des Servers (bei uns ca. 1500) ausgegeben werden. Wenn man nur den Eintrag z.B. vom "mueller" möchte:
 +
 +  # ldapsearch -x -H ldap://server.meine-schule.de:389 -b "dc=meine-schule,dc=kfz,dc=schule-bw,dc=de" "uid=mueller"
 +
 +Um den bind-user zu testen:
 +  # ldapsearch -x -H ldap://server.meine-schule.de:389 -b "dc=meine-schule,dc=kfz,dc=schule-bw,dc=de" -D "cn=admin,dc=meine-schule,dc=kfz,dc=schule-bw,dc=de" -W "uid=mueller"
 +  
 +==== Zugriff auf Jitsi nur Lehrer erlauben (LMN 6.2) ====
 +In der Datei **''/etc/prosody/conf.avail/ldap.cfg.lua''** einen Filter setzen, der nur die Gruppen-ID der Lehrer zulässt:
 +<code>
 +...
 +       filter        = '(&(objectClass=posixAccount)(gidNumber=10000))',
 +...
 +</code>
 +danach ausführen:
 +  # service prosody restart
 +Automatische Anpassung, z.B. in einem Cron - Job um ab 18:00 Uhr nur noch Lehrer zulassen:
 +  # sed -i 's/\s*filter\s*=.*/  filter = (\&(objectClass=posixAccount)(gidNumber=10000))/' /etc/prosody/conf.d/ldap.cfg.lua && service prosody restart
 +und wieder alle User zulassen:
 +  # sed -i 's/\s*filter\s*=.*/  filter = (objectClass=posixAccount)/' /etc/prosody/conf.d/ldap.cfg.lua && service prosody restart
 +
 +===== Moodle-Plugin =====
 +siehe -> [[https://moodle.org/plugins/mod_jitsi]]
 +
 +===== Startseite mit Begrüßungstext anpassen =====
 +
 +In der Datei **''/usr/share/jitsi-meet/lang/main-de.json''** sind die deutschen Textmeldungen von jitsi hinterlegt. Dort findet man auch die Begrüßungstexte der Startseite:
 +<code>
 +...
 +"welcomepage": {
 +    
 +    
 +    "appDescription": "Auf geht's! Starten Sie eine Videokonferenz mit dem ...
 +    
 +    "title": "Sichere, mit umfassenden Funktionen ...
 +}
 +</code>
 +Datei editieren um die Texte anzupassen. Da die Texte teils gecached werden, erscheinen die Änderungen nicht immer unmittelbar bei der Web-Site.
 +
 +===== Startseite mit Impressum - footer - header=====
 +siehe auch: -> [[https://www.kuketz-blog.de/jitsi-meet-server-einstellungen-fuer-einen-datenschutzfreundlichen-betrieb/]]
 +<note important>Chrome cachet die Inhalte so lang, so dass erst nach dem vollständigen Leeren des Cache (Aktualieren half nicht immer)  die unten aufgelisteten Änderungen sichtbar werden.</note>
 +<note important>Bei einem Update von Jitsi werden die Änderungen teilweise überschrieben - danach muss man sie wieder einpflegen!</note>
 +Die Datei ''**/usr/share/jitsi-meet/css/all.css**'' enthält die komplette css-Informationen. Sie ist leider exterm unübersichtlich, da alle Elemente in nur zwei riesig langen Zeilen stehen ohne jegliche Struktur - ist wohl für den Browser performanter! Ich habe die Datei mit sed umformatiert und Zeilenumbrüche eingefügt, dann wird sie etwas lesbarer:
 +<code>
 +# sed -i 's/}/}\n/g' /usr/share/jitsi-meet/css/all.css
 +</code>
 +
 +Am Ende der Datei ''**all.css**'' drei Zeilen hinzugefügt: 
 +<code>
 +...
 +.welcome .welcome-watermark{position:absolute;width:100%;height:auto}
 +#footer{position:static;margin-top:20px;margin-bottom:20px;font-size:14px}
 +#header{position:absolute;top:0;text-align:center;width:100%;margin-top:20px;margin-bottom:20px;font-size:14px}
 +</code>
 +und in ''**/usr/share/jitsi-meet/static/welcomePageAdditionalContent.html**'' hinzugefügt:
 +
 +<code>
 +...
 +<div id="footer">
 +   <center>Impressum ...... </center>
 +</div>
 +<div id="header">
 +   <center>Datenschutz: Es ist verboten die Konferenz mitzuschneiden!</center>
 +</div>
 +...
 +</code>
 +===== Weitere Anpassungen =====
 +=== a) Variablen in der Datei  "/usr/share/jitsi-meet/interface_config.js"===
 +Hier sollte auch gesetzt werden, dass der Android-App-Link auf die trackerfreie Version im F-Droid-Store verlinkt (für iOS gibt es eine solche nicht):
 +
 +
 +<code>
 +...
 +DEFAULT_REMOTE_DISPLAY_NAME: 'Schüler',
 +DEFAULT_LOCAL_DISPLAY_NAME: 'ich',
 +SHOW_JITSI_WATERMARK: true,
 +JITSI_WATERMARK_LINK: 'https://www.meineschule.de',
 +...
 +GENERATE_ROOMNAMES_ON_WELCOME_PAGE: false,
 +...
 +
 +/**
 +* Specify custom URL for downloading android mobile app.
 +*/
 +MOBILE_DOWNLOAD_LINK_ANDROID: 'https://f-droid.org/en/packages/org.jitsi.meet/'
 +
 +</code>
 +=== b) Watermark Datei ===
 +Das angezeigte Jitsi-Logo mit transparentem Hintergrund ist ''**/usr/share/jitsi-meet/images/watermark.png**''. Diese Datei kann mit einem eigenen Logo getauscht werden. Das Logo wird standardmäßig in einer Größe von 186x74 angezeigt. Ich habe die Datei ''**watermark.png**'' ausgetauscht und dann in der Datei ''**all.css**'' die Größenangabe geändert:
 +<code>
 +...
 +.watermark{position:absolute;top:15;width:186px;height:74px;...
 +...
 +</code>
 +
 +=== c) Browser Überprüfung ===
 +
 +Variable in der Datei **''/usr/share/jitsi-meet/interface_config.js''** setzen. Verwendet nun ein Teilnehmer einen dieser Browser, wird der Zugang mit einem Hinweis verweigert.
 +<code>
 +...
 +UNSUPPORTED_BROWSERS: ['firefox', 'safari', 'mozilla'],
 +...
 +</code>
 +
 +=== d) Video-Auflösung serverseitig reduzieren ===
 +In der Datei ''**/etc/jitsi/meet/jitsi.meineschule.de-config.js**'' die Auflösung von 720 auf z.B. 240 reduzieren, das genügt bei einer Videokonferenz mit mehreren Teilnehmern und somit kleinen Bildern.
 +<code>
 +...
 +   resolution: 240,
 +
 +   constraints: {
 +        video: {
 +            aspectRatio: 16 / 9,
 +            height: {
 +                ideal: 240,
 +                max: 240,
 +                min: 240
 +            }
 +        }
 +   },
 +...
 +</code>
 [[anwenderwiki:erweiterungen:jitsi]] anwenderwiki/erweiterungen/jitsi.txt · Zuletzt geändert: 2020/06/28 23:49 von martin.res