Jitsi Meet Docker Instanz anpassen

Im vorherigen Tutorial habe ich gezeigt, wie die adminForge Jitsi Meet Instanz via Docker/Docker-Compose aufgesetzt wurde.

Tutorial: Eigene Jitsi Meet Instanz installieren (Docker / Ubuntu / Nginx)
Was ist Jitsi Meet?: Videokonferenzen mit Jitsi Meet
Meeting starten: https://teamjoin.de

Nun möchte ich euch zeigen wie die Jitsi Meet Instanz von mir angepasst wurde. Die Docker Version von Jitsi Meet hat eine Besonderheit – der Config-Ordner ist flüchtig! Somit nutzen wir ein restart.sh und customize.sh Bash-Script.

Punkt 1: restart.sh Bash-Script

Zum Neustarten unserer Jitsi Meet Docker Instanz nutzen wir zukünftig dieses Bash-Script.

Punkt 2: customize.sh Bash-Script

Nun erstellen wir uns noch das Script welches Anpassungen vornimmt.

Was wurde angepasst/optimiert?

  • Watermark aus: Das jitsi.org Logo oben links verschwindet
  • Blur aus: Hintergrundverschwimmung funktioniert mehr schlecht als recht, der Menüpunkt wird ausgeblendet
  • Audio Levels: Die blauen Punkte wenn jemand spricht können hier deaktivert werden. Spart CPU-Power auf dem Client (optional wg. Usability)
  • Third Party Requests aus: Anfragen zu gravatar.com werden untersagt
  • Generated Room Names aus: Das Raumnamen Feld ist leer
  • Own STUN Server: Die adminForge Server werden gesetzt
  • Auto Lang: Sprache wird automatisch nach Browsereinstellung erkannt, Standard ist „de“
  • Resolution, Constraints: Videoauflösung von 180p bis 720p möglich. Spart CPU-Power auf Server und Client
  • Channel: Die maximale Anzahl aktiver Videostreams. 8 Videostreams werden angezeigt, alles darüber hinaus wird eingefroren bis jemand spricht (optional wg. Usability)
  • Layer Suspension: Der Client (ab Chrome 69) sendet nur Streams die gerade angesehen werden. Normal sendet der Client simultan in mehreren Auflösungen. Spart Bandbreite, CPU-Power auf Server und Client und verbessert die Videoqualität
  • Recording: Abgeschaltet
  • Livestreaming: Abgeschaltet

[ Die Anpassungen sind aus Erfahrungswerten der adminForge Jitsi Meet Instanz entstanden. ]

Vergesst das setzen der Ausführungsrechte nicht.

Punkt 3: Neustart der Instanz

Jetzt kann die eigene Jitsi Meet Instanz mit den Anpassungen versehen werden.

Fertig! Die Instanz ist nun optimiert und angepasst.

Punkt 4: Updates

Da die Docker Images bei jedem Restart gelöscht werden und immer neue frische Jitsi Meet Images heruntergeladen werden, müsst ihr euch keine Sorgen um die Updates machen.

Ob es eine neuere Version gibt seht ihr auf der Docker Jitsi Meet GitHub Seite.

WICHTIG: Es ändert sich oftmals was an der docker-compose.yml und .env Datei. Bitte führt bei Problemen ein git pull durch um diese neuen Versionen zu erhalten!

Als nächstes: Eine zweite JVB zu Jitsi Meet hinzufügen (Docker)

Euer adminForge Team

UnterstützenDas Betreiben der Dienste, Webseite und Server machen wir gerne, kostet aber leider auch Geld.
Unterstütze unsere Arbeit mit einer Spende.
2

dominion

Linux Systemadministrator

Das könnte dich auch interessieren …

