From 5d30625bead8ea567cb007305feea7660b1c28a9 Mon Sep 17 00:00:00 2001 From: Thomas Dannenberg Date: Thu, 16 Oct 2025 18:42:08 +0000 Subject: [PATCH] =?UTF-8?q?Kapitel=2014/Premium=20Rohtext.md=20hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kapitel 14/Premium Rohtext.md | 225 ++++++++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 Kapitel 14/Premium Rohtext.md diff --git a/Kapitel 14/Premium Rohtext.md b/Kapitel 14/Premium Rohtext.md new file mode 100644 index 0000000..10f8686 --- /dev/null +++ b/Kapitel 14/Premium Rohtext.md @@ -0,0 +1,225 @@ +# Premium – Wiki.js: Integration, Rollenverwaltung & Systemvernetzung + +Das Wiki ist im UCC die Schnittstelle zwischen Dokumentation, Quellcode und Dateiablage. +Im Free-Kapitel wurde die Basis gelegt: ein stabiler Container mit HTTPS-Zugriff. +Dieser Premium-Teil erweitert die Installation zu einem vollständig integrierten System, das Gitea-Repositories, Nextcloud-Dateien und gemeinsame Benutzeranmeldungen vereint. + +Ziel ist ein zentrales Informationssystem, das dieselben Konten, Zugriffsrechte und Datenquellen wie der Rest deiner Infrastruktur verwendet. + +👉 **Screenshot geeignet:** Architekturübersicht mit Verbindungslinien zwischen Wiki.js, Gitea und Nextcloud + +--- + +## Benutzer- und Rollenverwaltung + +Ein sauberes Rechtekonzept ist Grundlage jeder Zusammenarbeit. +Wiki.js unterscheidet Benutzer, Gruppen und Policies. Die Rollen werden zentral in der Administrationsoberfläche gepflegt. + +### Gruppenstruktur aufbauen + +1. **Administration → Sicherheit → Benutzer & Gruppen** öffnen. +2. Neue Gruppen anlegen: + - `viewer` – Lesezugriff auf alle Seiten + - `editor` – Bearbeiten und Erstellen + - `maintainer` – Vollzugriff auf Inhalte und Struktur +3. Für neue Konten die Standardrolle `viewer` setzen. + +### Richtlinien (Policies) + +Unter **Administration → Inhalte → Zugriffsregeln** legst du gezielte Policies an. +Beispiel: Git-importierte Doku nur für Editoren bearbeitbar. + +| Bereich | viewer | editor | maintainer | +|----------|--------|--------|-------------| +| `docs/**` | Lesen | Lesen/Schreiben | Vollzugriff | + +> [!NOTE] +> Policies werden von oben nach unten geprüft – spezifische Regeln müssen vor globalen stehen. + +--- + +## Gitea-Integration + +Wiki.js kann Git-Repositories als Datenquelle einbinden. +Damit werden Markdown-Dateien aus Gitea automatisch als Wiki-Seiten dargestellt und bleiben versioniert. + +### Zugriffstoken erstellen + +Erzeuge in Gitea einen Token mit Leserechten: + +```bash +docker exec -it gitea \ + gitea admin user generate-access-token \ + --username admin \ + --scope read:repository \ + --token-name wiki-sync +``` + +Token in Vaultwarden speichern und kurz prüfen: + +```bash +curl -H "Authorization: token " https://git.deinedomain.tld/api/v1/user +``` + +### Git-Quelle anlegen + +1. In Wiki.js **Administration → Speicher → Neue Quelle** +2. Typ: **Git Repository** +3. Felder: + +| Feld | Wert | +|------|------| +| Name | `Bratonien Tutorials` | +| URL | `https://git.deinedomain.tld/admin/tutorials.git` | +| Branch | `main` | +| Authentifizierung | Personal Access Token | +| Token | `` | + +4. Speichern und **Synchronisierung starten** + +Wiki.js liest jetzt alle Markdown-Dateien ein. +Für manuelles Nachladen: + +```bash +docker exec -it wikijs node tools/sync.js +``` + +> [!TIP] +> Regelmäßige Synchronisierung über Cron: +> ```bash +> */10 * * * * docker exec wikijs node /wiki/tools/sync.js >/dev/null 2>&1 +> ``` + +--- + +## Nextcloud-Integration + +Nextcloud dient als zentraler Speicher für Medien, PDFs oder Anhänge. +Über WebDAV bindet Wiki.js diese Dateien direkt ein, ohne sie zu kopieren. + +### WebDAV-Zugang vorbereiten + +1. In Nextcloud ein App-Passwort erzeugen (Profil → Sicherheit → Geräte & Sitzungen). +2. Verzeichnisstruktur anlegen, z. B. `/Dokumente/Wiki`. + +### Verbindung in Wiki.js + +**Administration → Integrationen → Storage → Neue Quelle → WebDAV** + +| Feld | Wert | +|------|------| +| URL | `https://cloud.deinedomain.tld/remote.php/webdav/` | +| Benutzer | `wiki-sync` | +| Passwort | App-Passwort | +| Basisverzeichnis | `/Dokumente/Wiki` | + +Testen und speichern. +Dateien können anschließend per Markdown-Link verwendet werden: + +```markdown +![UCC-Diagramm](https://cloud.deinedomain.tld/remote.php/webdav/Dokumente/Wiki/UCC-Diagramm.png) +``` + +> [!NOTE] +> Wiki.js cached WebDAV-Inhalte, um Ladezeiten zu verringern. Änderungen werden beim nächsten Seitenaufruf eingelesen. + +--- + +## Zentrale Anmeldung (SSO via Gitea OAuth2) + +Um doppelte Konten zu vermeiden, kann Wiki.js Gitea als Authentifizierungsquelle nutzen. + +### OAuth2-Provider in Gitea + +1. **Site Administration → Applications → OAuth2 Provider → New OAuth2 Application** +2. Werte: + - Name: `Wiki.js Login` + - Redirect URI: `https://wiki.deinedomain.tld/login/gitea/callback` +3. **Client ID** und **Client Secret** notieren. + +### OAuth2 in Wiki.js aktivieren + +**Administration → Authentifizierung → Neue Strategie → OAuth2** + +| Feld | Wert | +|------|------| +| Name | `Gitea` | +| Authorization Endpoint | `https://git.deinedomain.tld/login/oauth/authorize` | +| Token Endpoint | `https://git.deinedomain.tld/login/oauth/access_token` | +| User Info Endpoint | `https://git.deinedomain.tld/api/v1/user` | +| Client ID / Secret | aus Gitea | +| Scope | `user:email` | +| Default Role | `viewer` | + +Nach dem Speichern erscheint im Login-Fenster der Button **Mit Gitea anmelden**. + +> [!TIP] +> Rollen werden weiterhin in Wiki.js zugewiesen. +> SSO ersetzt nur den Anmeldevorgang, nicht die Rechteverwaltung. + +--- + +## Automatische Aktualisierung + +Damit Wiki.js Änderungen aus deinem Git-Repository zuverlässig einliest, muss der Datenabgleich regelmäßig gestartet werden. +Die grafische Automatik im Wiki funktioniert nur bei GitHub oder GitLab – **nicht bei selbst gehosteten Gitea-Instanzen**. +Für dein eigenes System richtest du deshalb eine einfache, stabile Lösung direkt im Container ein. + +### Warum das nötig ist + +Wiki.js speichert Inhalte nicht dauerhaft aus dem Repository, sondern zieht sie bei Bedarf. +Wenn du also Tutorials oder Dokumente in Gitea änderst, merkt das Wiki davon nichts, bis ein neuer Abgleich stattfindet. +Damit du das nicht jedes Mal manuell klicken musst, erledigt ein kleiner Zeitplaner diese Aufgabe automatisch. + +### Automatische Synchronisierung einrichten + +1. Öffne im **Proxmox-Webinterface** die Konsole deines Wiki-LXC. +2. Starte den Editor für geplante Aufgaben: + ```bash + crontab -e + ``` +3. Trage unten folgende Zeile ein und speichere: + ```bash + */15 * * * * docker exec wikijs node /wiki/tools/sync.js >/dev/null 2>&1 + ``` + Das bedeutet: Alle 15 Minuten ruft der Container intern den Sync-Befehl auf. + Neue oder geänderte Dateien aus Gitea werden automatisch eingelesen. + +> [!TIP] +> Wenn du gerade an Inhalten arbeitest, kannst du das Intervall auch auf `*/5` (alle 5 Minuten) stellen. +> Für den Dauerbetrieb sind 15 – 30 Minuten optimal. + +4. Prüfen, ob es funktioniert: + ```bash + docker logs wikijs | tail -n 20 + ``` + Wenn dort Einträge wie `Git sync completed` erscheinen, läuft der Abgleich erfolgreich. + +👉 **Screenshot geeignet:** Proxmox-Konsole mit sichtbarem Cronjob-Eintrag und Wiki.js-Logausgabe + +### Manuelle Aktualisierung (zusätzlich möglich) + +Falls du sofort nach einer Änderung synchronisieren möchtest: +```bash +docker exec wikijs node /wiki/tools/sync.js +``` +Das kannst du jederzeit über die Proxmox-Konsole ausführen. + +> [!NOTE] +> Beide Varianten greifen direkt auf dieselbe Routine zu. +> Der Cronjob sorgt nur dafür, dass du es nicht ständig manuell machen musst. + +--- + +## Ergebnis + +Nach dieser Integration arbeitet Wiki.js als zentraler Knoten deines UCC-Ökosystems: + +- Zugriff und Authentifizierung über Gitea (ein Login für alle Systeme) +- Markdown-Daten direkt aus Repositories synchronisiert +- Medien aus Nextcloud eingebunden +- Einheitliche Rollen und Rechte über Policies +- Automatische Aktualisierung bei Git-Änderungen + +Damit wird das Wiki zum dokumentarischen Backbone des gesamten UCC: +einheitlich, versioniert, sicher und vollständig selbst gehostet. \ No newline at end of file