O implementare Jitsi Meet poate rula scurt și apoi poate afișa unul sau mai multe servicii ca „Repornire” în Docker Desktop sau în docker compose ps. Docker aplică de obicei politica de repornire configurată după ce un proces se încheie. Soluția definitivă este identificarea serviciului care se încheie, citirea ultimelor jurnale ale acestuia și corectarea erorii de pornire. Repornirea repetată a întregii stive sau ștergerea volumelor acesteia poate ascunde dovezi sau elimina date persistente.
1. Găsiți serviciul care repornește
Rulați Compose din directorul care conține același fișier Compose și .envcel utilizat pentru lansarea acestei instalări. Dacă în mod normal utilizați fișiere Compose suplimentare, profiluri sau --env-filefișiere, includeți aceleași opțiuni.
docker compose ps -a
Verificați fiecare serviciu separat. Serviciile de bază sunt web, prosody, jicofo, și jvb; pot apărea și servicii opționale, cum ar fi jibrisau jigasi. Rețineți serviciul exact a cărui stare este Restartingsau Exited. Un serviciu defect nu înseamnă că fiecare container are aceeași eroare.
Citiți jurnalul pentru serviciul respectiv, folosind timestamp-uri:
docker compose logs --tail=150 --timestamps jicofo
Înlocuiți jicofocu serviciul afectat. Adăugați -fpentru a urmări o altă încercare de pornire. Ghidul Jitsi Docker documentează jurnalele Compose pentru serviciile sale. Dacă Docker nu poate returna jurnalele, verificați dacă driverul de înregistrare configurat pentru containerul respectiv acceptă citirea acestora.
2. Căutați primul mesaj fatal
Derulați până la prima eroare clară din fiecare ciclu de pornire. Liniile ulterioare pot raporta doar faptul că procesul s-a oprit și că Docker îl repornește. Cauzele principale comune includ:
- Parole obligatorii lipsă: Jitsi a eliminat parolele implicite pentru conturile de servicii interne, iar serviciile care au nevoie de ele nu vor porni până când nu sunt setate. Din directorul de implementare standard, rulați
./gen-passwords.shscriptul furnizat pentru a completa valorile necesare în .env. Protejați fișierul respectiv și nu postați niciodată secretele sale într-o solicitare de asistență.
- Configurație invalidă sau ilizibilă: verificați calea fișierului și sintaxa menționate în eroare. O configurație personalizată Prosody, Jicofo sau JVB poate împiedica pornirea doar a serviciului respectiv.
- Director montat lipsă sau imposibil de scris: verificați calea exactă a gazdei din eroare și comparați-o cu maparea volumului serviciului. Evitați modificarea permisiunilor în întregul arbore de configurare.
- Eroare la o imagine sau la un punct de intrare: verificați dacă directorul de implementare, fișierul Compose și etichetele de imagine aparțin unor versiuni compatibile, mai ales dacă bucla a început după o actualizare.
- Presiune de memorie: inspectați starea containerului și memoria gazdei. O întrerupere din cauza memoriei insuficiente necesită o remediere diferită față de o configurație incorectă.
O politică de repornire Docker explică de ce un proces revine după ieșire; nu explică de ce procesul s-a încheiat. Tratați Restarting-o ca simptom și jurnalul de service ca dovadă.
3. Validarea mediului și compunerea fișierelor
Asigurați-vă că editați fișierul pe care Compose îl încarcă efectiv. O greșeală frecventă este schimbarea unuia .envîn timp ce Compose citește altul dintr-un director diferit sau dintr-un director furnizat explicit --env-file. Validați configurația înainte de a recrea containerele:
docker compose config --quiet
Dacă Compose raportează o eroare, remediați codul YAML, substituția de variabile, fișierul referit lipsă sau opțiunea pe care o denumește. Rularea docker compose configfără [compose] --quietpoate ajuta la inspectarea modelului rezolvat, dar este posibil să afișeze parole interpolate. Nu partajați rezultatul needitat.
Pentru o instalare Jitsi standard, comparați .envcu cea env.exampledin aceeași versiune și confirmați că sunt prezente parolele interne necesare. Dacă utilizați un fișier Compose personalizat, verificați dacă variabilele necesare ajung la serviciul corect. Folosiți scriptul de parolă inclus în loc de spații provizorii goale. Dacă modificați o parolă, păstrați consecvența configurației componentelor corespunzătoare.
Proiectul Jitsi distinge fișierele de versiune normală de codul de dezvoltare și imaginile instabile. Evitați combinarea unui director Compose vechi, a unor etichete de imagine arbitrare și a fișierelor dintr-o versiune diferită în timpul depanării.
4. Verificați montările și permisiunile de configurare
Comparați intrările volumului serviciului cu căile gazdă reale. O greșeală de scriere, CONFIGo valoare neașteptată sau un director de lucru Compose diferit poate face ca implementarea să utilizeze un alt director de configurare.
Permisiunile depind de versiunea Jitsi. Manualul precizează că, începând cu stable-11146, containerele rulează ca utilizatori neprivilegiați cu un sistem de fișiere container doar pentru citire. Directoarele de configurare sunt intrări; datele care pot fi scrise sunt separate în directoare storageși tmp, care trebuie să poată fi scrise prin UID/GID 1000. Versiunile mai vechi utilizează un alt aspect. Urmați manualul pentru versiunea pe care o rulați, în loc să reutilizați o rețetă de permisiuni pentru o altă versiune.
Dacă jurnalul identifică un director lipsă sau un director imposibil de scris, reparați exact acea cale. Nu aplicați comenzi ample, cum ar fi chmod -R 777întregului director de configurare Jitsi; acest lucru poate slăbi securitatea fără a repara calea montată.
5. Inspectați starea de ieșire și modificările recente
Docker poate raporta codul de ieșire al unui container, starea de memorie insuficientă, numărul de reporniri și eroarea daemon. Mai întâi obțineți ID-ul containerului pentru serviciul care a eșuat:
docker compose ps -q jicofo
Apoi înlocuiți ID-ul returnat:
docker inspect --format '{{.State.Status}} exit={{.State.ExitCode}} oom={{.State.OOMKilled}} restarts={{.RestartCount}} error={{.State.Error}}' CONTAINER_ID
Un număr tot mai mare de reporniri confirmă încercările repetate. Dacă oom=true, verificați limitele de memorie ale gazdei sau containerului și jurnalele de sistem. Un cod de ieșire diferit de zero nu constituie în sine un diagnostic; comparați-l cu jurnalul de service.
Dacă bucla a început după o actualizare, notați ce s-a modificat: fișierele de lansare, etichetele de imagine, o parolă, o montare bind sau o configurație personalizată. Faceți o copie de rezervă a configurației și a datelor persistente înainte de a schimba versiunile. Restaurați un set compatibil de fișiere și imagini Compose sau urmați instrucțiunile de actualizare Jitsi. Problemele de rețea și firewall pot împiedica conectarea participanților, dar de obicei nu explică de ce un proces de serviciu se închide în mod repetat; distingeți o eroare de pornire de o problemă de conectivitate media.
6. Recreați serviciul după remedierea cauzei
După modificarea unei valori de mediu sau a unei definiții Compose, recreați serviciul afectat pentru a aplica noua configurație:
docker compose up -d --force-recreate jicofo
Înlocuiți numele serviciului. Dacă o modificare a configurației partajate afectează mai multe componente, recreați serviciile relevante împreună. Apoi, verificați din nou starea și jurnalele. O repornire simplă nu aplică fiecare modificare Compose sau de mediu, în timp ce recrearea întregii stive poate întrerupe întâlnirile active.
Nu utilizați docker compose down -vca o soluție generică pentru bucla de repornire. Opțiunea -velimină volumele gestionate de Compose și poate șterge datele pe care intenționați să le păstrați. Salvați jurnalele și verificați montările înainte de a elimina containerele sau datele.
Verificați remedierea
Verificați starea, așteptați câteva intervale normale de pornire și verificați din nou:
docker compose ps
docker compose logs --tail=100 --timestamps jicofo
Serviciul afectat ar trebui să rămână activ, numărul de reporniri ar trebui să înceteze să crească, iar jurnalul său nu ar trebui să mai repete același mesaj fatal. Confirmați că pagina web se încarcă și testați o întâlnire cu doi clienți. Dacă serviciile continuă să ruleze, dar participanții nu pot face schimb de fișiere audio sau video, investigați rețeaua, regulile firewall și adresa JVB anunțată în manualul Jitsi.
Pentru referință, utilizați ghidul de auto-găzduire Jitsi Meet Docker , exemplul de variabilă de mediu al proiectului , documentația politicii de repornire Docker , referința sa la jurnalele Compose și referința la inspecția containerului .