4.5 KiB
📝 Kapitel 16 – Wiki (Self-Hosted mit Wiki.js)
🎯 Ziel
Wir bauen ein eigenes Wiki mit Wiki.js.
Am Ende ist das Wiki über eine eigene Domain erreichbar, per HTTPS abgesichert und mit einem Admin-Account eingerichtet.
📖 Warum Wiki.js?
- ❌ Lose Textdateien sind schnell unübersichtlich
- ❌ Externe Tools bedeuten Abhängigkeit von Dritten
- ✅ Wiki.js ist modern, unterstützt Markdown, hat Rollen- und Rechteverwaltung
- ✅ Läuft vollständig im eigenen Homelab und ist auch offline erreichbar
✅ Voraussetzungen
- LXC-Container mit Debian 12 (Bookworm)
- Empfohlen: 1 vCPU, 1–2 GB RAM, ≥ 10 GB Speicher
- Domain/Subdomain (z. B.
wiki.deinedomain.tld) - Nginx Proxy Manager + DynDNS
- Internetzugang für den Container
1️⃣ Container vorbereiten
apt update && apt upgrade -y
👉 Wir bringen das System auf den neuesten Stand.
apt install -y curl ca-certificates gnupg lsb-release docker.io docker-compose-plugin
👉 Installation aller Werkzeuge, die für Docker-Container benötigt werden.
mkdir -p /srv/wiki
cd /srv/wiki
👉 Wir legen das Projektverzeichnis /srv/wiki an und wechseln hinein. Dort liegen später alle Dateien für das Wiki.
2️⃣ Projektdateien erstellen
.env
nano .env
👉 Mit nano öffnen wir eine neue Datei namens .env.
Kopiere den folgenden Inhalt hinein:
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
👉 Ersetze <STARKES-PASSWORT> durch ein sicheres Passwort.
Speichern: STRG+O, Enter. Beenden: STRG+X.
docker-compose.yaml
nano docker-compose.yaml
👉 Wir erstellen die Hauptdatei für die Container.
Trage den folgenden Inhalt ein:
version: "3.9"
services:
postgres:
image: postgres:15
container_name: wiki-postgres
restart: unless-stopped
env_file: .env
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
👉 Zwei Container: Postgres für die Datenbank und Wiki.js für das Webinterface.
Die Daten werden im Ordner data gespeichert.
Speichern und schließen wie oben.
3️⃣ Container starten und prüfen
docker compose up -d
👉 Startet beide Container im Hintergrund.
docker compose ps
👉 Listet die Container auf. Beide müssen Up anzeigen, Postgres nach kurzer Zeit healthy.
4️⃣ Proxy Host in Nginx Proxy Manager
- Im Browser Nginx Proxy Manager öffnen
- Neuer Proxy Host
- Domain:
wiki.deinedomain.tld - Forward Hostname/IP:
<LXC-IP> - Forward Port:
3000 - Websockets aktivieren
- Domain:
- SSL → Neues Zertifikat anfordern, „Force SSL“, „HTTP/2“ und „HSTS“ aktivieren
- Speichern
👉 Ab jetzt ist das Wiki über https://wiki.deinedomain.tld erreichbar.
5️⃣ Erstkonfiguration im Browser
Aufrufen:
https://wiki.deinedomain.tld
- Admin-Benutzer erstellen (Name, Passwort, E-Mail)
- Sprache: Deutsch
- Zeitzone: Europe/Berlin
- Registrierung: „Nur Einladung“ oder „Admin Approval“
- Erste Startseite anlegen
👉 Dein Wiki ist betriebsbereit.
⚠️ Fehlerbehebung
docker logs -f wikijs
docker logs -f wiki-postgres
👉 Mit diesen Befehlen siehst du die Logdateien.
- 502-Error → Container läuft nicht oder Websockets in NPM vergessen
- Setup hängt → Werte in
.envprüfen - IPv6-Probleme → AAAA-Record entfernen
- Uploads fehlen → Schreibrechte im
data-Ordner prüfen
✅ Ergebnis
- Wiki.js läuft in Docker (Debian 12 LXC)
- Zugriff über
https://wiki.deinedomain.tld - Admin-Benutzer erstellt und Registrierung gesichert
- Daten persistent gespeichert
➡️ Nächstes Kapitel: Netdata (Monitoring)