Eine Jitsi Meet-Bereitstellung kann kurzzeitig ausgeführt werden und anschließend in Docker Desktop oder Dockerfile einen oder mehrere Dienste als „Wird neu gestartet“ anzeigen docker compose ps. Docker wendet üblicherweise die konfigurierte Neustartrichtlinie an, nachdem ein Prozess beendet wurde. Die dauerhafte Lösung besteht darin, den beendeten Dienst zu identifizieren, seine letzten Protokolle zu lesen und den Startfehler zu beheben. Wiederholtes Neustarten des gesamten Stacks oder das Löschen seiner Volumes kann Spuren verwischen oder persistente Daten löschen.
1. Ermitteln Sie den Dienst, der neu gestartet wird.
Starten Sie Compose aus dem Verzeichnis, das dieselbe Compose-Datei enthält, die auch .envzum Starten dieser Installation verwendet wurde. Wenn Sie normalerweise zusätzliche Compose-Dateien, Profile oder ähnliches verwenden --env-file, geben Sie diese Optionen ebenfalls an.
docker compose ps -a
Prüfen Sie jeden Dienst einzeln. Die Kerndienste sind web, prosody, jicofound jvb; optionale Dienste wie jibrioder jigasikönnen ebenfalls vorhanden sein. Notieren Sie sich den genauen Dienst, dessen Status Restartingoder Exitedlautet. Ein fehlerhafter Dienst bedeutet nicht, dass jeder Container denselben Fehler aufweist.
Lesen Sie den Log-Auszug für diesen Dienst anhand der Zeitstempel:
docker compose logs --tail=150 --timestamps jicofo
Ersetzen Sie dies jicofodurch den betroffenen Dienst. Fügen Sie eine Option hinzu -f, um einen weiteren Startversuch zu überwachen. Die Jitsi-Docker-Anleitung beschreibt Compose-Protokolle für seine Dienste. Falls Docker keine Protokolle zurückgibt, prüfen Sie, ob der konfigurierte Protokollierungstreiber des Containers das Lesen von Protokollen unterstützt.
2. Suchen Sie nach der ersten fatalen Nachricht
Scrollen Sie in jedem Startzyklus zum ersten eindeutigen Fehler. Spätere Zeilen melden möglicherweise nur, dass der Prozess gestoppt wurde und Docker ihn neu startet. Häufige Ursachen sind:
- Fehlende erforderliche Passwörter: Jitsi hat die Standardpasswörter für interne Dienstkonten entfernt. Dienste, die diese benötigen, können erst gestartet werden, nachdem sie festgelegt wurden. Führen Sie im Standard-Bereitstellungsverzeichnis das bereitgestellte
./gen-passwords.shSkript aus, um die erforderlichen Werte in der Datei `/etc/jtsi.js` einzutragen .env. Schützen Sie diese Datei und geben Sie ihre Geheimnisse niemals in Supportanfragen preis.
- Ungültige oder nicht lesbare Konfiguration: Überprüfen Sie den Dateipfad und die Syntax, die in der Fehlermeldung angegeben sind. Eine benutzerdefinierte Prosody-, Jicofo- oder JVB-Konfiguration kann verhindern, dass genau dieser Dienst startet.
- Ein fehlendes oder nicht beschreibbares eingebundenes Verzeichnis: Überprüfen Sie den genauen Hostpfad in der Fehlermeldung und vergleichen Sie ihn mit der Volume-Zuordnung des Dienstes. Vermeiden Sie es, Berechtigungen im gesamten Konfigurationsbaum zu ändern.
- Fehler im Image oder Einstiegspunkt: Prüfen Sie, ob das Bereitstellungsverzeichnis, die Compose-Datei und die Image-Tags zu kompatiblen Releases gehören, insbesondere wenn die Schleife nach einem Update gestartet wurde.
- Speicherengpässe: Überprüfen Sie den Containerstatus und den Hostspeicher. Ein Abbruch aufgrund von Speichermangel erfordert eine andere Lösung als eine fehlerhafte Konfiguration.
Eine Docker-Neustartrichtlinie erklärt, warum ein Prozess nach dem Beenden wieder startet; sie erklärt jedoch nicht, warum der Prozess beendet wurde. Betrachten Sie ihn Restartingals Symptom und das Dienstprotokoll als Beweis.
3. Umgebung und Compose-Dateien überprüfen.
Stellen Sie sicher, dass Sie die Datei bearbeiten, die Compose tatsächlich lädt. Ein häufiger Fehler ist, eine Datei zu ändern, .envwährend Compose eine andere aus einem anderen Verzeichnis oder aus einer explizit angegebenen Datei liest --env-file. Überprüfen Sie die Konfiguration, bevor Sie Container neu erstellen.
docker compose config --quiet
Wenn Compose einen Fehler meldet, korrigieren Sie die YAML-Datei, die Variablenersetzung, die fehlende referenzierte Datei oder die angegebene Option. Die Ausführung docker compose configohne Korrektur --quietkann helfen, das aufgelöste Modell zu überprüfen, es können jedoch interpolierte Passwörter ausgegeben werden. Geben Sie die ungeschwärzte Ausgabe nicht weiter.
Vergleichen Sie bei einer Standardinstallation von Jitsi die Konfiguration .envmit der env.exampleKonfiguration derselben Version und stellen Sie sicher, dass die erforderlichen internen Passwörter vorhanden sind. Wenn Sie eine benutzerdefinierte Compose-Datei verwenden, prüfen Sie, ob die benötigten Variablen den richtigen Dienst erreichen. Verwenden Sie das mitgelieferte Passwortskript anstelle von leeren Platzhaltern. Wenn Sie ein Passwort ändern, halten Sie die zugehörige Komponentenkonfiguration konstant.
Das Jitsi-Projekt unterscheidet zwischen normalen Release-Dateien, Entwicklungscode und instabilen Images. Vermeiden Sie es, bei der Fehlersuche ein altes Compose-Verzeichnis, beliebige Image-Tags und Dateien aus einer anderen Version zu vermischen.
4. Überprüfen Sie die Konfigurationsfreigaben und Berechtigungen.
Vergleichen Sie die Volume-Einträge des Dienstes mit den tatsächlichen Hostpfaden. Ein Tippfehler, ein unerwarteter CONFIGWert oder ein abweichendes Compose-Arbeitsverzeichnis kann dazu führen, dass die Bereitstellung ein anderes Konfigurationsverzeichnis verwendet.
Die Berechtigungen hängen von der Jitsi-Version ab. Laut Handbuch stable-11146laufen Container ab Version 1.0 als Benutzer ohne Administratorrechte mit einem schreibgeschützten Container-Dateisystem. Konfigurationsverzeichnisse dienen als Eingabeverzeichnisse; beschreibbare Daten sind in separate Verzeichnisse für `config` storageund `data` unterteilt tmp, die für Benutzer mit der UID/GID 1000 beschreibbar sein müssen. Ältere Versionen verwenden ein anderes Layout. Halten Sie sich an das Handbuch für Ihre Version und verwenden Sie keine Berechtigungsvorgaben für andere Versionen.
Wenn das Protokoll ein fehlendes oder nicht beschreibbares Verzeichnis meldet, reparieren Sie genau diesen Pfad. Wenden Sie keine allgemeinen Befehle wie beispielsweise chmod -R 777auf das gesamte Jitsi-Konfigurationsverzeichnis an; dies kann die Sicherheit schwächen, ohne den eingebundenen Pfad zu korrigieren.
5. Überprüfen Sie den Ausgangszustand und die letzten Änderungen.
Docker kann den Exit-Code eines Containers, den Speichermangelstatus, die Anzahl der Neustarts und Daemon-Fehler melden. Zuerst muss die Container-ID des fehlerhaften Dienstes ermittelt werden:
docker compose ps -q jicofo
Ersetzen Sie dann die zurückgegebene ID:
docker inspect --format '{{.State.Status}} exit={{.State.ExitCode}} oom={{.State.OOMKilled}} restarts={{.RestartCount}} error={{.State.Error}}' CONTAINER_ID
Eine steigende Anzahl an Neustarts deutet auf wiederholte Versuche hin. oom=trueÜberprüfen Sie in diesem Fall die Speichergrenzen des Hosts oder Containers sowie die Systemprotokolle. Ein Exit-Code ungleich null allein reicht nicht für eine Diagnose aus; vergleichen Sie ihn mit dem Dienstprotokoll.
Wenn die Schleife nach einem Update begann, notieren Sie sich die Änderungen: Release-Dateien, Image-Tags, ein Passwort, eine Bind-Mount-Einbindung oder benutzerdefinierte Konfigurationen. Sichern Sie Konfiguration und persistente Daten, bevor Sie die Version ändern. Stellen Sie einen kompatiblen Satz von Compose-Dateien und Images wieder her oder befolgen Sie die Upgrade-Anweisungen von Jitsi. Netzwerk- und Firewall-Probleme können die Verbindung von Teilnehmern verhindern, erklären aber in der Regel nicht, warum ein Dienstprozess wiederholt beendet wird; unterscheiden Sie einen Bootfehler von einem Problem mit der Medienverbindung.
6. Erstellen Sie den Dienst neu, nachdem Sie die Ursache behoben haben.
Nach der Änderung eines Umgebungswerts oder einer Compose-Definition muss der betroffene Dienst neu erstellt werden, um die neue Konfiguration anzuwenden:
docker compose up -d --force-recreate jicofo
Ersetzen Sie den Dienstnamen. Wenn eine gemeinsame Konfigurationsänderung mehrere Komponenten betrifft, erstellen Sie die betroffenen Dienste gemeinsam neu. Überprüfen Sie anschließend Status und Protokolle erneut. Ein einfacher Neustart wendet nicht jede Änderung an Compose oder der Umgebung an, und die Neuerstellung des gesamten Stacks kann laufende Meetings unterbrechen.
Diese Option sollte nicht docker compose down -vals allgemeine Lösung für Neustartschleifen verwendet werden. -vSie entfernt von Compose verwaltete Volumes und kann Daten löschen, die Sie behalten wollten. Speichern Sie Protokolle und überprüfen Sie die Mounts, bevor Sie Container oder Daten entfernen.
Überprüfen Sie die Reparatur.
Status prüfen, mehrere normale Startintervalle abwarten und erneut prüfen:
docker compose ps
docker compose logs --tail=100 --timestamps jicofo
Der betroffene Dienst sollte weiterhin erreichbar sein, die Anzahl der Neustarts sollte sich nicht weiter erhöhen und im Protokoll sollte keine Fehlermeldung mehr angezeigt werden. Prüfen Sie, ob die Webseite geladen wird, und testen Sie ein Meeting mit zwei Clients. Falls die Dienste weiterhin funktionieren, die Teilnehmer aber weder Audio noch Video austauschen können, überprüfen Sie die Netzwerkverbindung, die Firewall-Regeln und die im Jitsi-Handbuch angegebene JVB-Adresse.
Als Referenz können Sie den Jitsi Meet Docker Self-Hosting Guide , das Beispiel für Umgebungsvariablen des Projekts , die Docker- Neustartrichtliniendokumentation , die Compose-Protokollreferenz und die Containerinspektionsreferenz verwenden .