Files
management/docs/issues/0048-wikijs-in-der-suite-deployen.md
T

86 lines
4.5 KiB
Markdown
Raw Normal View History

---
type: issue
id: "0048"
status: done
created: 2026-08-12
milestone: M4
priority: medium
area: infrastructure
related: [docs/adr/0014-wikijs-loest-docusaurus-ab.md, docs/issues/0046-wiki-in-threadnet-server-suite-umziehen.md]
---
# Wiki.js in der ThreadNet Server Suite deployen (k8s + Postgres + Git-Storage)
## Problem / Motivation
ADR-0014: Wiki.js löst Docusaurus ab und wird Teil der ThreadNet Server Suite
(k8s), nicht mehr ein Overmind-Einzelstack. Braucht das Deployment plus den
Inhalts-Speicher.
## Acceptance
- Wiki.js läuft in der Suite (k8s): Deployment, **Postgres** (Rendern/Auth/Suche),
in die GitOps-Definition aufgenommen (Flux).
- **Öffentlich erreichbar unter `wiki.axion1337.chat`** (Entscheidung sorb
2026-08-12) — wie die übrigen Subdomains: A-Record → `49.13.132.245`,
cert-manager `Certificate` via ClusterIssuer `letsencrypt-prod`
(Secret `wiki-axion1337-chat-tls`), Traefik-`IngressRoute` `Host(wiki.axion1337.chat)`
→ Service `wikijs`:3000. Muster: `apps/authentik/ingress.yaml`. Kein
Forward-Auth/Outpost — Wiki.js loggt selbst via OIDC ein (#0049).
- **Neues `wiki`-Repo** auf git.lab angelegt (gespiegelt wie die übrigen), als
Wiki.js **Git-Storage** eingebunden (bidirektionaler Sync) — Inhalt liegt in git
(hartes Kriterium, ADR-0014).
- Grundstruktur für **Betrieb** und **Anwender** angelegt (zwei Bereiche);
`homelab/docs` ausdrücklich **nicht** eingebunden.
- Postgres ist gesichert (Backup), da git nur Inhalt, nicht den Laufzeit-Zustand
hält.
## Notes
Ersetzt den Forward-Auth-Zwischenstand auf Overmind (Guide 09, #0024). OIDC +
Rollen kommen in #0049, Theming in #0050. Umbrella: #0046.
## Update 2026-08-13 — Git-Storage-Architektur korrigiert (Widerspruch)
Deployment, Postgres, Ingress/Cert, öffentliche Erreichbarkeit, OIDC/Rollen (#0049)
und Theming (#0050) laufen live und reproduzierbar über den Konfig-Job.
**Offen ist nur der Git-Storage** — und die oben geforderte Fassung ist so **nicht
machbar**: „`wiki`-Repo auf git.lab, gespiegelt wie die übrigen, als Storage" setzt
voraus, dass Wiki.js git.lab erreicht. Tut es nicht — der Cluster erreicht bewusst
nur Gitea (verifiziert 2026-08-13). Auflösung in
[ADR-0015](../adr/0015-wiki-git-storage-ueber-gitea-kanonisieren.md): Wiki.js→Gitea
(`sorb/wiki`), CI kanonisiert Gitea→git.lab (Muster `canonize_rotation`).
Voraussetzung (nur sorb): Gitea-Repo `sorb/wiki` (privat) anlegen + dedizierten
Deploy-PAT bereitstellen. Danach verdrahtet der Agent Storage + Kanonisierungs-Job.
**Nachtrag 2026-08-13 (nachmittags):** Erledigt. Repo `sorb/ThreadNetWiki` + Deploy-PAT
(`wiki-git-storage-deploy`) angelegt; Git-Storage in Wiki.js verdrahtet (Secret
`wikijs-git-secret`), Status `operational`, End-to-End verifiziert (Seite anlegen/löschen
propagiert nach Gitea). Damit ist das harte Kriterium „Inhalt in git" erfüllt. Einziger
Rest: der **Kanonisierungs-Job Gitea→git.lab** — braucht die Entscheidung, in welches
git.lab-Repo kanonisiert wird.
**Nachtrag 2026-08-13 (abends):** Auch der Kanonisierungs-Job ist erledigt. Ziel-Repo
`git.lab/axion1337.chat/threadnet-wiki` (leer angelegt); `canonize_wiki` in der
gitops-CI (Tages-Schedule) spiegelt Gitea→git.lab per Fast-Forward (kein Force,
Protection bleibt; Token `WIKI_CANONIZE_TOKEN`, nur `write_repository`). Verifiziert:
git.lab main === Gitea main mit voller Historie. Damit ist die Git-Storage-Strecke aus
ADR-0015 komplett. Offen für #0048 bleibt nur noch die inhaltliche Grundstruktur
(Bereiche Betrieb/Anwender) — die entsteht mit dem ersten echten Inhalt.
**Nachtrag 2026-08-13 (spät):** Grundstruktur angelegt: `home`, `anwender/` (+ Erste
Schritte), `betrieb/` (+ Deployment) — liegt in git-storage (Gitea→git.lab). Abschottung
verifiziert: `wiki-anwender` liest nur `anwender/*` + `home`; `betrieb/*` fällt unter
Default-Deny (checkAccess: `match && !deny`). Damit sind alle Acceptance-Punkte erfüllt
**bis auf** das `wikijs-postgres`-Backup — es existiert (noch) keins. Inhaltlich
unkritisch (Inhalt liegt in git), aber Kommentare/lokale Konten/Suchindex wären bei
Postgres-Verlust weg. Entscheidung sorb offen: dediziertes Backup wie `synapse-backup`
anlegen, oder bewusst auf die git-Wiederherstellung setzen.
**Abschluss 2026-08-13:** `wikijs-backup` angelegt (nächtliches Borg-Backup der Wiki-DB,
03:30, DB-only nach dem `authentik-backup`-Muster; wiederverwendet
`synapse-backup-credentials`/`-known-hosts`, eigener Repo-Pfad `wikijs-backup`).
Testlauf grün: Borg-Repo initialisiert, DB gedumpt und hochgeladen, Retention 7/4/6.
Damit sind **alle** Acceptance-Punkte erfüllt → **erledigt**.