4.5 KiB
type, id, status, created, milestone, priority, area, related
| type | id | status | created | milestone | priority | area | related | ||
|---|---|---|---|---|---|---|---|---|---|
| issue | 0048 | done | 2026-08-12 | M4 | medium | infrastructure |
|
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-managerCertificatevia ClusterIssuerletsencrypt-prod(Secretwiki-axion1337-chat-tls), Traefik-IngressRouteHost(wiki.axion1337.chat)→ Servicewikijs: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/docsausdrü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: 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.