Indeks dnevnikaDockup / bilješka s terena
Note / self-host-wiki-js

Kako samostalno hostati Wiki.js u 2026.: postavljanje baze podataka, TLS i testovi vraćanja

Implementirajte Wiki.js s odgovarajućim portom, trajnom pohranom, TLS-om, autentikacijom i sigurnosnim kopijama. Riješite problem kada je DB_HOST unutar containera u produkciji postavljen na localhost.

Većina uputa za instalaciju Wiki.js završava nakon prvog učitavanja stranice. To je prerano: DB_HOST je unutar containera postavljen na localhost ili nedostaju zaglavlja proxyja za TLS. Koristan produkcijski test zahtjevniji je — dovršite postavljanje, izradite i uredite stranicu, prenesite medij, pronađite ga pretraživanjem i nakon ponovnog pokretanja provjerite povijest verzija.

Uloga Wiki.js jednostavna je: Markdown wiki s verzioniranjem i modernim uređivačem. Njegova operativna granica obuhvaća više od web procesa pa prije dolaska stvarnih podataka treba izričito definirati ovisnost, pohranjeno stanje i javnu rutu.

Nacrtajte granicu izvođenja Wiki.js

Najmanja odgovorna topologija za Wiki.js sadrži jedan privatni listener na portu 3000, ingress rutu i dokumentiranu granicu stanja. Mrežni ugovor za Wiki.js jest dostupna baza podataka Postgres, MySQL, MariaDB, MSSQL ili SQLite. Privatne krajnje točke zadržite na internom DNS-u, dopustite samo potrebne izlazne pozive i dodijelite Wiki.js-u ograničene vjerodajnice servisa.

Provjerite topologiju tako da čistom klijentu omogućite dovršavanje postavljanja, izradu i uređivanje stranice, prijenos medija, pretraživanje te provjeru povijesti verzija nakon ponovnog pokretanja. Tijekom rada pratite vrijeme odziva baze podataka, indeksiranje pretraživanja, pohranu medija i latenciju pružatelja autentikacije. Rezultat će pokazati pripada li sljedeće poboljšanje memoriji, pohrani, mreži ili zasebnom workeru, umjesto da potiče proizvoljno dimenzioniranje containera.

Osmislite vraćanje Wiki.js prije pokretanja

Unutar standardne slike Wiki.js ne očekuje se writable application state. Sačuvajte bazu podataka te sve lokalne uploade i prilagođena sredstva, uključujući pinani digest i provjerenu konfiguraciju rute, umjesto da izrađujete sigurnosnu kopiju praznog datotečnog sustava containera.

Izradite Wiki.js od nule na drugom hostu i provjerite vraćaju li se stranice, povijest, korisnici, grupe, mediji i navigacija te ostaje li poznata stranica dostupna pretraživanjem. Ako dodate zasebnu bazu podataka, room server ili sloj autentikacije, toj komponenti dodijelite vlastitog, izričito određenog vlasnika oporavka. Vodič od Git repozitorija do produkcije pokazuje kako reproducibilni artifact zamjenjuje sigurnosnu kopiju containera.

Zabilježite naredbu za ponovnu izgradnju i test s očekivanim izlazom uz release. Stateless plan oporavka uspijeva reprodukcijom ponašanja iz pouzdanih ulaza; ne bi smio ovisiti o kopiranju neprozirnog containera koji je u radu.

Odaberite granicu povjerenja za Wiki.js

Sigurna implementacija Wiki.js počinje uklanjanjem ovlasti. Izbjegavajte ostavljanje zaslona za postavljanje javno dostupnim nakon stvaranja prvog administratora; umjesto toga uklonite javni pristup postavljanju, ograničite administraciju i dodijelite wiki bazi podataka vlastite vjerodajnice.

S DB_PASS postupajte u skladu s njegovom ulogom u Wiki.js-u: osjetljive vrijednosti držite izvan Gita, dokumentirajte učinke rotacije i u produkciji nikad ne upotrebljavajte javni primjer kao zamjenu. Ograničite administrativne rute, za ovisnosti koristite privatni DNS i pregledajte svaki bind mount. Kada se logovi šalju centralno, filtrirajte tajne i privatni sadržaj prije nego što napuste server.

Što mora proći prije dolaska stvarnih podataka Wiki.js

Produkcijski gate za Wiki.js trebao bi moći izvršiti netko tko nije izradio implementaciju. Dodijelite toj osobi pinanu verziju, testni račun bez osjetljivih podataka i ovaj zadatak: dovršite postavljanje, izradite i uredite stranicu, prenesite medij, pronađite ga pretraživanjem i nakon ponovnog pokretanja provjerite povijest verzija. Ako upute zahtijevaju nedokumentirani shell pristup, servis još nije operativno spreman.

Ponovite gate nakon zamjene samo containera. Zatim vratite bazu podataka te lokalne uploade i prilagođena sredstva u praznu infrastrukturu i dokažite da se vraćaju stranice, povijest, korisnici, grupe, mediji i navigacija te da poznata stranica ostaje dostupna pretraživanjem. Tijekom oba uspješna pokretanja izmjerite vrijeme odziva baze podataka, indeksiranje pretraživanja, pohranu medija i latenciju pružatelja autentikacije; neočekivane razlike često otkrivaju nedostajući cache, indeks, worker ili mount podataka.

Dodajte vježbu otklanjanja pogreške: privremeno uskratite testnom identitetu pristup dostupnoj bazi podataka Postgres, MySQL, MariaDB, MSSQL ili SQLite. Wiki.js trebao bi emitirati korisnu pogrešku, sačuvati postojeće stanje i oporaviti se kada se valjani uvjet vrati. Spremite vremenske oznake i relevantne retke loga, uz uklonjene tajne. Ti dokazi postaju referenca za sljedeću promjenu slike ili konfiguracije.

Pokrenite Wiki.js bez skrivanja pokretnih dijelova

Početno pokretanje Wiki.js zadržite dovoljno reproducibilnim za pregled u pull requestu.

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

Nakon dolaska stvarnih podataka nemojte se oslanjati na latest. Zabilježite radni digest, korisnika containera i vlasništvo nad mountovima. Pratite log aplikacije kroz potpuni test — dovršite postavljanje, izradite i uredite stranicu, prenesite medij, pronađite ga pretraživanjem i nakon ponovnog pokretanja provjerite povijest verzija — te zabilježite sve migracije prije usmjeravanja rute prema produkcijskom prometu.

Razlikujte interne i eksterne URL-ove

Vanjski URL Wiki.js tretirajte kao konfiguraciju koja preživljava redeploy. Najprije konfigurirajte URL stranice nakon usmjeravanja servisa kroz HTTPS, a zatim usmjerite hostname na port 3000 uz očuvanje izvornog hosta i sheme.

Kontrolni popis dostupnosti implementacije može dokazati da zahtjevi ulaze u container. Nakon toga poznati problem — DB_HOST je unutar containera postavljen na localhost ili nedostaju zaglavlja proxyja za TLS — treba istražiti u Wiki.js-u, njegovom stanju ili workloadu, a ne u automatizaciji certifikata.

Pratite workload, a ne samo container

Nadzorne ploče izgradite oko vremena odziva baze podataka, indeksiranja pretraživanja, pohrane medija i latencije pružatelja autentikacije. Graf CPU-a bez konteksta tog workloada ne može objasniti zašto je Wiki.js spor. Dodajte sintetičku ili raspoređenu provjeru koja pokušava dovršiti postavljanje, izraditi i urediti stranicu, prenijeti medij, pronaći ga pretraživanjem i nakon ponovnog pokretanja provjeriti povijest verzija, koristeći bezopasne testne podatke.

Prije nadogradnje uzmite u obzir ovu specifičnu opasnost aplikacije: migracije baze podataka Wiki.js i moduli autentikacije trebaju se postaviti u staging prije prelaska na drugu release liniju. Vratite nedavnu sigurnosnu kopiju u izoliranu implementaciju, ondje pokrenite migracije i usporedite ponašanje. Ako je DB_HOST unutar containera postavljen na localhost ili nedostaju zaglavlja proxyja za TLS, pregledajte uključenu granicu — javni origin, pohranu ili ovisnost — prije diranja nepovezanih postavki.

Zadržite eksplicitnu konfiguraciju Wiki.js-a dok Dockup upravlja rutiranjem

Rutiranje, certifikati, zamjena servisa i priključena pohrana razumne su mete automatizacije. Dockup njima upravlja za Wiki.js i može osigurati povezanu upravljanu bazu podataka ili se povezati sa servisima na vlastitom serveru korisnika.

Ono što ne bi smio izmišljati jest pravilo povjerenja Wiki.js-a. Nakon implementacije konfigurirajte URL stranice nakon usmjeravanja servisa kroz HTTPS, provedite ovu granicu — uklonite javni pristup postavljanju, ograničite administraciju i dodijelite wiki bazi podataka vlastite vjerodajnice — te provjerite rezultat ovog scenarija: dovršite postavljanje, izradite i uredite stranicu, prenesite medij, pronađite ga pretraživanjem i nakon ponovnog pokretanja provjerite povijest verzija. Rezultat je infrastruktura pokrenuta jednim klikom uz acceptance test specifičan za aplikaciju.

Često postavljana pitanja

Što je Wiki.js-u potrebno za produkcijsku implementaciju?

Usmjerite container Wiki.js na portu 3000 kroz jedan HTTPS origin. Prateći mrežni zahtjev jest dostupna baza podataka Postgres, MySQL, MariaDB, MSSQL ili SQLite. Nemojte smatrati Wiki.js spremnim dok ne možete dovršiti postavljanje, izraditi i urediti stranicu, prenijeti medij, pronaći ga pretraživanjem i nakon ponovnog pokretanja provjeriti povijest verzija.

Koji podaci Wiki.js pripadaju sigurnosnoj kopiji?

Standardna slika Wiki.js nema obavezan mount za podatke aplikacije. Sačuvajte konfiguraciju implementacije i zasebno izradite sigurnosnu kopiju svakog povezanog stanja; oporavak je uspješan kada se vrate stranice, povijest, korisnici, grupe, mediji i navigacija te poznata stranica ostane dostupna pretraživanjem.

Zahtijeva li Wiki.js HTTPS iza reverse proxyja?

Za javni origin Wiki.js koristite HTTPS, a port 3000 zadržite na internoj ruti. Ispravno primijenite postavku Wiki.js-a: konfigurirajte URL stranice nakon usmjeravanja servisa kroz HTTPS. Za Wiki.js HTTPS štiti vjerodajnice ili korisnički sadržaj tijekom prijenosa i održava dosljedno ponašanje klijenta ovisno o originu.

Kako testirati nadogradnju Wiki.js-a?

Vratite trenutačno stanje Wiki.js-a u izoliranu implementaciju, primijenite kandidatsku verziju i ponovite acceptance transaction. Obratite posebnu pozornost jer migracije baze podataka Wiki.js i moduli autentikacije trebaju biti postavljeni u staging prije prelaska na drugu release liniju. Prethodnu sliku Wiki.js-a zadržite dok ne razumijete granice migracije podataka i rollbacka.