65 lines
3.7 KiB
Markdown
65 lines
3.7 KiB
Markdown
---
|
|||
|
|
type: wiki-page
|
||
|
|
area: architecture
|
||
|
|
related:
|
||
|
|
- "docs/adr/0001-gitlab-kanonisch-push-mirror.md"
|
||
|
|
- "docs/adr/0002-issues-und-management-ins-lab.md"
|
||
|
|
- "docs/adr/0004-site-to-site-vpn-hetzner-lab.md"
|
||
|
|
- "docs/adr/0006-wikis-konsolidieren-docusaurus.md"
|
||
|
|
---
|
||
|
|
|
||
|
|
# Mirror-Topologie: Das Lab ist die Quelle der Wahrheit
|
||
|
|
|
||
|
|
Begründungsprosa übernommen aus der alten `CLAUDE.md` (Abschnitt
|
||
|
|
„Projektrealitäten", Wortlaut in der git-Historie vor der
|
||
|
|
neckbeard-Migration); die verbindlichen Regeln stehen in `AGENTS.md` §6
|
||
|
|
und den verlinkten ADRs. Erhalten per Feldtest-Befund F-013: Diese
|
||
|
|
Begründung samt Gegenargument und Rettungspfad ist der Wert — sie
|
||
|
|
erklärt, warum die Topologie so aussieht und so bleiben soll.
|
||
|
|
|
||
|
|
- Kanonische Repos liegen auf `git.lab/axion1337.chat/*` (nur im
|
||
|
|
Lab/VPN auflösbar). Gitea/rohana wird per **Push-Mirror** beliefert
|
||
|
|
und bleibt Flux-Source, Container-/npm-Registry und Release-Download
|
||
|
|
([ADR-0001](../../adr/0001-gitlab-kanonisch-push-mirror.md)).
|
||
|
|
- **Warum überhaupt zwei Orte — und warum das kein Altbestand ist:**
|
||
|
|
Auf git.lab liegen die *Baupläne*, auf Gitea eine Kopie, die der
|
||
|
|
Cluster **ohne verfügbares Lab** erreicht. Der Hetzner-Cluster muss
|
||
|
|
sich bauen und neu ausrollen lassen, wenn das Homelab aus ist, im
|
||
|
|
Umbau steckt oder niemand zu Hause ist — er darf deshalb nicht von
|
||
|
|
einem Host abhängen, der nur im Lab antwortet.
|
||
|
|
⚠️ **Die Flux-Quelle nicht „geradeziehen"** auf git.lab: Das sähe
|
||
|
|
aufgeräumter aus und würde die Verfügbarkeit der Produktion an das
|
||
|
|
Lab koppeln — genau das, was die Trennung verhindert.
|
||
|
|
- **Gespiegelt wird nur die Gruppe `axion1337.chat`** (die Produkt-Repos
|
||
|
|
und `management`). Die Gruppe **`homelab`** (`docs`, `wiki`,
|
||
|
|
`wiki-bookstack`) hat bewusst **keine Mirrors**: Sie beschreibt und
|
||
|
|
konfiguriert ausschließlich Lab-Infrastruktur, und seit dem
|
||
|
|
Site-to-Site-VPN ([ADR-0004](../../adr/0004-site-to-site-vpn-hetzner-lab.md))
|
||
|
|
erreichen auch Host-Sessions git.lab direkt — Tunnel einschalten
|
||
|
|
genügt. Betriebslehren, die von außen lesbar sein müssen, gehören
|
||
|
|
deshalb in die **AARs** unter `docs/aar/` (dieses Repo ist
|
||
|
|
gespiegelt), nicht nur in die READMEs der Lab-Repos.
|
||
|
|
- Landet doch ein Commit auf Gitea (z. B. aus einer Host-Session ohne
|
||
|
|
Lab-Route): **Kanonisierungs-Verfahren** in
|
||
|
|
[deploy-uebergabe](../deployment/deploy-uebergabe.md) — `.patch` von
|
||
|
|
Gitea ziehen, `git am` (erhält Autorschaft), Push über git.lab.
|
||
|
|
- ⚠️ gitops-Issue-Nummern haben sich beim Gitea-Umzug verschoben (Gitea
|
||
|
|
zählte PRs mit; z. B. Gitea#48 → GitLab#46) — alte „gitops#N"-Verweise
|
||
|
|
meinen die Gitea-Nummer; verbindlich ist der Migrations-Fußtext im
|
||
|
|
Issue ([ADR-0002](../../adr/0002-issues-und-management-ins-lab.md)).
|
||
|
|
- **Ausnahme** (bewusst entschieden, nur noch eine): der
|
||
|
|
TURN-Rotations-CronJob schreibt weiter nach Gitea, weil er im Cluster
|
||
|
|
läuft und git.lab nicht erreicht. **Die Rotation nicht von Hand
|
||
|
|
nachziehen und den PR nie auf Gitea mergen** — das erledigt seit
|
||
|
|
2026-08-02 der geplante CI-Job `canonize_rotation` im gitops-Repo
|
||
|
|
täglich von git.lab aus. Scheitert er, bleibt die Pipeline rot; diese
|
||
|
|
rote Pipeline **ist** der Alarm, einen zusätzlichen Termin gibt es
|
||
|
|
bewusst nicht.
|
||
|
|
- **Dokumentation** ([ADR-0006](../../adr/0006-wikis-konsolidieren-docusaurus.md)):
|
||
|
|
Das gitops-Wiki liegt seit 2026-08-02 auf git.lab (*Wiki*-Reiter im
|
||
|
|
Projekt); ⚠️ der `wiki`-**Branch** im gitops-Repo ist ein überholter
|
||
|
|
Mai-Abzug von `docs/` und nicht die gepflegte Fassung. Alle Quellen
|
||
|
|
zusammen erscheinen unter **axionwiki.lab**
|
||
|
|
([`homelab/wiki`](https://git.lab/homelab/wiki), Docusaurus) —
|
||
|
|
Inhalte werden beim Bau geholt, **Änderungen gehören ins Quell-Repo**.
|