Tento článek píšu 19.8.2023 a v tuto chvíli si tuto wiki hostuji kompletně sám na svém zařízení.
V domácí síti mám NAS Synology DS920+, recenze zde nebo zde.
Na tomto NASu běží mimo jiné Docker a na něm Portainer.
V Portaineru jede Wiki.js v jednom stacku s databází PostgreSQL, ve které má Wiki.js všechny data.
Zatím je wiki dostupná pouze z lokální sítě a není vystrčená ven do světa.
V podstatě celou instalaci jsem provedl podle tohoto návodu na mariushosting.com. Akorát jsem použil jiný skript pro vygenerování stacku, ten mám podle návodu na oficiální wiki, liší se zejména v použitých image, ty co použil Mariushosting mi nefungovaly.
Dále mě pomohla tahle užitečná videa:
Stojí za to vypíchnout, že databázi PostgreSQL není potřeba separátně zakládat, založí se v jednom kroku při zakládání stacku v Portaineru.
Pro jistotu (a pro sebe) níže uvádím celý použitý skript pro vytvoření stacku:
version: "3.9"
services:
db:
image: postgres:11-alpine
container_name: Wiki.js-DB
hostname: wiki-js-db
mem_limit: 512m
cpu_shares: 768
security_opt:
- no-new-privileges:true
user: 1026:100
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "wikijs", "-U", "wikiuser"]
timeout: 45s
interval: 10s
retries: 10
volumes:
- /volume1/docker/wikijs/db:/var/lib/postgresql/data:rw
environment:
POSTGRES_DB: wikijs
POSTGRES_USER: wikiuser
POSTGRES_PASSWORD: wikipassword
restart: on-failure:5
wiki:
image: ghcr.io/requarks/wiki:2
container_name: Wiki-js
hostname: wiki-js
mem_limit: 512m
cpu_shares: 768
security_opt:
- no-new-privileges:true
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:3000
ports:
- 3540:3000
volumes:
- /volume1/docker/wikijs/config:/config:rw
- /volume1/docker/wikijs/data:/data:rw
environment:
TZ: Europe/Prague
PUID: 1026
PGID: 100
DB_TYPE: postgres
DB_HOST: wiki-js-db
DB_PORT: 5432
DB_NAME: wikijs
DB_USER: wikiuser
DB_PASS: wikipassword
restart: on-failure:5
depends_on:
db:
condition: service_healthy
Nezapomeňte si změnit
wikiuserawikipasswordza nějaké své originální!
Hned tady je fajn změnit defaultní vyhledávací modul na DB - PostgreSQL. Stačí ho zvolit, stisknout tlačítko použít, znovu sestavit index a uložit. Vyhledávání mi hned začalo fungovat a fulltextově.
Když vstoupíte na stránku, jste nepřihlášený host. Pokud se vpravo nahoře přihlásíte jako admin, můžete v podstatě odkudkoliv upravovat a tvořit obsah. Tedy není nějaký speciální backend (který jsem původně hledal), ale po přihlášení se vám zobrazí editační nástroje a hlubší nastavení.
Je možnost vytvořit více účtů s několika vrstvami oprávnění nebo s oprávněním do konkrétních stránek, zatím jsem to ale nevyužil a píšu vše sám.
Wiki.js podporuje mnoho způsobů jak vytvořit obsah:

Já používám výhradně Markdown a rád mám během psaní při ruce Markdown cheatsheet. Ale začíná mi u některých témat vadit absence obrázků, které Markdown nepodporuje a tak asi opráším html a některé tyto stránky budu psát v "Raw HTML". Stávající stránky v Markdownu jde jednoduše převést na html a poté doplnit grafikou.
Veškerý obsah se ukládá do již zmíněné databáze. Pokud o ni přijdete, přijdete o všechen obsah. Je úplně zásadní zálohovat na jedno nebo vícero míst a Wiki.js má mnoho možností, jak to dělat.
Obsah na této wiki zálohuji pomocí Gitu na private repo na GitHub. Cokoliv se změní v obsahu zkrze rozhraní Wiki.js se v intervalu 5 minut samo zálohuje. Postupoval jsem podle zdejšího návodu a v podstatě všechno fungovalo hned vyjma pár bodů:
content místo pathKoukal jsem na GitHub co se tam vlastně nahrálo a nenašel jsem tam vedle samotného obsahu žádnou interní konfiguraci Wiki.js. Ta se tam zálohovat neumí a je potřeba po každé zásadní změně (nejčastější je asi přidání uživatelů, úprava jejich práv, úprava navigačního panelu vlevo) manuálně vyexportovat zálohu do souboru na disk.
Tu generuji manuálně takto:
1. ssh ADMIN-USERNAME@SERVER-IP-ADDRESS
2. sudo docker exec DB-CONTAINER-NAME pg_dump DB-NAME -U DB-USERNAME -F c > /full/path/to/backup/location/dump-name_YY-MM-DD.dump
3. exit