42 Antworten

  1. Tobias sagt:

    Ich finde bei eurer Jitsi Meet Installation den Button zur Grafana Statistik sehr schick. Könnt ihr vielleicht noch einen Blog-Artikel erstellen oder ergänzen wie das realisiert werden kann?

  2. c0by sagt:

    Danke, danke, danke, sau gutes HowTo. Ich warte dann noch auf die Grafana Statistik.

  3. cupchi sagt:

    Super Anleitung. Vielen Dank.

    Eine Frage habe ich aber. Das Verzeichnis .jitsi-meet-cfg bekommt nach docker-compose up user/group (root:root). Ist das so gewollt?. sed hat dann im Anschluss auf die Dateien keine Berechtigung. Oder muss restart.sh eh als root gestartet werden?

  4. MW sagt:

    Ich musste meinen Container noch explizit bennen (container_name: jitsi-meet_web_1) damit das Skript funktioniert

  5. Carsten sagt:

    Hallo

    ich finde den Ordner /usr/share/jitsi-meet/ nicht, um den Text auf der Startseite anzupassen. Was mache ich falsch? Ich habe den Ordner docker-jitsi-meet nicht unbenannt, aber es gibt auch keinen /usr/share/docker-jitsi-meet. Wo kann ich diese Änderung sonst vornehmen?

    LG // Carsten

    • Dominion sagt:

      Der Ordner zum anpassen ist im Container

      Mittels docker exec jitsi-meet_web_1 ls -lah /usr/share/jitsi-meet/ oder docker exec docker-jitsi-meet_web_1 ls -lah /usr/share/jitsi-meet/ solltest du den Ordnerinhalt sehen.
      Mit docker cp kannst du Dateien hin und her kopieren.

      • Daniel sagt:

        Erst einmal vielen Dank für diese Anleitung. Aber irgendwie steh ich vermutlich auf dem Schlauch. Könntest du an Hand eines Beispiels docker cp verdeutlichen? Spielt sich alles innerhalb des Containers ab, oder mounte ich ein lokales Volume unter /usr/share/jitsi-meet/? Dieser Pfad existiert bei mir derzeit noch nicht.
        Vielen Dank für Antworten.

        • Dominion sagt:

          Hallo Daniel,

          ja richtig es ist nichts gemountet, habe mich entschlosen die Docker COntainer als Wegwerfmaterial zu sehen, drum alles per „sed“.
          was möchtest du denn genau machen? Dann kann ich dir dazu den „docker cp“ Befehl als Beispiel geben.
          Besser wäre es das hier zu machen -> https://community.adminforge.de/

          Gruß
          Dominion

  6. karsten sagt:

    Hallo, tolle Seite. Ich verstehe nur nicht ganz, wieso in so einer Seite ein google script (translate) eingebettet sein muss. Es gibt andere translator, sogar bessere als google (deepl, systran).

    • Dominion sagt:

      Hallo Karsten,

      ja richtig, ist mir auch ein Dorn im Auge.
      Jedoch benötige ich eine automatische Übersetzung der Posts, da ich nicht jedes Tutorial in mehreren Sprachen verfassen möchte.
      Dazu muss es am besten noch ein WordPress Plugin sein.

      Für Empfehlungen ohne Google und Cookies wäre ich dankbar.

  7. Simon sagt:

    Hallo Dominion, du hast hier ein paar tolle Tutorials geschrieben, Danke.
    Nun habe ich aber eine Frage betreffend dem Jitsi-Customizing.
    Kann man das Logo auch durch ein eigenes ersetzen, so das es nicht bei jedem Neustart (wegen der Container) gelöscht wird?
    Vielen Dank und Gruss

  8. Gregor sagt:

    Hallo Dominion, vielen Dank für Deine tolle Arbeit. Das ist super hilfreich. Jetzt versuche ich Dein Skript gerade auf die Version stable-5142 los zu lassen und das frontend lädt danach nicht mehr. Hast Du da vielleicht bereits eine angepasste Version des Skripts? Sonst gehe ich mal selbst auf bug Suche.
    Danke nochmal und ich wäre auch sehr an der Grafana Sache interessiert.
    Gruß Gregor

    • Dominion sagt:

      Hallo Gregor,

      diese Version verwende ich auch. Das restart und customize Script funktioniert. Ich halte es im Tutorial immer aktuell mit meinem.
      Jitsi Meet startet bei mir und die Änderungen werden auch übernommen.

      Du müsstest auf Bug suche gehen.

      Gruß
      Dominion

  9. Jens sagt:

    Hallo,
    super anleitungen von dir! großes lob!!!

    ich habe aber nur ein kleines problem mit deinem customize.sh script. da kommen bei mir fehlermeldungen, weil einige dateien fehlen. wo bekomme ich die her bzw. wie lege ich die an?? bzw. mit welchem inhalt müssen die angelegt werden???

    hier meine fehlermeldungen:
    sed: .jitsi-meet-cfg/web/interface_config.js kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden
    sed: .jitsi-meet-cfg/web/interface_config.js kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden
    sed: .jitsi-meet-cfg/web/interface_config.js kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden
    sed: .jitsi-meet-cfg/web/config.js kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden
    sed: .jitsi-meet-cfg/web/interface_config.js kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden
    sed: .jitsi-meet-cfg/web/config.js kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden
    sed: .jitsi-meet-cfg/web/config.js kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden
    sed: .jitsi-meet-cfg/web/config.js kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden
    sed: .jitsi-meet-cfg/web/interface_config.js kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden
    sed: .jitsi-meet-cfg/web/config.js kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden
    sed: .jitsi-meet-cfg/web/config.js kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden
    sed: .jitsi-meet-cfg/jvb/logging.properties kann nicht gelesen werden: Datei oder Verzeichnis nicht gefunden

    DANKE für deine Hilfe!!!

    • Dominion sagt:

      Hallo Jens,

      hast du im ersten Tutorial den Pfad angepasst?
      In der .env: CONFIG=.jitsi-meet-cfg

      Gruß
      Dominion

      • Marcel sagt:

        Hallo,

        ich habe leider das selbe Problem. Der Pfad ist angepasst.

        sed: can’t read .jitsi-meet-cfg/web/interface_config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/interface_config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/interface_config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/interface_config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/interface_config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/interface_config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/config.js: No such file or directory
        grep: .jitsi-meet-cfg/web/config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/config.js: No such file or directory
        sed: can’t read .jitsi-meet-cfg/web/config.js: No such file or directory
        jitsi-meet-jvb-1

  10. Cap. Spock sagt:

    Hallo,
    Danke für die tolle Anleitung. Mein heutiges ./restart.sh hat zur Folge, dass im Chatraum permanent die Meldung „Ihre Verbindung ist getrennt worden“ erscheint. Ist Ihnen dieses Problem bekannt? Auch ein mehrfaches neu installieren hat leider keinen Erfolg.
    Mit freundlichen Grüßen Cap. Spock

    • Dominion sagt:

      Hi,

      das liegt an der neuen Version und der neuen docker-compose.yml Datei. Dort ist an ein paar Stellen PUBLIC_URL hinzugekommen.
      Bitte aktualisiere die docker-compose.yml indem du git pull durchführst.

      Danach sollte die Verbindung wieder möglich sein.
      Gruß
      Dominion

      • Cap. Spock sagt:

        Hallo Dominion,
        „git pull“ antwortet mit „Bereits aktuell.“. Ich hatte die kompletten Dockerimages und alle Configdateien gelöscht. Leider ohne Erfolg. Gruß Cap. Spock

        • Dominion sagt:

          Hi,

          hast du PUBLIC_URL= gesetzt? Dies ist wichtig für die neue Websocket Methode.
          Anonsten bitte in F12 > Console schauen welche Fehler kommen und in unserem Chatraum melden.

          Gruß
          Dominion

  11. MEde sagt:

    Ich hatte dasselbe Problem, ich benutze jitsi hinter einen nginx reverse Proxy handling ssl and certs.
    I had to add one line to my .env-File: „I added ENABLE_XMPP_WEBSOCKET=0 to my .env file.“
    As described here: https://github.com/jitsi/docker-jitsi-meet/issues/869

    • Cap. Spock sagt:

      @MEde, VIELEN DANK das hat geholfen. @Dominion VIELEN DANK auch an dich für deine Hilfe.

    • Cap. Spock sagt:

      Ich habe noch eine Frage:
      Lässt sich, auf dem Smartphone im Browser, das Angebot für die Jitsi-APP deaktivieren? Für „Otto normal Benutzer“ ist es einfacher direkt mit dem Browser in das Meeting geführt zu werden.

      Vielen Dank für alles.

      • Dominion sagt:

        Also ich meine das geht irgendwie, musst dich mal umschauen im Jitsi Forum.
        Aber die neueren Jitsi Versionen bieten die Möglichkeit im Web fortzufahren, wenn man einem Meeting auf dem Smartphone im Browser beitritt.

  12. Kian sagt:

    Hi,

    was wären den die besten Einstellung für die Videoqualität? Wie muss ich #SET Resolution anpassen?

    Konnte mit deiner Anleitung Jitsi unter Centos 7.9 zum laufen bringen , danke!

    vg
    Kian

  13. Björn sagt:

    Hallo, schöne Anleitung, danke!
    Eine Frage: Gar nicht so selten sind Verbindungen auf nicht-standard-Ports wie 10000 unterbunden. Was muss man anpassen, um den Dienst komplett auf httpx zu beschränken? Einen Coturn-Server dazunehmen? Wie?
    Gruß, Björn

    • Dominion sagt:

      Hallo Björn,

      richtig, du könntest dir einen coTURN auf Port 443 installieren und diesen in die .env von Jitsi Meet eintragen.
      Eine coTURN Anleitung findest du hier, da sollte sich nicht viel geändert haben: https://adminforge.de/nextcloud/nextcloud-talk-mit-eigenem-turn-server/

      Gruß
      dominion

      • Björn sagt:

        Hallo,
        danke, das hat funktioniert, ABER erst, nachdem mit einem weiteren sed-Suchen/Ersetzen-Befehl auch Stun-Server mit Passwort in jitsi-meet-cfg/web/config.js gesetzt wurden. Dazu hätte ich eine grundsätzliche Frage: Warum können diese Parameter nicht alle in .env gesetzt werden? Sorry, falls das eine naive Frage ist, mein Docker-Fu ist klein.
        Gruß, Björn

        • Dominion sagt:

          Hallo Björn,

          also in der .jitsi-meet-cfg/web/config.js werden „nur“ die STUN Server eingetragen unter stunServers:.
          Die TURN Daten aus der .env werden in der .jitsi-meet-cfg/prosody/config/conf.d/jitsi-meet.cfg.lua automatisch eingetragen. Somit ja es sollte die .env zu editieren ausreichen!

          Gruß
          dominion

  14. Jan sagt:

    Ahoi und danke für den nicen guide!
    Ich glaube, ich habe einen kleinen Schreibfehler in der restart.sh gefunden: ganz unten wenn du den docker container restartest gehört jitsi-meet-jvb_1 statt jitsi-meet-jvb-1, der underscore ist der unterschied (oder vllt war das nur bei mir der Fall mit docker-jitsi-meet-6865)

    Ich weiß nicht, ob das für andere relevant ist, aber es gibt noch eine (imho) schönere Feintune-Option, anstatt die LastN einfach nur auf einen fixen wert zu setzen: lastNLimits lässt die ChannelLastN dynamisch mit den Anzahld der Stream anpassen: https://github.com/jitsi/jitsi-meet/blob/master/config.js#L330

    // For the given example mapping, „last N“ will be set to 20 as long as there are at least 5, but less than
    // 29 participants in the call and it will be lowered to 15 when the 30th participant joins. The ‚channelLastN‘
    // will be used as default until the first threshold is reached.
    //
    // lastNLimits: {
    // 5: 20,
    // 30: 15,
    // 50: 10,
    // 70: 5,
    // 90: 2
    // },

    Ich bin aber nicht sicher, wie man Mehrzeilen Kommentare mit sed am besten deaktiviert oder umschreibt. Eventuell geht auch einfach nur lastNLimits={5: 20,30: 9,50: 5,70: 4,90: 2}; aber ich kenne mich mit .js nicht so aus

    • dominion sagt:

      Hallo Jan,

      ja das mit dem „_“ hat sich geändert. Ab docker-compose v2.x meine ich werden aus „_“ dann „-“ bei den Containernamen. Ich glaube es ist da dann doch mal sinnvoll Namen in der Config zu vergeben 😉

      Gruß
      Dominion

  15. Martin sagt:

    I am using a docker-jitsi-meet instance.Etherpad works ok.Could you help me how to add etherdraw plugin in etherpad.Thank you.

    • dominion sagt:

      I started etherpad docker container with this additional argument line:

      docker-compose.yml:
      args:
      ETHERPAD_PLUGINS: "... ... ep_whiteboard"

      In the etherpad settings file I added my own draw instance:

      etherpad-lite/settings.json.docker:
      "ep_draw": {
      "host": "paint.adminforge.de"
      },

  16. Frank sagt:

    Hallo Dominion,
    wie muss denn das restart-Script aussehen, wenn ich damit mehrere Container stoppen und neustarten möchte? Füge ich dazu die STOP – START-Struktur unten wieder an für jeden Container?
    Vielen Dank wie immer!!
    VG Frank

    • dominion sagt:

      Hallo Frank,

      der Restart unten ist nur um das „JVB Logging“ zu deaktivieren.
      Alle Container aus der docker-compose.yml werden mittels „docker-compose down“ und „docker-compose up -d“ neugestartet.

      Was hast du genau vor?

      Grüße
      dominion

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert