86 lines
4.5 KiB
Markdown
86 lines
4.5 KiB
Markdown
---
|
|
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**.
|