# 📝 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. ```bash apt update && apt upgrade -y apt install -y ca-certificates curl gnupg lsb-release ``` 👉 System aktualisieren, Grundpakete für HTTPS‑Repos und Schlüsselverwaltung. ```bash 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). ```bash 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. ```bash systemctl enable --now docker ``` 👉 Docker beim Start aktivieren und sofort starten. ```bash 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. ```bash nano .env ``` 👉 Datei öffnen, folgenden Inhalt einfügen, **** ersetzen, dann **STRG+O**, Enter, **STRG+X**: ```env TZ=Europe/Berlin POSTGRES_DB=wikidb POSTGRES_USER=wikijs POSTGRES_PASSWORD= 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. ```bash nano docker-compose.yaml ``` 👉 Inhalt einfügen → speichern (**STRG+O**) → schließen (**STRG+X**): ```yaml 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 ```bash docker compose up -d ``` 👉 Beide Container im Hintergrund starten. ```bash docker compose ps ``` 👉 Status prüfen: beide `Up`; `wiki-postgres` wird nach kurzer Zeit `healthy`. Logs bei Problemen: ```bash 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. 1. NPM öffnen → **Proxy Host hinzufügen** 2. **Domain**: `wiki.deinedomain.tld` 3. **Forward Host/IP**: `` · **Port**: `3000` 4. **Websockets aktivieren** 5. **SSL**: Neues Zertifikat (Let’s Encrypt) → **Force SSL**, **HTTP/2**, **HSTS** aktivieren 6. Speichern 👉 Test: `https://wiki.deinedomain.tld` im Browser aufrufen. --- ## 6️⃣ Erstkonfiguration in Wiki.js 1. Admin‑Benutzer anlegen (Benutzername, Passwort, E‑Mail) 2. Sprache **Deutsch**, Zeitzone **Europe/Berlin** setzen 3. Registrierung: **Nur Einladung** oder **Admin Approval** 4. 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 `.env` prüfen; Logs oben ansehen - **IPv6‑Probleme** → AAAA‑Record testweise entfernen - **Uploads fehlen** → Schreibrechte in `./data/wikijs` prü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)**