Files
Homelab--Bratonein-Kontroll…/Kapitel 16/Tutorial.md

5.6 KiB
Raw Blame History

📝 Kapitel 16 Wiki (Self-Hosted mit Wiki.js)


🎯 Ziel
Wir setzen Wiki.js im Debian12LXC mit Docker stabil und wiederholbar auf.
Am Ende: HTTPSZugriff ü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, 12 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 DockerRepo)

Warum: Die DebianPakete liefern kein zuverlässiges ComposePlugin. Wir binden das offizielle DockerRepository 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 HTTPSRepos 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

👉 DockerGPGSchlü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 + ComposePlugin 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 (DBDaten) 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

👉 LiveLogs helfen bei DBVerbindungsfehlern oder Startproblemen.


5 ReverseProxy 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: <LXC-IP> · Port: 3000
  4. Websockets aktivieren
  5. SSL: Neues Zertifikat (Lets Encrypt) → Force SSL, HTTP/2, HSTS aktivieren
  6. Speichern

👉 Test: https://wiki.deinedomain.tld im Browser aufrufen.


6 Erstkonfiguration in Wiki.js

  1. AdminBenutzer anlegen (Benutzername, Passwort, EMail)
  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/DBFehler → Werte in .env prüfen; Logs oben ansehen
  • IPv6Probleme → AAAARecord 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)