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

208 lines
5.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📝 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.
```bash
apt update && apt upgrade -y
apt install -y ca-certificates curl gnupg lsb-release
```
👉 System aktualisieren, Grundpakete für HTTPSRepos 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
```
👉 DockerGPGSchlü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 + ComposePlugin** 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, **<STARKES-PASSWORT>** ersetzen, dann **STRG+O**, Enter, **STRG+X**:
```env
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.
```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` (DBDaten) 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
```
👉 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)**