Indexul jurnaluluiDockup / notă de teren
Note / self-host-wiki-js

Cum găzduiești Wiki.js pe propria infrastructură în 2026: configurarea bazei de date, TLS și testarea restaurării

Implementează Wiki.js cu portul corect, stocare persistentă, TLS, autentificare și backupuri. Depanează situațiile în care DB_HOST este localhost în interiorul containerului în producție.

Majoritatea notițelor despre instalarea Wiki.js se opresc la prima încărcare a paginii. Este prea devreme: DB_HOST este localhost în interiorul containerului sau lipsesc headerele proxy pentru TLS. Un test util pentru producție este mai exigent — finalizează configurarea, creează și modifică o pagină, încarcă fișiere media, caută pagina și verifică istoricul versiunilor după repornire.

Rolul Wiki.js este clar: un wiki Markdown cu versionare și un editor modern. Limita sa operațională include mai mult decât procesul web, așa că dependența, starea persistentă și ruta publică trebuie specificate explicit înainte să apară date reale.

Delimitează runtime-ul Wiki.js

Cea mai mică topologie Wiki.js administrată responsabil conține un singur listener privat pe portul 3000, o rută de ingress și o limită documentată pentru starea persistentă. Contractul de rețea pentru Wiki.js presupune o bază de date Postgres, MySQL, MariaDB, MSSQL sau SQLite accesibilă. Păstrează endpointurile private în DNS intern, permite doar apelurile outbound necesare și oferă Wiki.js credențiale de serviciu cu permisiuni limitate.

Validează topologia cerând unui client curat să finalizeze configurarea, să creeze și să modifice o pagină, să încarce fișiere media, să caute pagina și să verifice istoricul versiunilor după repornire. Monitorizează timpul de răspuns al bazei de date, indexarea căutării, stocarea fișierelor media și latența furnizorului de autentificare în timpul rulării. Rezultatul îți arată dacă următoarea îmbunătățire trebuie făcută la nivel de memorie, stocare, rețea sau într-un worker separat, în loc să încurajeze dimensionarea arbitrară a containerului.

Proiectează restaurarea Wiki.js înainte de lansare

Nu se așteaptă ca imaginea standard Wiki.js să conțină stare de aplicație care trebuie scrisă. Păstrează baza de date împreună cu orice uploaduri locale și asseturi personalizate, inclusiv digestul fixat și configurația de rutare verificată, în loc să faci backup pentru un filesystem gol al containerului.

Creează Wiki.js de la zero pe o altă gazdă și verifică dacă paginile, istoricul, utilizatorii, grupurile, fișierele media și navigarea sunt restaurate, iar o pagină cunoscută rămâne disponibilă în rezultatele căutării. Dacă adaugi o bază de date separată, un room server sau un layer de autentificare, atribuie fiecărei componente un responsabil explicit pentru recuperare. Ghidul de la Git la producție arată cum un artefact reproductibil înlocuiește backupul unui container.

Înregistrează comanda de rebuild și testul cu rezultate cunoscute împreună cu release-ul. Un plan de recuperare stateless reușește prin reproducerea comportamentului din inputuri de încredere; nu ar trebui să depindă de copierea unui container opac aflat în execuție.

Alege limita de încredere pentru Wiki.js

O implementare Wiki.js sigură începe prin eliminarea autorității inutile. Evită să lași ecranul de configurare expus după crearea primului administrator; în schimb, elimină accesul public la configurare, restricționează administrarea și oferă bazei de date a wiki-ului propriile credențiale.

Tratează DB_PASS în funcție de rolul său în Wiki.js: păstrează valorile sensibile în afara Git, documentează efectele rotației și nu înlocui niciodată un exemplu public în producție. Restricționează rutele administrative, folosește DNS privat pentru dependențe și verifică fiecare bind mount. Când logurile sunt trimise centralizat, filtrează secretele și conținutul privat înainte să părăsească serverul.

Ce trebuie să treacă înainte să apară date reale în Wiki.js

Un gate de producție pentru Wiki.js ar trebui să poată fi executat de cineva care nu a creat implementarea. Oferă-i acelei persoane versiunea fixată, un cont de test care nu conține date sensibile și această sarcină: să finalizeze configurarea, să creeze și să modifice o pagină, să încarce fișiere media, să caute pagina și să verifice istoricul versiunilor după repornire. Dacă instrucțiunile necesită acces shell nedocumentat, serviciul nu este încă pregătit operațional.

Repetă verificarea după înlocuirea exclusivă a containerului. Apoi restaurează baza de date împreună cu orice uploaduri locale și asseturi personalizate într-o infrastructură goală și demonstrează că paginile, istoricul, utilizatorii, grupurile, fișierele media și navigarea sunt restaurate, iar o pagină cunoscută rămâne disponibilă în rezultatele căutării. Măsoară timpul de răspuns al bazei de date, indexarea căutării, stocarea fișierelor media și latența furnizorului de autentificare în timpul ambelor rulări reușite; diferențele neașteptate indică adesea lipsa unui cache, index, worker sau mount de date.

Adaugă un exercițiu de failure drill: refuză temporar accesul identității de test la o bază de date Postgres, MySQL, MariaDB, MSSQL sau SQLite accesibilă. Wiki.js ar trebui să emită o eroare utilă, să păstreze starea existentă și să se recupereze când condiția validă revine. Salvează marcajele temporale și liniile relevante din loguri, cu secretele redactate. Aceste dovezi devin referința pentru următoarea modificare de imagine sau configurație.

Pornește Wiki.js fără să ascunzi componentele importante

Păstrează invocarea inițială a Wiki.js suficient de reproductibilă pentru a putea fi verificată într-un pull request.

docker run -d \
  --name wiki-js \
  --restart unless-stopped \
  -p 127.0.0.1:3000:3000 \
  -e DB_PASS=replace-with-a-long-random-value \
  -e DB_TYPE=postgres \
  -e DB_HOST=postgres.internal \
  -e DB_PORT=5432 \
  -e DB_USER=wiki \
  -e DB_NAME=wiki \
  ghcr.io/requarks/wiki:2

Nu te baza pe latest după ce există date reale. Capturează digestul funcțional, utilizatorul containerului și ownership-ul mounturilor. Urmărește logul aplicației pe durata unui test complet — finalizează configurarea, creează și modifică o pagină, încarcă fișiere media, caută pagina și verifică istoricul versiunilor după repornire — și notează orice migrare înainte de a pune ruta în spatele traficului de producție.

Păstrează distincte URL-urile interne și externe

Tratează URL-ul extern al Wiki.js ca pe o configurație care trebuie să supraviețuiască redeploy-urilor. Configurează mai întâi URL-ul site-ului după rutarea serviciului prin HTTPS; apoi direcționează hostname-ul către portul 3000, păstrând intacte hostul și schema originale.

Checklistul pentru verificarea accesibilității deploymentului poate demonstra că requesturile intră în container. După acest punct, problema cunoscută — DB_HOST este localhost în interiorul containerului sau lipsesc headerele proxy pentru TLS — trebuie investigată în Wiki.js, în starea sa persistentă sau în workload, nu în automatizarea certificatelor.

Monitorizează workload-ul, nu doar containerul

Construiește dashboarduri în jurul timpului de răspuns al bazei de date, indexării căutării, stocării fișierelor media și latenței furnizorului de autentificare. Un grafic CPU fără acest context al workload-ului nu poate explica de ce Wiki.js este lent. Adaugă un check sintetic sau programat care încearcă să finalizeze configurarea, să creeze și să modifice o pagină, să încarce fișiere media, să caute pagina și să verifice istoricul versiunilor după repornire, folosind date de test inofensive.

Înainte de upgrade, ține cont de acest risc specific aplicației: migrațiile bazei de date Wiki.js și modulele de autentificare trebuie testate într-un mediu de staging înainte de trecerea la o altă linie de release. Restaurează un backup recent într-o implementare izolată, rulează migrațiile acolo și compară comportamentul. Dacă DB_HOST este localhost în interiorul containerului sau lipsesc headerele proxy pentru TLS, verifică limita implicată — originea publică, stocarea sau dependența — înainte să modifici setări fără legătură.

Păstrează Wiki.js explicit, în timp ce Dockup gestionează rutarea

Rutarea, certificatele, înlocuirea serviciilor și stocarea atașată sunt ținte rezonabile pentru automatizare. Dockup le gestionează pentru Wiki.js și poate configura baza de date administrată asociată sau se poate conecta la servicii de pe serverul propriu al clientului.

Ceea ce nu ar trebui să inventeze este politica de încredere a Wiki.js. După deployment, configurează URL-ul site-ului după rutarea serviciului prin HTTPS, impune această limită — elimină accesul public la configurare, restricționează administrarea și oferă bazei de date a wiki-ului propriile credențiale — și verifică rezultatul acestui scenariu: finalizează configurarea, creează și modifică o pagină, încarcă fișiere media, caută pagina și verifică istoricul versiunilor după repornire. Rezultatul este o infrastructură configurată printr-un singur click, cu un test de acceptanță specific aplicației.

Întrebări frecvente

De ce are nevoie Wiki.js pentru un deployment de producție?

Direcționează containerul Wiki.js de pe portul 3000 printr-o singură origine HTTPS. Cerința de rețea pentru componenta de suport este o bază de date Postgres, MySQL, MariaDB, MSSQL sau SQLite accesibilă. Nu considera Wiki.js pregătit până când nu poți finaliza configurarea, crea și modifica o pagină, încărca fișiere media, căuta pagina și verifica istoricul versiunilor după repornire.

Ce date Wiki.js trebuie incluse într-un backup?

Imaginea standard Wiki.js nu are nevoie de un mount obligatoriu pentru datele aplicației. Păstrează configurația deploymentului și fă backup separat pentru orice stare conectată; recuperarea este reușită atunci când paginile, istoricul, utilizatorii, grupurile, fișierele media și navigarea sunt restaurate, iar o pagină cunoscută rămâne disponibilă în rezultatele căutării.

Are Wiki.js nevoie de HTTPS în spatele unui reverse proxy?

Folosește HTTPS pentru originea publică a Wiki.js și păstrează portul 3000 pe ruta internă. Aplică setarea Wiki.js corect: configurează URL-ul site-ului după rutarea serviciului prin HTTPS. Pentru Wiki.js, HTTPS protejează credențialele sau conținutul utilizatorilor în tranzit și menține consecvent comportamentul clientului dependent de origine.

Cum trebuie testat un upgrade Wiki.js?

Restaurează starea curentă a Wiki.js într-o implementare izolată, aplică versiunea candidată și repetă tranzacția de acceptanță. Acordă o atenție deosebită acestui aspect, deoarece migrațiile bazei de date Wiki.js și modulele de autentificare trebuie testate într-un mediu de staging înainte de trecerea la o altă linie de release. Păstrează imaginea anterioară a Wiki.js până când limitele migrației datelor și ale rollbackului sunt înțelese.