5.6 KiB
📝 Kapitel 16 – Wiki (Self-Hosted mit Wiki.js)
🎯 Ziel
Wir setzen Wiki.js im Debian‑12‑LXC mit Docker stabil und wiederholbar auf.
Am Ende: HTTPS‑Zugriff über Subdomain, Admin angelegt, Registrierung abgesichert.
📖 Warum Wiki.js?
- ✅ Moderne Weboberfläche, Markdown, Suche
- ✅ Rechte/Rollen, volle Datenhoheit im Homelab
- ✅ Leichtgewichtig per Docker betreibbar
✅ Voraussetzungen
- Debian 12 LXC, 1 vCPU, 1–2 GB RAM, ≥ 10 GB Speicher
- Domain/Subdomain (z. B.
wiki.deinedomain.tld) - Nginx Proxy Manager + DynDNS
- Internetzugang im LXC
1️⃣ System & Docker (stabile Variante über das offizielle Docker‑Repo)
Warum: Die Debian‑Pakete liefern kein zuverlässiges Compose‑Plugin. Wir binden das offizielle Docker‑Repository ein und installieren Docker + Compose einmal richtig.
apt update && apt upgrade -y
apt install -y ca-certificates curl gnupg lsb-release
👉 System aktualisieren, Grundpakete für HTTPS‑Repos und Schlüsselverwaltung.
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
👉 Docker‑GPG‑Schlüssel ablegen (benötigt für verifizierte Pakete).
ARCH=$(dpkg --print-architecture)
CODENAME=$(lsb_release -cs)
echo "deb [arch=${ARCH} signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian ${CODENAME} stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
👉 Repo einbinden, Paketquellen aktualisieren, Docker + Compose‑Plugin installieren.
systemctl enable --now docker
👉 Docker beim Start aktivieren und sofort starten.
mkdir -p /srv/wiki
cd /srv/wiki
👉 Projektordner anlegen und hineingehen – hier liegt alles zum Wiki.
2️⃣ Umgebungsdatei .env erstellen
Warum: Zugangsdaten und wiederverwendbare Einstellungen zentral halten.
nano .env
👉 Datei öffnen, folgenden Inhalt einfügen, ersetzen, dann STRG+O, Enter, STRG+X:
TZ=Europe/Berlin
POSTGRES_DB=wikidb
POSTGRES_USER=wikijs
POSTGRES_PASSWORD=<STARKES-PASSWORT>
WIKI_DB_HOST=postgres
WIKI_DB_PORT=5432
WIKI_DB_USER=${POSTGRES_USER}
WIKI_DB_PASS=${POSTGRES_PASSWORD}
WIKI_DB_NAME=${POSTGRES_DB}
WIKI_PORT=3000
3️⃣ docker-compose.yaml schreiben
Warum: Definiert die beiden Dienste (Datenbank + Wiki) samt Persistenz und Startreihenfolge.
nano docker-compose.yaml
👉 Inhalt einfügen → speichern (STRG+O) → schließen (STRG+X):
version: "3.9"
services:
postgres:
image: postgres:15
container_name: wiki-postgres
restart: unless-stopped
env_file: .env
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
TZ: ${TZ}
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 10
wikijs:
image: requarks/wiki:2
container_name: wikijs
depends_on:
postgres:
condition: service_healthy
restart: unless-stopped
env_file: .env
environment:
DB_TYPE: postgres
DB_HOST: ${WIKI_DB_HOST}
DB_PORT: ${WIKI_DB_PORT}
DB_USER: ${WIKI_DB_USER}
DB_PASS: ${WIKI_DB_PASS}
DB_NAME: ${WIKI_DB_NAME}
TZ: ${TZ}
ports:
- "3000:${WIKI_PORT}"
volumes:
- ./data/wikijs:/var/wiki
👉 Persistenz: ./data/postgres (DB‑Daten) und ./data/wikijs (Uploads/Cache). Healthcheck sorgt für korrekte Startreihenfolge.
4️⃣ Start & Status prüfen
docker compose up -d
👉 Beide Container im Hintergrund starten.
docker compose ps
👉 Status prüfen: beide Up; wiki-postgres wird nach kurzer Zeit healthy.
Logs bei Problemen:
docker logs -f wikijs
# in neuem Terminal/Fenster ggf. zusätzlich:
docker logs -f wiki-postgres
👉 Live‑Logs helfen bei DB‑Verbindungsfehlern oder Startproblemen.
5️⃣ Reverse‑Proxy im Nginx Proxy Manager
Warum: Öffentlich per Domain & HTTPS erreichbar machen.
- NPM öffnen → Proxy Host hinzufügen
- Domain:
wiki.deinedomain.tld - Forward Host/IP:
<LXC-IP>· Port:3000 - Websockets aktivieren
- SSL: Neues Zertifikat (Let’s Encrypt) → Force SSL, HTTP/2, HSTS aktivieren
- Speichern
👉 Test: https://wiki.deinedomain.tld im Browser aufrufen.
6️⃣ Erstkonfiguration in Wiki.js
- Admin‑Benutzer anlegen (Benutzername, Passwort, E‑Mail)
- Sprache Deutsch, Zeitzone Europe/Berlin setzen
- Registrierung: Nur Einladung oder Admin Approval
- Erste Startseite anlegen (Projektübersicht)
👉 Danach ist das Wiki einsatzbereit.
⚠️ Fehlerbehebung (kurz & präzise)
- 502 via NPM → Container laufen? Port 3000 korrekt? Websockets an?
- Setup hängt/DB‑Fehler → Werte in
.envprüfen; Logs oben ansehen - IPv6‑Probleme → AAAA‑Record testweise entfernen
- Uploads fehlen → Schreibrechte in
./data/wikijsprüfen
✅ Ergebnis
- Wiki.js läuft stabil in Docker (Debian 12 LXC)
- Zugriff:
https://wiki.deinedomain.tld(HTTPS) - Admin angelegt, Registrierung eingeschränkt
- Daten persistent gespeichert
➡️ Nächstes Kapitel: Netdata (Monitoring)