Files
management/analysis/data/claims.tsv
T
Thore Cimbal b8b853163d analysis: add deterministic inventory scripts and raw data
run_all.sh reproduces every file under analysis/data/ from zero: it
clones the in-scope components if missing, exports group issue metadata
from git.lab, and regenerates the inventories. Reruns are diff-clean --
no wall-clock time enters an output; 'days since' is measured against
the management repo's HEAD date.

The management repo is inventoried at main, not at the analysis branch,
so this analysis does not observe its own commits. inv_repo.py aborts
the run if anything outside analysis/ was modified.
2026-08-09 12:00:00 +00:00

119 KiB

1pathlinetriggersin_code_blockdoc_last_commit_datedoc_days_since_changeclaim_text
2.gitlab/issue_templates/Deploy-Übergabe.md14component-refno2026-08-027Beispiel: axion1337.chat/threadnet-operating @ main, b6007c5 -->
3.gitlab/issue_templates/Deploy-Übergabe.md67statusno2026-08-027Datensammlung und Zustellung getrennt scharf zu schalten ist fast immer
4.gitlab/issue_templates/Deploy-Übergabe.md75statusno2026-08-027## Bewusst offen gelassen
5CLAUDE.md1status;mirror-topologyno2026-08-090# CLAUDE.md — übergreifende Arbeitskonventionen (kanonisch)
6CLAUDE.md4component-refno2026-08-090Gruppe (axion1337.chat-Stack, ThreadNet-Repos, CFGMON/threadnet-operating,
7CLAUDE.md10component-ref;path-claim;mirror-topologyno2026-08-090> Push-Mirror unter `https://rohana.axion1337.de/sorb/management` von überall
8CLAUDE.md11statusno2026-08-090> **lesbar** — dort diese Datei und die ADRs nachschlagen. Nur pushen ist tabu.
9CLAUDE.md18date-claimno2026-08-090## Projektrealitäten (Stand 2026-08-01)
10CLAUDE.md20component-refno2026-08-090**Das Lab ist die Quelle der Wahrheit** ([ADR-0002](decisions/0002-issues-und-management-ins-lab.md)):
11CLAUDE.md22path-claimno2026-08-090- Kanonische Repos liegen auf `git.lab/axion1337.chat/*` (nur im Lab/VPN
12CLAUDE.md23mirror-topologyno2026-08-090auflösbar). Gitea/rohana wird per **Push-Mirror** beliefert und bleibt
13CLAUDE.md24mirror-topologyno2026-08-090Flux-Source, Container-/npm-Registry und Release-Download
14CLAUDE.md25status;mirror-topologyno2026-08-090([ADR-0001](decisions/0001-gitlab-kanonisch-push-mirror.md)).
15CLAUDE.md27mirror-topologyno2026-08-090liegen die *Baupläne*, auf Gitea eine Kopie, die der Cluster **ohne verfügbares
16CLAUDE.md34mirror-topologyno2026-08-090- **Nie direkt zu Gitea pushen** (gespiegelte Repos) — der Mirror überschreibt
17CLAUDE.md36count;mirror-topologyno2026-08-090- **Gespiegelt wird nur die Gruppe `axion1337.chat`** (die fünf Produkt-Repos und
18CLAUDE.md37component-refno2026-08-090`management`). Die Gruppe **`homelab`** (`docs`, `wiki`, `wiki-bookstack`) hat
19CLAUDE.md43path-claim;mirror-topologyno2026-08-090`verfahren/aar/` (dieses Repo ist gespiegelt), nicht nur in die READMEs der
20CLAUDE.md45count;mirror-topologyno2026-08-090- Landet doch ein Commit auf Gitea (z. B. aus einer Host-Session ohne Lab-Route):
21CLAUDE.md48mirror-topologyno2026-08-090von Gitea ziehen, `git am` (erhält Autorschaft), Push über git.lab.
22CLAUDE.md49status;mirror-topologyno2026-08-090- **Issues leben auf git.lab.** Die alten Gitea-Issues sind geschlossen und
23CLAUDE.md52mirror-topologyno2026-08-090meinen die Gitea-Nummer; verbindlich ist der Migrations-Fußtext im Issue.
24CLAUDE.md54mirror-topologyno2026-08-090TURN-Rotations-CronJob schreibt weiter nach Gitea, weil er im Cluster läuft und
25CLAUDE.md56mirror-topologyno2026-08-090**Die Rotation nicht von Hand nachziehen und den PR nie auf Gitea mergen** —
26CLAUDE.md57status;date-claimno2026-08-090das erledigt seit 2026-08-02 der geplante CI-Job `canonize_rotation` im
27CLAUDE.md58statusno2026-08-090gitops-Repo täglich von git.lab aus. Scheitert er, bleibt die Pipeline rot;
28CLAUDE.md62date-claimno2026-08-090Das gitops-Wiki liegt seit 2026-08-02 auf git.lab (*Wiki*-Reiter im Projekt);
29CLAUDE.md63path-claimno2026-08-090⚠️ der `wiki`-**Branch** im gitops-Repo ist ein überholter Mai-Abzug von `docs/`
30CLAUDE.md65path-claimno2026-08-090**axionwiki.lab** ([`homelab/wiki`](https://git.lab/homelab/wiki), Docusaurus) —
31CLAUDE.md72component-ref;countno2026-08-090- **Alles Offene ist ein Issue** — host-/infra-Scope hier im management-Projekt
32CLAUDE.md73issue-refno2026-08-090(`host:`-Labels, alte IDs wie `CFGMON-01` bleiben im Titel), Projekt-Scope im
33CLAUDE.md74path-claimno2026-08-090jeweiligen Projekt. Kein neues Backlog-Markdown anlegen; `hosts/`/`shared/`
34CLAUDE.md90path-claimno2026-08-090- **Der Titel trägt keine Priorität.** Präfixe wie `[HIGH]`/`[MEDIUM]`/`[LOW]`
35CLAUDE.md92issue-refno2026-08-090Alte Kennungen wie `CFGMON-01` bleiben, die benennen den Gegenstand, nicht die
36CLAUDE.md94count;mirror-topologyno2026-08-090⚠️ Der Grund ist keine Ästhetik: Aus der Gitea-Migration trugen 34 Issues ein
37CLAUDE.md97statusno2026-08-090über dieselbe Sache sind schlimmer als eine unvollständige. Bereinigt 2026-08-06.
38CLAUDE.md101countno2026-08-090einzahlt**. Ein Issue ohne Meilenstein taucht in keiner Roadmap-Ansicht auf und
39CLAUDE.md112path-claimno2026-08-090`~/.config/gitlab-lab/token`) oder maskierte CI-Variablen.
40CLAUDE.md116date-claimno2026-08-090## Commit-Konventionen (seit 2026-08-07)
41CLAUDE.md136count;date-claimno2026-08-090📎 Die Umstellung der Alt-Historie am 2026-08-07 hat 251 Commits neue SHAs
42CLAUDE.md138path-claimno2026-08-090[`shared/commit-zuordnung-2026-08-07.md`](shared/commit-zuordnung-2026-08-07.md)
43CLAUDE.md146mirror-topologyno2026-08-090öffentlichen Gitea-Spiegel. Wer daraus wirklich keine Muster ableitbar haben
44CLAUDE.md151statusno2026-08-090- **Aussagen mit Quelle:** Verifiziert (Messung/Konsole) klar von Vermutung
45README.md1component-refno2026-08-027# management
46README.md8date-claimno2026-08-027*(Bis 2026-08-01 hieß dieses Repo `Backlogs` und führte offene Punkte als
47README.md11date-claimno2026-08-027## Repo-Topologie (seit 2026-08-01)
48README.md13component-ref;status;path-claim;mirror-topologyno2026-08-027**Kanonisch lebt dieses Repo auf `git.lab`** (`axion1337.chat/management`, nur im
49README.md15component-refno2026-08-027[ADR-0002](decisions/0002-issues-und-management-ins-lab.md)).
50README.md16component-ref;path-claim;mirror-topologyno2026-08-027`rohana.axion1337.de/sorb/management` ist ein **Push-Mirror**: git.lab
51README.md17mirror-topologyno2026-08-027überschreibt ihn bei jedem Push per Force. Deshalb **nie direkt zu Gitea
52README.md18mirror-topologyno2026-08-027pushen** — solche Commits gehen beim nächsten Mirror-Lauf verloren (Rettung:
53README.md19mirror-topologyno2026-08-027`.patch` von Gitea ziehen + `git am`, siehe
54README.md22date-claimno2026-08-027**Keine Ausnahmen mehr.** Die **Deploy-Übergabe-Issues** liefen bis 2026-08-02 auf
55README.md23mirror-topologyno2026-08-027dem Gitea-Tracker, weil Hosts außerhalb des Labs `git.lab` nicht erreichten. Mit dem
56README.md25statusno2026-08-027Grund entfallen — bei eingeschaltetem Tunnel erreicht CFGMON git.lab. Sie sind
57README.md26status;mirror-topology;issue-refno2026-08-027umgezogen (LABNET-03), der Gitea-Tracker ist leer, die Vorlage liegt als
58README.md33path-claimno2026-08-027| [`CLAUDE.md`](CLAUDE.md) | **Kanonische Arbeitskonventionen für alle Agenten-Sessions** (Topologie, Framework, Secrets, Karpathy-Guidelines) |
59README.md34path-claimno2026-08-027| `vision/` | Eine Vision je Linie: Community (axion1337.chat), Tool (ThreadNet), Plattform (Homelab) |
60README.md35path-claimno2026-08-027| `roadmap.md` | Linien, Meilenstein-Kandidaten, Kadenz — GitLab-Milestones halten den Stand |
61README.md36path-claimno2026-08-027| `decisions/` | ADRs — Pflicht bei Architekturentscheidungen **und dauerhaften Ausnahmen** |
62README.md37path-claimno2026-08-027| `verfahren/` | Wie wir arbeiten: [Deploy-Übergabe/DoD](verfahren/deploy-uebergabe.md), [Refinement & Retro](verfahren/refinement.md), [AARs](verfahren/aar/), Werkzeuge |
63README.md38path-claimno2026-08-027| `hosts/`, `shared/` | **Bestand + Historie** je Host/Thema — u. a. [Branding](shared/branding.md) (Marke, Paletten, wo welches Theme eingestellt ist); offene Punkte sind Issues |
64README.md43path-claimno2026-08-027[`homelab/wiki`](https://git.lab/homelab/wiki)). **Geändert wird immer hier, nie dort.**
65README.md48issue-refno2026-08-027`host:`-Labels; die alten IDs wie `CFGMON-01` bleiben im Titel) bzw. in den
66README.md64issue-refno2026-08-027**IDs** (`CFGMON-01`, `ZONE-01`, …) werden **nie wiederverwendet**; sie leben in
67README.md72statusno2026-08-027**Erledigtes und Verworfenes** bleibt sichtbar: Issues werden geschlossen (nicht
68README.md78component-refno2026-08-027Konfiguration lebt in den Projekt-Repos (z. B. `threadnet-operating` für den
69decisions/0001-gitlab-kanonisch-push-mirror.md1status;mirror-topologyno2026-08-018# 0001 — git.lab ist kanonisch, Gitea wird per Push-Mirror beliefert
70decisions/0001-gitlab-kanonisch-push-mirror.md8mirror-topologyno2026-08-0183,7-GiB-Host) und Gitea Actions zeigte mehrere echte Bugs. Das Homelab-GitLab
71decisions/0001-gitlab-kanonisch-push-mirror.md14path-claim;mirror-topologyno2026-08-018`git.lab/axion1337.chat/*` ist die kanonische Heimat aller Repos; Gitea/rohana
72decisions/0001-gitlab-kanonisch-push-mirror.md15mirror-topologyno2026-08-018wird über Push-Mirrors beliefert und bleibt Flux-Source, Container-Registry,
73decisions/0001-gitlab-kanonisch-push-mirror.md16mirror-topologyno2026-08-018npm-Registry und Release-Download. **Direkte Pushes zu Gitea sind für gespiegelte
74decisions/0001-gitlab-kanonisch-push-mirror.md17mirror-topologyno2026-08-018Repos verboten** — der Mirror überschreibt divergenten Stand per Force.
75decisions/0001-gitlab-kanonisch-push-mirror.md22mirror-topologyno2026-08-018- Commits, die doch auf Gitea landen (z. B. Cluster-CronJobs ohne Lab-Route),
76decisions/0001-gitlab-kanonisch-push-mirror.md23path-claimno2026-08-018brauchen das Kanonisierungs-Verfahren (`verfahren/deploy-uebergabe.md`):
77decisions/0001-gitlab-kanonisch-push-mirror.md24statusno2026-08-018`.patch` ziehen, `git am`, Push über git.lab. Zweimal live gebraucht.
78decisions/0001-gitlab-kanonisch-push-mirror.md29issue-refno2026-08-018- CFGMON-CI aufrüsten (Swap/Limits): strukturell zu klein, verworfen mit CFGMON-10.
79decisions/0002-issues-und-management-ins-lab.md8mirror-topologyno2026-08-027weiter auf Gitea — zwei Wahrheiten, driftgefährdet. Erreichbarkeits-Blocker
80decisions/0002-issues-und-management-ins-lab.md9date-claim;issue-refno2026-08-027LABNET-01 (WireGuard-Roadwarrior) wurde am 2026-08-01 gelöst.
81decisions/0002-issues-und-management-ins-lab.md13status;mirror-topologyno2026-08-027Alle Projekt-Issues leben auf git.lab (62 migriert, Gitea-Issues geschlossen mit
82decisions/0002-issues-und-management-ins-lab.md14component-ref;path-claimno2026-08-027Verweis); das Backlogs-Repo zieht als `axion1337.chat/management` ins Lab
83decisions/0002-issues-und-management-ins-lab.md15component-ref;path-claim;mirror-topologyno2026-08-027(Push-Mirror → `sorb/management` auf Gitea). Das Lab ist die Quelle der Wahrheit.
84decisions/0002-issues-und-management-ins-lab.md19mirror-topologyno2026-08-027- ⚠️ gitops-Issue-Nummern haben sich verschoben (Gitea zählte PRs mit); die
85decisions/0002-issues-und-management-ins-lab.md21mirror-topologyno2026-08-027- ~~**Befristete Ausnahme:** Deploy-Übergabe-Issues laufen auf dem Gitea-Tracker
86decisions/0002-issues-und-management-ins-lab.md22component-ref;path-claimno2026-08-027von `sorb/management`, weil CFGMON git.lab (noch) nicht erreicht.~~
87decisions/0002-issues-und-management-ins-lab.md23component-ref;date-claim;issue-refno2026-08-027✅ **Zurückgebaut am 2026-08-02** (LABNET-03, [#13](https://git.lab/axion1337.chat/management/-/issues/13)):
88decisions/0002-issues-und-management-ins-lab.md25component-ref;issue-refno2026-08-027sind nach git.lab gewandert ([#25](https://git.lab/axion1337.chat/management/-/issues/25),
89decisions/0002-issues-und-management-ins-lab.md26component-ref;mirror-topology;issue-refno2026-08-027[#26](https://git.lab/axion1337.chat/management/-/issues/26)), der Gitea-Tracker ist
90decisions/0002-issues-und-management-ins-lab.md27status;path-claimno2026-08-027leer, die Vorlage liegt als `.gitlab/issue_templates/`. **Damit gilt diese ADR
91decisions/0002-issues-und-management-ins-lab.md29path-claimno2026-08-027Ausnahmen (siehe `README.md`) — dass sie befristet war und die Frist gehalten hat,
92decisions/0002-issues-und-management-ins-lab.md31mirror-topologyno2026-08-027- Releases bleiben auf Gitea (öffentlicher Download-Pfad), ebenso das gitops-Wiki.
93decisions/0002-issues-und-management-ins-lab.md35mirror-topologyno2026-08-027- Issues auf Gitea belassen: dauerhafte Doppelführung, Roadmap/Boards unmöglich.
94decisions/0003-cve-meldeweg-aggregiert.md8path-claim;issue-refno2026-08-018Nachrichten und musste stummgeschaltet werden (gitops#51, AAR in `verfahren/aar/`).
95decisions/0003-cve-meldeweg-aggregiert.md9issue-refno2026-08-018Gleichzeitig war entschieden (CFGMON-13), Release-/Security-Meldungen von
96decisions/0004-site-to-site-vpn-hetzner-lab.md3component-ref;issue-refno2026-08-027**Status:** akzeptiert (umgesetzt und abgenommen 2026-08-01, Testreihe 1–7 in [management#12](https://git.lab/axion1337.chat/management/-/issues/12)) · **Datum:** 2026-08-01 · **Entscheider:** sorb
97decisions/0004-site-to-site-vpn-hetzner-lab.md14version;path-claimno2026-08-027Hetzner-Projektnetz `10.0.0.0/24` mit dem Lab-VLAN `10.58.73.0/24`. Der An/Aus-Schalter
98decisions/0004-site-to-site-vpn-hetzner-lab.md29status;version;path-claimno2026-08-027| **CFGMON** | WG-**Client/Initiator**, dauerhaft aktiv (`enable`) + `PersistentKeepalive 25`; AllowedIPs nur `10.58.73.0/24, 10.58.75.1/32`; Split-DNS nur `~lab` → `10.58.73.1`; `ip_forward` + iptables-ACCEPT in `DOCKER-USER` (ufw ist dort inaktiv), **kein NAT** |
99decisions/0004-site-to-site-vpn-hetzner-lab.md30versionno2026-08-027| **Fritzbox** | Portfreigabe UDP **51841** → `192.168.178.20` |
100decisions/0004-site-to-site-vpn-hetzner-lab.md31version;path-claimno2026-08-027| **Hetzner** | Netz-Range auf **`10.0.0.0/8`** erweitert, Route `10.58.73.0/24 → 10.0.0.3` — damit erreichen alle Server im Netz das Lab **ohne eigene Konfiguration** |
101decisions/0004-site-to-site-vpn-hetzner-lab.md32version;path-claimno2026-08-027| **UniFi-Firewall** | Trennung vom Roadwarrior über **Quell-/Ziel-IP** (`10.58.75.0/24` + `10.0.0.0/24`), nicht über eine eigene Zone: erlaubt sind nur `10.58.73.17:443` (git.lab/Registry) und `10.58.73.1:53` (DNS); IoT und Arbeit sind für alle VPNs komplett gesperrt |
102decisions/0004-site-to-site-vpn-hetzner-lab.md36component-ref;date-claim;issue-refno2026-08-027- ✅ **Eingelöst am 2026-08-02 (LABNET-03, [#13](https://git.lab/axion1337.chat/management/-/issues/13)):**
103decisions/0004-site-to-site-vpn-hetzner-lab.md37statusno2026-08-027Übergabe-Issues können nicht nur umziehen — sie sind umgezogen
104decisions/0004-site-to-site-vpn-hetzner-lab.md38component-ref;issue-refno2026-08-027([#25](https://git.lab/axion1337.chat/management/-/issues/25),
105decisions/0004-site-to-site-vpn-hetzner-lab.md39component-ref;mirror-topology;issue-refno2026-08-027[#26](https://git.lab/axion1337.chat/management/-/issues/26)), der Gitea-Tracker ist
106decisions/0004-site-to-site-vpn-hetzner-lab.md40statusno2026-08-027leer, die Vorlage liegt als GitLab-Issue-Template, und die Ausnahme aus ADR-0002 ist
107decisions/0004-site-to-site-vpn-hetzner-lab.md50mirror-topologyno2026-08-027Gitea-PR-Ausnahme bleibt bewusst bestehen.
108decisions/0004-site-to-site-vpn-hetzner-lab.md54mirror-topologyno2026-08-027Job läuft im Lab und erreicht Gitea öffentlich. Das war der eigentliche Grund für
109decisions/0004-site-to-site-vpn-hetzner-lab.md56issue-refno2026-08-027- game.axion1337.de profitiert erst nach Aufnahme in den vSwitch (GAME-01).
110decisions/0005-pm-framework-kanban.md1component-refno2026-08-018# 0005 — Projektmanagement: Kanban-Rückgrat mit leichten Scrum-Elementen
111decisions/0005-pm-framework-kanban.md22path-claimno2026-08-018| Product Goal / Vision | `vision/` (eine Datei je Linie) |
112decisions/0005-pm-framework-kanban.md24path-claimno2026-08-018| Review/Retro | AARs (`verfahren/aar/`) nach Deploys/Incidents |
113decisions/0005-pm-framework-kanban.md25path-claimno2026-08-018| Definition of Done | Deploy-Übergabe-Verfahren (`verfahren/deploy-uebergabe.md`) |
114decisions/0005-pm-framework-kanban.md26path-claimno2026-08-018| Roadmap/Meilensteine | Gruppen-Milestones + `roadmap.md` (CE: keine Epics/Roadmap-View) |
115decisions/0005-pm-framework-kanban.md27path-claimno2026-08-018| Entscheidungen | ADRs in `decisions/` |
116decisions/0005-pm-framework-kanban.md32component-ref;path-claimno2026-08-018- Das Backlogs-Repo wird zum Management-Repo `axion1337.chat/management`;
117decisions/0005-pm-framework-kanban.md33path-claimno2026-08-018offene Punkte aus `hosts/`/`shared/` sind Issues mit `host:`-Labels,
118decisions/0006-wikis-konsolidieren-docusaurus.md9date-claim;mirror-topologyno2026-08-0271. **Gitea-Wiki-Repo** `…gitops.wiki.git` — 15 Seiten, gepflegt bis 2026-07-31.
119decisions/0006-wikis-konsolidieren-docusaurus.md10mirror-topologyno2026-08-027Vom Push-Mirror **nicht** erfasst: ein Wiki ist ein eigenes Repo, kein Branch.
120decisions/0006-wikis-konsolidieren-docusaurus.md11date-claim;mirror-topologyno2026-08-0272. **`wiki`-Branch im gitops-Repo** — Stand 2026-05-14, mitgezogen, weil der Mirror
121decisions/0006-wikis-konsolidieren-docusaurus.md12path-claimno2026-08-027alle Branches trägt. Inhalt: ein damaliger Abzug von `docs/`, kein gepflegtes Wiki.
122decisions/0006-wikis-konsolidieren-docusaurus.md13path-claimno2026-08-0273. **`docs/` im main-Branch** — die eigentliche, laufend gepflegte Repo-Doku.
123decisions/0006-wikis-konsolidieren-docusaurus.md15statusno2026-08-027Dazu waren die GitLab-Wikis aller Projekte **leer**, und die Wiki-Inhalte enthielten
124decisions/0006-wikis-konsolidieren-docusaurus.md26path-claimno2026-08-027[`homelab/wiki`](https://git.lab/homelab/wiki) baut mit Docusaurus eine Seite unter
125decisions/0006-wikis-konsolidieren-docusaurus.md28component-ref;path-claimno2026-08-027Homelab (`homelab/docs`), Arbeitsweise (`management`). Die Inhalte werden beim Bau
126decisions/0006-wikis-konsolidieren-docusaurus.md33path-claimno2026-08-027- **Änderungen gehören ins Quell-Repo**, nie ins Wiki-Repo — was dort in `content/`
127decisions/0006-wikis-konsolidieren-docusaurus.md43path-claimno2026-08-027`.md` wird als CommonMark statt MDX geparst.
128decisions/0006-wikis-konsolidieren-docusaurus.md44statusno2026-08-027- **Der `wiki`-Branch im gitops-Repo ist überholt.** Er bleibt vorerst als Historie
129decisions/0006-wikis-konsolidieren-docusaurus.md47component-ref;issue-refno2026-08-027([Issue #19](https://git.lab/axion1337.chat/management/-/issues/19)).
130decisions/0006-wikis-konsolidieren-docusaurus.md51countno2026-08-027- **Alles in ein Repo verschmelzen:** Die Quellen haben unterschiedliche Leser und
131decisions/0006-wikis-konsolidieren-docusaurus.md53mirror-topologyno2026-08-027- **Wiki auf Gitea belassen:** widerspricht ADR-0002 und hielt eine Ausnahme am
132decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md3component-ref;status;issue-refno2026-08-027**Status:** vorgeschlagen (Entscheidung offen → [Issue #20](https://git.lab/axion1337.chat/management/-/issues/20)) · **Datum:** 2026-08-02 · **Entscheider:** sorb
133decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md8date-claimno2026-08-027Docusaurus als Lesefläche gebaut — läuft seit 2026-08-02 unter `axionwiki.lab`.
134decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md42component-refno2026-08-027Wahrheit neben git.lab — genau das, was [ADR-0002](0002-issues-und-management-ins-lab.md)
135decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md52issue-refno2026-08-027Datenbank ohne Sicherung ist eine Zeitbombe (vgl. CFGMON-09, wo genau das seit
136decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md53statusno2026-08-0272026-07-30 offen ist).
137decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md54path-claimno2026-08-027- **Ein Einweg-Import zum Befüllen, aber keine Synchronisation** (`import/` im
138decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md56path-claimno2026-08-027vergleichen, deshalb legt `provision.py` dieselben drei Bereiche an wie das
139decisions/0008-agenten-sessions-root-aequivalent.md3component-ref;issue-refno2026-08-063**Status:** akzeptiert · **Datum:** 2026-08-06 (Struktur-Workshop [#17](https://git.lab/axion1337.chat/management/-/issues/17)) · **Entscheider:** sorb
140decisions/0008-agenten-sessions-root-aequivalent.md9issue-refno2026-08-063LABNET-02-Nacht lief deshalb über die **docker-Gruppenmitgliedschaft** des Kontos
141decisions/0008-agenten-sessions-root-aequivalent.md24component-ref;issue-refno2026-08-063[#14](https://git.lab/axion1337.chat/management/-/issues/14).
142decisions/0008-agenten-sessions-root-aequivalent.md46issue-refno2026-08-063ohne diese Entscheidung wäre LABNET-02 gar nicht durchführbar gewesen.
143decisions/0008-agenten-sessions-root-aequivalent.md55statusno2026-08-063Kommt einer dazu, wird diese ADR abgelöst.
144decisions/0008-agenten-sessions-root-aequivalent.md57statusno2026-08-063## Offen, bewusst nicht vor der Entscheidung geklärt
145decisions/0008-agenten-sessions-root-aequivalent.md66issue-refno2026-08-063nächsten Host-Session, festgehalten in #14.
146decisions/0008-agenten-sessions-root-aequivalent.md80path-claimno2026-08-063und nicht bloß ein Absatz in `hosts/cfgmon.md`.
147decisions/0009-commit-konventionen-und-historien-anonymisierung.md5date-claimno2026-08-090> Nachgetragen am 2026-08-09 in der [Retro](../verfahren/retro/2026-08-09.md). Die
148decisions/0009-commit-konventionen-und-historien-anonymisierung.md13mirror-topologyno2026-08-090öffentlichem Gitea-Spiegel heißt das: Jeder, der die Repos liest, kann ablesen, an
149decisions/0009-commit-konventionen-und-historien-anonymisierung.md23date-claimno2026-08-090**Regel ab 2026-08-07**, gültig für alle Repos der Gruppe `axion1337.chat` und die
150decisions/0009-commit-konventionen-und-historien-anonymisierung.md29count;date-claimno2026-08-090**Rückwirkend angewandt am 2026-08-09** auf **251 Commits** — alles aus dieser
151decisions/0009-commit-konventionen-und-historien-anonymisierung.md34date-claimno2026-08-090| gitops | 117 von 264 | ab 2026-07-27 |
152decisions/0009-commit-konventionen-und-historien-anonymisierung.md35component-refno2026-08-090| management | 78 von 78 | vollständig |
153decisions/0009-commit-konventionen-und-historien-anonymisierung.md36component-ref;date-claimno2026-08-090| ThreadNet-Web | 47 von 50 | ab 2026-07-28 |
154decisions/0009-commit-konventionen-und-historien-anonymisierung.md37component-refno2026-08-090| threadnet-call | 9 von 9 | vollständig |
155decisions/0009-commit-konventionen-und-historien-anonymisierung.md39statusno2026-08-090Dabei wurden 17 Tags mit umgezogen und die Autoren-Identitäten vereinheitlicht —
156decisions/0009-commit-konventionen-und-historien-anonymisierung.md54path-claimno2026-08-090[`shared/commit-zuordnung-2026-08-07.md`](../shared/commit-zuordnung-2026-08-07.md).
157decisions/0009-commit-konventionen-und-historien-anonymisierung.md61statusno2026-08-090wieder aktiv.
158decisions/0009-commit-konventionen-und-historien-anonymisierung.md66mirror-topologyno2026-08-090liegen im selben GitLab und teilweise auf dem öffentlichen Spiegel — und sind
159decisions/0009-commit-konventionen-und-historien-anonymisierung.md72component-refno2026-08-090Das Force-Push der umgezogenen Tags hat in ThreadNet-Web **drei Release-Pipelines
160decisions/0009-commit-konventionen-und-historien-anonymisierung.md74versionno2026-08-090`v0.4.0` aus altem Quellcode gegen heutige Basis-Images neu gebaut und
161decisions/0009-commit-konventionen-und-historien-anonymisierung.md77component-ref;status;issue-refno2026-08-090ThreadNet-Web#14; die Sperre ist seit `3cb43f5` scharf.
162decisions/0009-commit-konventionen-und-historien-anonymisierung.md86countno2026-08-090angefasst (`Scrublord@Mac.Bad`, 135 Commits aus der Zeit vor dieser
163decisions/README.md6statusno2026-08-018auf `abgelöst durch NNNN` gesetzt.
164decisions/template.md3statusno2026-08-018**Status:** vorgeschlagen | akzeptiert | abgelöst durch NNNN · **Datum:** JJJJ-MM-TT · **Entscheider:** sorb
165hosts/cfgmon.md3mirror-topologyno2026-08-090Monitoring-Stack, Gitea und der Reverse Proxy für alles Öffentliche.
166hosts/cfgmon.md8versionno2026-08-090| **OS** | Ubuntu 24.04.4 LTS |
167hosts/cfgmon.md9versionno2026-08-090| **IPv4** | `188.245.193.243` |
168hosts/cfgmon.md11versionno2026-08-090| **Privat** | `10.0.0.3` (`enp7s0`, Hetzner-Netz — dort liegt auch k3s auf `10.0.0.2`) |
169hosts/cfgmon.md12mirror-topologyno2026-08-090| **DNS** | `rohana.axion1337.de` → Gitea, `selendis.axion1337.de` → Grafana |
170hosts/cfgmon.md19component-ref;version;path-claimno2026-08-090| prometheus | `prom/prometheus:v3.3.1` | `monitoring` | `sorb/threadnet-operating`, `monitoring/` |
171hosts/cfgmon.md20version;path-claimno2026-08-090| loki | `grafana/loki:3.7.1` | `monitoring` | dito |
172hosts/cfgmon.md21version;path-claimno2026-08-090| grafana | `grafana/grafana:12.0.0` | `monitoring` | dito |
173hosts/cfgmon.md22version;path-claimno2026-08-090| alloy | `grafana/alloy:v1.16.0` | `monitoring` | dito |
174hosts/cfgmon.md23version;path-claimno2026-08-090| node-exporter | `prom/node-exporter:v1.9.1` | `monitoring` | dito |
175hosts/cfgmon.md24component-ref;status;version;path-claim;date-claim;mirror-topology;issue-refno2026-08-090| traefik | `traefik:v3.7.9` | `thread-net-git` | `sorb/thread-net-git`, seit 2026-07-30 in `main` (siehe [CFGMON-02](#cfgmon-02--traefik-gitea-cadvisor-und-runner-unter-iac-gebracht--erledigt-2026-07-30)) |
176hosts/cfgmon.md25component-ref;version;path-claim;mirror-topologyno2026-08-090| gitea | `gitea/gitea:1.27.0` | `thread-net-git` | dito, gepinnt (war `:latest`) |
177hosts/cfgmon.md26component-ref;version;path-claimno2026-08-090| cadvisor | `gcr.io/cadvisor/cadvisor:v0.49.1` | `thread-net-git` | dito, gepinnt (war `:latest`) |
178hosts/cfgmon.md27component-ref;version;path-claim;mirror-topology;issue-refno2026-08-090| runner | `gitea/act_runner:0.6.1` | `thread-net-git` | dito, Container `gitea-runner`, siehe CFGMON-02 |
179hosts/cfgmon.md28version;path-claimno2026-08-090| portainer_agent | `portainer/agent:2.27.5` | — | standalone, kein Compose |
180hosts/cfgmon.md32component-ref;versionno2026-08-090(`10.0.0.2:9100`), `pterodactyl_host_node` und `gameserver_cadvisor`
181hosts/cfgmon.md33versionno2026-08-090(beide `157.90.155.206`, siehe [game](game.md)).
182hosts/cfgmon.md38component-refno2026-08-090[management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
183hosts/cfgmon.md41component-ref;date-claim;issue-refno2026-08-090- [CFGMON-01 — Zertifikatserneuerung braucht offene Ports (zeitkritisch ab 2026-09-28)](https://git.lab/axion1337.chat/management/-/issues/7)
184hosts/cfgmon.md42component-ref;issue-refno2026-08-090- [CFGMON-03 — Prometheus-Remote-Write/Loki öffentlich ohne Auth (Weg A, nachgelagerte Prüfung)](https://git.lab/axion1337.chat/management/-/issues/8)
185hosts/cfgmon.md43component-ref;issue-refno2026-08-090- [CFGMON-04 — Grafana-Admin-Credentials aus `.env` gelten nicht für die API](https://git.lab/axion1337.chat/management/-/issues/9)
186hosts/cfgmon.md44component-ref;mirror-topology;issue-refno2026-08-090- [CFGMON-09 — Gitea-Backups off-host (⚠️ Backup-Cron deaktiviert)](https://git.lab/axion1337.chat/management/-/issues/10)
187hosts/cfgmon.md46mirror-topology;issue-refno2026-08-090## CFGMON-11 — Gitea-CI-Rückbau nach GitLab-Umzug
188hosts/cfgmon.md48statusno2026-08-090**Status:** erledigt (2026-07-31 spätabends) — bis auf einen kosmetischen Handgriff:
189hosts/cfgmon.md49component-ref;path-claimno2026-08-090auf CFGMON `cd /opt/thread-net-git && git checkout main && git pull` (Checkout parkt
190hosts/cfgmon.md52component-ref;path-claimno2026-08-090**Dazu neu (2026-08-01 ~05:00):** Auch `/opt/threadnet-operating` braucht einmal
191hosts/cfgmon.md53path-claimno2026-08-090`git fetch && git reset --hard origin/main` — der State-Persistenz-Commit wurde
192hosts/cfgmon.md54mirror-topologyno2026-08-090dort direkt nach Gitea gepusht (dfe04c4a), vom Mirror überschrieben, vom Mac aus
193hosts/cfgmon.md55status;mirror-topologyno2026-08-090per Patch gerettet und kanonisch als `6ffab68` neu aufgelegt (inhaltsgleich,
194hosts/cfgmon.md58statusno2026-08-090**Erledigt (2026-08-01, autonom):**
195hosts/cfgmon.md59component-refno2026-08-090- Actions-Toggles deaktiviert: `ThreadNet-Web`, `threadnet-call`, `axion1337.chat-gitops`
196hosts/cfgmon.md60component-ref;path-claimno2026-08-090- `ThreadNet-Web`: alle `.github/workflows/`-Dateien entfernt (Commit `a876758`)
197hosts/cfgmon.md61path-claim;mirror-topologyno2026-08-090- gitops: Verifikations-Job nach GitLab portiert + `.gitea/workflows/` entfernt
198hosts/cfgmon.md62status;path-claim;mirror-topologyno2026-08-090(Commit `5e46a24`, Pipeline grün, Mirror→Gitea verifiziert; `milestone-release.yml`
199hosts/cfgmon.md63issue-refno2026-08-090war toter Code, siehe #33). Flux unberührt.
200hosts/cfgmon.md64component-ref;path-claimno2026-08-090- `thread-net-git`: Runner-Service/Config/`.env.example` per Commit `d904734` entfernt
201hosts/cfgmon.md65mirror-topologyno2026-08-090(auf git.lab; Mirror trägt nach Gitea) — **noch nicht deployt**, siehe unten.
202hosts/cfgmon.md66component-ref;path-claimno2026-08-090- Registry-Entscheidung npm final (Evidenz: `@sorb/threadnet-call-embedded` ist
203hosts/cfgmon.md67path-claim;mirror-topologyno2026-08-090pnpm-Dependency von `apps/web`, Lockfile pinnt Tarball-URL auf rohana): **bleibt Gitea**.
204hosts/cfgmon.md70component-ref;statusno2026-08-0901. ~~`thread-net-git`-Stand deployen~~ **erledigt (2026-07-31 spätabends, via
205hosts/cfgmon.md71path-claimno2026-08-090CFGMON-Session)**: Runner-Container/Netz/`runner-data/`/`.env`-Zeile entfernt,
206hosts/cfgmon.md72mirror-topologyno2026-08-090`builder-1` aus der Gitea-Admin-UI gelöscht, Actions-Registrierungstoken rotiert.
207hosts/cfgmon.md75component-ref;status;mirror-topology;issue-refno2026-08-090Mac→git.lab→Mirror (`15c8f2d`), Hergang in thread-net-git#1 (geschlossen).
208hosts/cfgmon.md77mirror-topologyno2026-08-090getippte Token (`a89bfb…`) war der Gitea-**Actions-Runner-Registrierungstoken**
209hosts/cfgmon.md82statusno2026-08-0903. ~~Token-Rotation b~~ **erledigt (2026-07-31 abends)**: Generalschlüssel
210hosts/cfgmon.md87path-claim;mirror-topologyno2026-08-090`~/.config/gitea-rohana/token` auf dem Mac), `claude-push` (write:repository,
211hosts/cfgmon.md88version;path-claim;mirror-topologyno2026-08-090`~/.config/gitea-rohana/push-token`). Erster CI-Publish `0.19.2-threadnet.6`
212hosts/cfgmon.md89component-ref;status;issue-refno2026-08-090verifiziert → threadnet-call#1 geschlossen. Alle Klartext-Reste entfernt
213hosts/cfgmon.md94path-claimno2026-08-090(`git.lab/axion1337.chat`, Gruppe mit importierten Projekten angelegt; die Domain ist
214hosts/cfgmon.md97date-claim;mirror-topologyno2026-08-090pausieren). Der am 2026-07-30 auf Gitea-Seite aufgebaute CI-Unterbau wird damit teilweise
215hosts/cfgmon.md102component-ref;date-claimno2026-08-090- **Actions-Toggle** `has_actions` bei `ThreadNet-Web` (am 2026-07-30 per API aktiviert)
216hosts/cfgmon.md103component-refno2026-08-090wieder deaktivieren, ebenso bei `threadnet-call` (stoppt die fehlschlagende
217hosts/cfgmon.md105component-ref;path-claimno2026-08-090- **`.github/workflows/` in `ThreadNet-Web`** (der kuratierte 6-Dateien-Satz) — wird durch
218hosts/cfgmon.md106path-claimno2026-08-090`.gitlab-ci.yml` ersetzt. Die Erkenntnisse aus den Läufen vom 2026-07-30 mitnehmen:
219hosts/cfgmon.md110component-refno2026-08-090- **Geerbte Upstream-Workflows in `threadnet-call`** (build/publish/test/translations/
220hosts/cfgmon.md113path-claim;mirror-topologyno2026-08-090der Gitea-Admin-UI deregistrieren und `runner-data/.runner` auf dem Host entfernen.
221hosts/cfgmon.md114component-ref;path-claimno2026-08-090- **Token: npm-Token in `threadnet-call`s untracked `embedded/web/.npmrc`** (Klartext im
222hosts/cfgmon.md121component-refno2026-08-090- **Runner-Service in `thread-net-git` ganz entfernen?** Hängt daran, ob das gitops-Repo
223hosts/cfgmon.md122path-claimno2026-08-090seinen leichten `deploy-on-push.yml` (YAML-Validierung/Notification, läuft sauber)
224hosts/cfgmon.md124component-ref;path-claimno2026-08-090Revert-Commit in `thread-net-git`: Compose-Service `runner`, `runner/config.yaml`,
225hosts/cfgmon.md125path-claimno2026-08-090`.env.example` (RUNNER_TOKEN), Cache-Port-Bindung 8088, `runner-data/`.
226hosts/cfgmon.md126component-ref;path-claim;mirror-topologyno2026-08-090- **Registry-Ziel für `@sorb/threadnet-call-embedded`**: bleibt die Gitea-npm-Registry
227hosts/cfgmon.md128status;mirror-topologyno2026-08-090GitLab-Package-Registry (dann läuft die Gitea-Package-Seite leer).
228hosts/cfgmon.md129mirror-topologyno2026-08-090- **Container-Images bleiben in der rohana-Registry** (Flux/k8s pullt von dort — spricht
229hosts/cfgmon.md131mirror-topologyno2026-08-090**neuen** Deploy-/Push-Token für die rohana-Registry (Neuanlage, kein Rückbau).
230hosts/cfgmon.md135mirror-topologyno2026-08-090Gitea selbst, gitops-Repo als Flux-Source, Issues/Wiki/dieses Repo, der
231hosts/cfgmon.md136mirror-topology;issue-refno2026-08-090API-Token für Issue-Verwaltung, das Gitea-Backup-Script (CFGMON-09).
232hosts/cfgmon.md139component-ref;statusno2026-08-090umgezogen — [ADR-0002](../decisions/0002-issues-und-management-ins-lab.md) —,
233hosts/cfgmon.md140component-refno2026-08-090das Repo dabei von `Backlogs` zu `management` umgewidmet
234hosts/cfgmon.md142mirror-topologyno2026-08-090den damaligen Rückbau der Gitea-CI, nicht auf Dauer.)*
235hosts/cfgmon.md145component-ref;mirror-topology;issue-refno2026-08-090[ThreadNet-Web#2](https://rohana.axion1337.de/sorb/ThreadNet-Web/issues/2),
236hosts/cfgmon.md146component-ref;mirror-topology;issue-refno2026-08-090[threadnet-call#1](https://rohana.axion1337.de/sorb/threadnet-call/issues/1).
237hosts/cfgmon.md148statusno2026-08-090**Nächster Schritt:** die drei manuellen Schritte oben, dann → erledigt.
238hosts/cfgmon.md150issue-refno2026-08-090## CFGMON-13 — Absender-Design für Release-/CVE-Meldungen: eigener Bot?
239hosts/cfgmon.md154component-ref;mirror-topology;issue-refno2026-08-090Alertmanager-Routing: [gitops#47](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/47).
240hosts/cfgmon.md160issue-refno2026-08-0901. **release-watch** (gitops#22, deploybereit): Upstream-Releases/Security-Releases
241hosts/cfgmon.md162issue-refno2026-08-0902. **Trivy-CVE-Scans** (gitops#31, läuft wöchentlich in der Lab-CI): Funde landen
242hosts/cfgmon.md168statusno2026-08-090scharf/stumm schaltbar bleibt? Oder bewusst alles über `@alerts` bündeln?
243hosts/cfgmon.md174mirror-topology;issue-refno2026-08-090## CFGMON-12 — Gitea-Projektmetadaten nach GitLab umziehen/integrieren
244hosts/cfgmon.md176component-ref;status;mirror-topology;issue-refno2026-08-090**Status:** abgelöst durch [gitops#48](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/48) (2026-08-01, sorb: HOHE Priorität — vollständige Issue-Migration + zentrale Gruppen-Roadmap; Plan-Skizze und die offene Erreichbarkeits-Entscheidung git.lab-only vs. extern stehen dort)
245hosts/cfgmon.md178count;date-claimno2026-08-090✅ **Umgesetzt am 2026-08-01/02**: Die Migration ist durch — 62 Issues liegen auf
246hosts/cfgmon.md179status;mirror-topologyno2026-08-090git.lab, die Gitea-Issues sind geschlossen und tragen einen Migrations-Fußtext.
247hosts/cfgmon.md182date-claim;issue-refno2026-08-090für Deploy-Übergabe-Issues ist am 2026-08-02 mit LABNET-03 ebenfalls zurückgebaut.
248hosts/cfgmon.md187status;mirror-topologyno2026-08-090Projektmetadaten liegen weiterhin auf Gitea/rohana. Verifiziert per API am
249hosts/cfgmon.md190mirror-topologyno2026-08-090Noch auf Gitea:
250hosts/cfgmon.md192component-ref;issue-refno2026-08-090- **Issues** inkl. Kommentare/Labels: ThreadNet-Web (#2, #5, …), threadnet-call (#1),
251hosts/cfgmon.md193issue-refno2026-08-090gitops (#24, #25, #32, …)
252hosts/cfgmon.md195path-claim;mirror-topologyno2026-08-090- **Wiki** (gitops-Wiki mit `00-TASKS.md`-Log — bisher bewusst direkt-Gitea)
253hosts/cfgmon.md197mirror-topology;issue-refno2026-08-090[CFGMON-11](#cfgmon-11--gitea-ci-rückbau-nach-gitlab-umzug) auf rohana — bei
254hosts/cfgmon.md202mirror-topologyno2026-08-0901. **GitLab-Gitea-Importer vs. API-Skript** — der Importer verliert Autorenschaft
255hosts/cfgmon.md205mirror-topologyno2026-08-0902. **Erreichbarkeit**: rohana ist von überall erreichbar, git.lab nur im Homelab —
256hosts/cfgmon.md208mirror-topologyno2026-08-090direkt-Gitea).
257hosts/cfgmon.md219component-ref;issue-refno2026-08-090### CFGMON-10 — threadnet-call-CI schlägt am Artifact-Schritt fehl · verworfen 2026-07-30
258hosts/cfgmon.md221component-ref;date-claimno2026-08-090Ausgelöst durch einen Push nach `threadnet-call` am 2026-07-30: der Runner (`builder-1`)
259hosts/cfgmon.md226component-refno2026-08-090**Hypothese inzwischen im Kern bestätigt** — beim parallelen ThreadNet-Web-CI-Versuch
260hosts/cfgmon.md229mirror-topologyno2026-08-090ohne Swap, trägt daneben Gitea/Traefik/Monitoring) kann das strukturell nicht liefern.
261hosts/cfgmon.md233mirror-topology;issue-refno2026-08-090[CFGMON-11](#cfgmon-11--gitea-ci-rückbau-nach-gitlab-umzug)), CFGMON bleibt bei leichten
262hosts/cfgmon.md234component-ref;mirror-topology;issue-refno2026-08-090Jobs. Issue-Seite: [threadnet-call#1](https://rohana.axion1337.de/sorb/threadnet-call/issues/1).
263hosts/cfgmon.md236status;mirror-topology;issue-refno2026-08-090### CFGMON-02 — Traefik, Gitea, cAdvisor und Runner unter IaC gebracht · erledigt 2026-07-30
264hosts/cfgmon.md238component-ref;path-claimno2026-08-090Liefen ursprünglich im Compose-Projekt `thread-net-git` aus `/data/compose/8`, einem von
265hosts/cfgmon.md239component-ref;path-claimno2026-08-090Portainer verwalteten Stack ohne Repo dazu. Jetzt in `sorb/thread-net-git`: `:latest`-Tags
266hosts/cfgmon.md240component-ref;version;mirror-topologyno2026-08-090gepinnt (Gitea `1.27.0`, cAdvisor `v0.49.1`), Projektname `thread-net-git` beibehalten
267hosts/cfgmon.md242mirror-topologyno2026-08-090Volume-Namen, Downgrade-Verbot für Gitea), nächtliches Backup-Script. Zusätzlich neu: ein
268hosts/cfgmon.md243version;path-claim;mirror-topologyno2026-08-090`runner`-Service (`gitea/act_runner:0.6.1`, Container `gitea-runner`, Labels
269hosts/cfgmon.md244path-claimno2026-08-090`ubuntu-latest`/`linux-build`/`win-wine` — die letzten beiden gezielt für Electron-Builds)
270hosts/cfgmon.md245issue-refno2026-08-090— ursprünglich unter [CFGMON-08](#cfgmon-08) als offene Frage gelistet, siehe dort.
271hosts/cfgmon.md247status;path-claimno2026-08-090Entstanden auf Branch `rework/stack`, zunächst nicht gemergt (produktiv aber schon aktiv).
272hosts/cfgmon.md248path-claimno2026-08-090**2026-07-30 nach `main` gemergt** (`origin/main` == `origin/rework/stack` auf `02b3224`,
273hosts/cfgmon.md249statusno2026-08-090verifiziert) — damit spiegelt die Standardansicht des Repos jetzt den Live-Stand.
274hosts/cfgmon.md250status;date-claimno2026-08-090Verifiziert am 2026-07-30 über die Compose-Labels der laufenden Container
275hosts/cfgmon.md251component-ref;path-claim;mirror-topologyno2026-08-090(`working_dir: /opt/thread-net-git`) und `docker compose ls`. `gitea-data` ist als
276hosts/cfgmon.md255mirror-topologyno2026-08-090Zum Bootstrapping-Problem (Definition von Gitea liegt in Gitea): mitigiert,
277hosts/cfgmon.md256mirror-topologyno2026-08-090weil das Deploy-Verzeichnis selbst der Checkout ist — fällt Gitea aus, liegt
278hosts/cfgmon.md259mirror-topology;issue-refno2026-08-090[CFGMON-09](#cfgmon-09--gitea-backups-off-host-in-die-storage-box-eigenes-borg-repo).
279hosts/cfgmon.md261status;issue-refno2026-08-090### CFGMON-05 — Monitoring-Stack unter IaC bringen · erledigt 2026-07-30
280hosts/cfgmon.md263path-claimno2026-08-090Der Stack lief aus `/opt/monitoring` ohne Versionierung und mit `:latest`-Tags. Jetzt
281hosts/cfgmon.md264component-ref;path-claimno2026-08-090in `sorb/threadnet-operating` unter `monitoring/`, Images gepinnt,
282hosts/cfgmon.md268status;issue-refno2026-08-090### CFGMON-06 — Grafana-Certresolver zeigte ins Leere · erledigt 2026-07-30
283hosts/cfgmon.md273path-claimno2026-08-090aus. Aus dem Altbestand in `/opt/monitoring` unverändert übernommen und dort
284hosts/cfgmon.md276component-refno2026-08-090Behoben in `threadnet-operating`, Commit `a400f8a`. Cert von Let's Encrypt (YR2)
285hosts/cfgmon.md277date-claimno2026-08-090ausgestellt, gültig bis 2026-10-28 — die Nachfolge davon ist
286hosts/cfgmon.md278issue-refno2026-08-090[CFGMON-01](#cfgmon-01--zertifikatserneuerung-braucht-offene-ports-ipv4-und-ipv6).
287hosts/cfgmon.md280status;issue-refno2026-08-090### CFGMON-07 — Alloy verlor seine Positions-Datei bei jedem Deploy · erledigt 2026-07-30
288hosts/cfgmon.md282path-claimno2026-08-090`--storage.path=/var/lib/alloy/data` war gesetzt, aber ohne Volume: die
289hosts/cfgmon.md288statusno2026-08-090Behoben durch ein `alloy_data`-Volume, Commit `edac97e`. Verifiziert: Positions
290hosts/cfgmon.md291status;mirror-topology;issue-refno2026-08-090### CFGMON-08 — Kein Gitea-Actions-Runner registriert, Standort noch offen · erledigt 2026-07-30
291hosts/cfgmon.md294statusno2026-08-090existiert und wo einer laufen sollte, noch offen sei. Beides falsch — ein Runner
292hosts/cfgmon.md295component-ref;path-claimno2026-08-090(`builder-1`) läuft bereits, auf CFGMON, als Teil von `thread-net-git`s `rework/stack`-
293hosts/cfgmon.md297status;mirror-topology;issue-refno2026-08-090[CFGMON-02](#cfgmon-02--traefik-gitea-cadvisor-und-runner-unter-iac-gebracht--erledigt-2026-07-30) — hier
294hosts/cfgmon.md298component-ref;mirror-topology;issue-refno2026-08-090nicht dupliziert. [gitops#33](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/33)
295hosts/cfgmon.md299statusno2026-08-090(dieselbe falsche Prämisse) entsprechend korrigiert/geschlossen.
296hosts/game.md3component-refno2026-08-027Pterodactyl- / Gameserver-Host.
297hosts/game.md7versionno2026-08-027| **IPv4** | `157.90.155.206` |
298hosts/game.md10version;date-claimno2026-08-027| **Privat** | `10.0.0.4` (im vSwitch seit 2026-08-02) |
299hosts/game.md20component-refno2026-08-027[axion1337.chat/game-operating](https://git.lab/axion1337.chat/game-operating)
300hosts/game.md25statusno2026-08-027Deployment ist gewollt, aber bewusst **zurückgestellt, bis das Matrix-Projekt
301hosts/game.md31component-refno2026-08-027**Pterodactyl** (Gameserver-Verwaltung, in Benutzung durch Bekannte des Betreibers
302hosts/game.md36version;path-claimno2026-08-027| `pterodactyl` (Panel) | `ghcr.io/pterodactyl/panel:v1.12.0` |
303hosts/game.md37component-ref;version;path-claimno2026-08-027| `wings` (Daemon, fährt die Gameserver als Docker-Container) | `ghcr.io/pterodactyl/wings:v1.12.0` |
304hosts/game.md41versionno2026-08-027**Eigener Monitoring-Stack** (grafana-oss, prometheus v3.0.0 mit 15 d Retention,
305hosts/game.md42versionno2026-08-027loki 3.1.1, promtail 3.1.1, node-exporter v1.8.1, cadvisor v0.49.2). Wird
306hosts/game.md43statusno2026-08-027perspektivisch von CFGMON abgelöst — siehe unten.
307hosts/game.md47issue-refno2026-08-027GAME-01: Auf 9100/8080 des Hosts lauscht nichts, CFGMONs Scrape-Ziele auf der
308hosts/game.md55versionno2026-08-027| Port | von CFGMON (`188.245.193.243`, 2026-08-01) | vom Hausanschluss (`178.25.213.70`, 2026-08-02) |
309hosts/game.md57statusno2026-08-027| 80 / 443 | offen | offen (HTTP 404 bzw. 503) |
310hosts/game.md58statusno2026-08-027| **22** | **Timeout** | **offen** |
311hosts/game.md67date-claimno2026-08-027Es fehlte also keine Ausnahme für CFGMON. Seit 2026-08-02 liegt der Host im
312hosts/game.md68versionno2026-08-027vSwitch (`10.0.0.4`); die Monitoring-Anbindung läuft künftig **per Push über das
313hosts/game.md69versionno2026-08-027private Netz** — Alloy sammelt lokal ein und schiebt nach `10.0.0.3`, wodurch der
314hosts/game.md71component-ref;issue-refno2026-08-027k3s-Cluster. Details: [GAME-01](https://git.lab/axion1337.chat/management/-/issues/2).
315hosts/game.md80component-refno2026-08-027[management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
316hosts/game.md83component-ref;date-claim;issue-refno2026-08-027- [GAME-01 — Host von CFGMON aus nicht erreichbar, 2 Targets down (⚠️ Silences bis 2026-08-04)](https://git.lab/axion1337.chat/management/-/issues/2)
317hosts/game.md84component-ref;issue-refno2026-08-027- [GAME-02 — `www.game.axion1337.de` ist überflüssig](https://git.lab/axion1337.chat/management/-/issues/3)
318hosts/matrix.md8versionno2026-08-090| **IPv4** | `49.13.132.245` |
319hosts/matrix.md10versionno2026-08-090| **Privat** | `10.0.0.2` (`enp7s0`, dasselbe Hetzner-Netz wie CFGMON `10.0.0.3`) |
320hosts/matrix.md12path-claimno2026-08-090| **DNS** | `matrix.axion1337.de` **und** `matrix.axion1337.chat` zeigen auf dieselbe IP — ebenso `axion1337.chat` (Apex) und `account.axion1337.chat` (MAS). `axion1337.de` ist die ältere/Registrar-Domain (IONOS-Mail läuft dort), `axion1337.chat` die eigentliche Matrix-Service-Domain. |
321hosts/matrix.md15path-claimno2026-08-090**Inventarisiert** (direkter SSH-Zugriff, `~/.ssh/config`-Alias `axion1337`, Port 2248):
322hosts/matrix.md18component-ref;path-claim;mirror-topologyno2026-08-090[`sorb/axion1337.chat-gitops`](https://rohana.axion1337.de/sorb/axion1337.chat-gitops) - dieser
323hosts/matrix.md20component-ref;path-claimno2026-08-090`sorb/ThreadNet-Web` (Element Web), `sorb/threadnet-call` (Element Call/LiveKit-Widget).
324hosts/matrix.md21path-claimno2026-08-090`sorb/element-web` und `sorb/ThreadNet-Stack` sind **veraltete/abgelöste** Vorgänger-Repos
325hosts/matrix.md24statusno2026-08-090`ufw`: aktiv, Default Deny Incoming / Allow Outgoing, explizite Allow-Regeln für
326hosts/matrix.md25statusno2026-08-0902248/tcp (SSH), 80/443, TURN/RTC-Ports. `unattended-upgrades` aktiv (Debian-Security +
327hosts/matrix.md26status;issue-refno2026-08-090Debian-Origin), siehe [MATRIX-04](#matrix-04--host-level-pre-update-benachrichtigung-erledigt).
328hosts/matrix.md31component-refno2026-08-090[management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
329hosts/matrix.md34component-ref;issue-refno2026-08-090- [MATRIX-03 — `www.matrix.axion1337.de` ist überflüssig](https://git.lab/axion1337.chat/management/-/issues/1)
330hosts/matrix.md36date-claim;issue-refno2026-08-090## MATRIX-05 — node-exporter-DaemonSet in CrashLoopBackOff, Cluster-Scrape seit 2026-08-01 tot
331hosts/matrix.md38statusno2026-08-090**Status:** erledigt (2026-08-01 ~04:10, vom Mac aus mit kubectl/SSH)
332hosts/matrix.md41versionno2026-08-090Teil 1 bestätigt per Pod-Log: `listen tcp 0.0.0.0:9100: bind: address already in use`;
333hosts/matrix.md49issue-refno2026-08-090**Fix (gitops `228807f`, Weg A aus gitops#45):** HelmRelease + Alloy-Scrape entfernt,
334hosts/matrix.md52component-ref;mirror-topology;issue-refno2026-08-090[gitops#45](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/45).
335hosts/matrix.md61date-claimno2026-08-090| Messwert | Stand 2026-08-01 |
336hosts/matrix.md67path-claimno2026-08-090| `waiting_reason` / `ready` | `CrashLoopBackOff` / `0` |
337hosts/matrix.md73statusno2026-08-090**Vermutete Ursache, nicht verifiziert:** Der Pod läuft mit `hostNetwork: true` und will
338hosts/matrix.md75versionno2026-08-090derselbe, den CFGMON als Job `k3s_host_node` direkt auf `10.0.0.2:9100` scrapt und der
339hosts/matrix.md86date-claimno2026-08-090### Teil 2 — der Cluster-Scrape ist am 2026-08-01 01:19 UTC ausgefallen (akut)
340hosts/matrix.md96versionno2026-08-090`hostNetwork`, sein Pod-IP ist die öffentliche `49.13.132.245`, dorthin zeigt der
341hosts/matrix.md103status;versionno2026-08-090| `10.0.0.2:9100` (privat) | offen, 2706 Metriken |
342hosts/matrix.md104versionno2026-08-090| `49.13.132.245:9100` (öffentlich) | **keine Antwort** |
343hosts/matrix.md105status;version;path-claimno2026-08-090| `49.13.132.245:80` / `:443` | offen — Host lebt |
344hosts/matrix.md110versionno2026-08-0901. Der Exporter bindet jetzt `10.0.0.2:9100` statt `0.0.0.0:9100`.
345hosts/matrix.md123versionno2026-08-090auf `10.0.0.2:9100` zeigen lassen. Beendet den Crashloop und erhält die enge Bindung ans
346hosts/matrix.md127versionno2026-08-090Ebenfalls sauber, aber er bindet dann wieder `0.0.0.0` — also auch die öffentliche IP,
347hosts/matrix.md131countno2026-08-090### Nebenbefund — Job-Label kollidiert zwischen zwei Hosts
348hosts/matrix.md137versionyes2026-08-090up=1 instance=node-exporter:9100 -> CFGMON (Kernel 6.8.0-136-generic)
349hosts/matrix.md152status;issue-refno2026-08-090### MATRIX-01 — Klären, ob der Server Mail als `@matrix.axion1337.de` verschickt · erledigt 2026-07-30
350hosts/matrix.md154path-claimno2026-08-090Für `matrix.axion1337.de` existiert der komplette IONOS-Mail-Satz: `MX mx00/mx01`,
351hosts/matrix.md157statusno2026-08-090offen, weil Matrix-Homeserver typischerweise Mail für Registrierung/Passwort-Reset
352hosts/matrix.md160statusno2026-08-090**Antwort, verifiziert per Config** (nicht nur vermutet) — direkt im IaC-Repo
353hosts/matrix.md161component-ref;path-claimno2026-08-090`sorb/axion1337.chat-gitops`, dem tatsächlich hier deployten Stand geprüft:
354hosts/matrix.md163path-claimno2026-08-090- `apps/production/custom-configs/synapse-values.yaml` — kein `email:`/`smtp_host`/
355hosts/matrix.md165path-claimno2026-08-090- `apps/production/custom-configs/mas-secret.yaml` (SOPS-entschlüsselt geprüft) — kein
356hosts/matrix.md166path-claimno2026-08-090`email`/`smtp`/`mailer`-Eintrag.
357hosts/matrix.md167path-claimno2026-08-090- `apps/production/element-server-suite.yaml` (HelmRelease values) — dito, nichts.
358hosts/matrix.md174issue-refno2026-08-090[ZONE-02](../shared/zone-axion1337.md) an dieser Stelle entblockt.
359hosts/matrix.md179issue-refno2026-08-090MATRIX-04 unten. Nutzt die ohnehin am Apex laufende echte IONOS-Mail-Infrastruktur,
360hosts/matrix.md182status;issue-refno2026-08-090### MATRIX-02 — Pusht per Remote-Write auf einen offenen Prometheus · erledigt 2026-07-30
361hosts/matrix.md187status;versionno2026-08-090selbst die private IP `10.0.0.2` (verifiziert per `ip -4 addr show` auf dem Host).
362hosts/matrix.md189status;path-claimno2026-08-090Verifiziert in `apps/monitoring/alloy-config.yaml` (diesem Cluster): Der Remote-Write-Push
363hosts/matrix.md190version;path-claimno2026-08-090geht bereits an `http://10.0.0.3:9090/api/v1/write` und Loki an `http://10.0.0.3:3100/...` -
364hosts/matrix.md191versionno2026-08-090**private IP, nicht die öffentliche** `188.245.193.243:9090`. Von dieser Seite aus ist hier
365hosts/matrix.md194issue-refno2026-08-090[CFGMON-03](cfgmon.md#cfgmon-03--prometheus-remote-write-und-loki-sind-öffentlich-ohne-auth)
366hosts/matrix.md197status;issue-refno2026-08-090### MATRIX-04 — Host-Level Pre-Update-Benachrichtigung · erledigt 2026-07-30
367hosts/matrix.md200path-claimno2026-08-090`docs/deployment-guides/07-host-maintenance-notifications.md` im gitops-Repo,
368hosts/matrix.md201component-ref;mirror-topology;issue-refno2026-08-090[Issue #24](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/24)):
369hosts/matrix.md202statusno2026-08-090`unattended-upgrades` war bereits aktiv, neu ergänzt ist ein systemd-Timer
370hosts/overmind.md10versionno2026-08-090| **DNS (Lab)** | `git.lab` → `10.58.73.17` (TLS via Dokploy-Proxy, Zertifikate von der aXionLabs-CA: step-ca, 24h-Leaf, Intermediate bis 2035) |
371hosts/overmind.md11date-claimno2026-08-090| **CPU/RAM** | 14 Kerne, 30 Gi (Stand 2026-07-31: ~11 Gi verfügbar) |
372hosts/overmind.md12date-claimno2026-08-090| **Disk** | 444 G NVMe (~278 G frei, Stand 2026-07-31) |
373hosts/overmind.md13path-claimno2026-08-090| **KVM** | `/dev/kvm` vorhanden — Basis für die Windows-Build-VM |
374hosts/overmind.md20component-ref;version;path-claimno2026-08-090| GitLab CE 18.7.1 + Postgres 16 + Redis 7 | Dokploy-Stack `management-gitlabce` | `external_url https://git.lab`, SSH 2224; TLS terminiert der Dokploy-Proxy (GitLab-nginx lauscht nur :80) |
375hosts/overmind.md21status;version;path-claimno2026-08-090| gitlab-runner `lab-builder-1` (v18.7.0) | gleicher Stack, Service `gitlab-runner` | Docker-Executor + Socket, `concurrent = 1`. **Stolpersteine, live gefunden**: (1) Docker-interner DNS löst `git.lab` auf den GitLab-Container auf, wo 443 zu ist → `extra_hosts: git.lab:10.58.73.17` nötig; (2) Lab-CA muss nach `/etc/gitlab-runner/certs/git.lab.crt` (Config-Volume, übersteht Redeploys) |
376hosts/overmind.md27status;date-claim;mirror-topologyno2026-08-090git.lab ist seit 2026-07-31 **kanonisch** für die gespiegelten Repos der Gruppe
377hosts/overmind.md28component-ref;count;date-claimno2026-08-090`axion1337.chat` — Stand 2026-08-09 **sieben**: die sechs Produkt-Repos (ThreadNet-Web,
378hosts/overmind.md29component-refno2026-08-090threadnet-call, thread-net-git, threadnet-operating, axion1337.chat-gitops, seit heute auch
379hosts/overmind.md30component-ref;mirror-topologyno2026-08-090`game-operating`) **und `management`, also dieses Repo**. Push-Mirrors nach rohana/Gitea,
380hosts/overmind.md31status;mirror-topologyno2026-08-090direkte Gitea-Pushes tabu.
381hosts/overmind.md33component-ref;status;mirror-topologyno2026-08-090⚠️ `gameserver` (achtes Projekt der Gruppe) hat **keinen** Mirror — offen in
382hosts/overmind.md34component-ref;mirror-topology;issue-refno2026-08-090[management#32](https://git.lab/axion1337.chat/management/-/issues/32), dort liegt auf Gitea
383hosts/overmind.md37mirror-topologyno2026-08-090Gitea bleibt: Flux-Source (via Mirror beliefert), Registry, Packages.
384hosts/overmind.md38date-claimno2026-08-090**Issues nicht mehr** — die sind am 2026-08-01/02 nach git.lab gewandert
385hosts/overmind.md39component-refno2026-08-090([ADR-0002](../decisions/0002-issues-und-management-ins-lab.md)). Die letzte Ausnahme,
386hosts/overmind.md40component-ref;path-claim;date-claim;mirror-topologyno2026-08-090die Deploy-Übergabe-Issues auf dem Gitea-Tracker `sorb/management`, ist am 2026-08-02
387hosts/overmind.md41status;issue-refno2026-08-090mit LABNET-03 zurückgebaut: beide umgezogen (#25, #26), der Tracker ist leer.
388hosts/overmind.md45component-ref;mirror-topologyno2026-08-090seit der Umwidmung zum Management-Repo `management` und wird seither gespiegelt,
389hosts/overmind.md48issue-refno2026-08-090## OVERMIND-01 — GitLab-Container-Registry aktivieren, Images nach Konsument sortieren
390hosts/overmind.md50statusno2026-08-090**Status:** erledigt (2026-08-01)
391hosts/overmind.md53component-ref;status;path-claimno2026-08-090`registry.git.lab/axion1337.chat/threadnet-web/desktop-build:bullseye` (Job 386 grün,
392hosts/overmind.md55statusno2026-08-090damit grün durch (Job 398 - beweist auch den anonymen Pull des public Projekts durch
393hosts/overmind.md56mirror-topologyno2026-08-090den Runner-Daemon). Die rohana-`REGISTRY_*`-Variablen bleiben nur noch für den
394hosts/overmind.md61mirror-topologyno2026-08-090Lab-CI → rohana (Prod, Internet) → zurück ins Lab — koppelt Lab-Infrastruktur unnötig an
395hosts/overmind.md65component-ref;path-claim;mirror-topologyno2026-08-090- **rohana (Gitea) behält**: `sorb/threadnet-web` (App-Image — Flux/Prod pullt es),
396hosts/overmind.md71path-claimno2026-08-0901. Omnibus-Config: `registry_external_url 'https://registry.git.lab'`,
397hosts/overmind.md74versionno2026-08-0902. Lab-DNS: `registry.git.lab` → `10.58.73.17`
398hosts/overmind.md78path-claimno2026-08-090`/etc/docker/certs.d/registry.git.lab/ca.crt` (Datei liegt schon als
399hosts/overmind.md79path-claimno2026-08-090`/tmp/git.lab.crt` vom Runner-Setup — kopieren reicht; kein Daemon-Restart nötig)
400hosts/overmind.md80path-claimno2026-08-0905. CI-Umstellung: `vendor/windows` pusht nach `registry.git.lab` (Bonus: GitLabs
401hosts/overmind.md81path-claimno2026-08-090eingebaute `$CI_REGISTRY`/`$CI_JOB_TOKEN`-Auth statt Gruppen-Secrets),
402hosts/overmind.md82component-ref;path-claimno2026-08-090`desktop_image`/`desktop_linux` in ThreadNet-Web folgen; Registry-Speicher liegt im
403hosts/overmind.md85statusno2026-08-090**Fortschritt 2026-07-31**: Punkte 1–4 umgesetzt (Registry live auf
404hosts/overmind.md86path-claimno2026-08-090`registry.git.lab`, 401/Bearer-Auth korrekt, CA-Trust auf dem Host); `vendor/windows`
405hosts/overmind.md87statusno2026-08-090pusht per `CI_JOB_TOKEN` in die Lab-Registry — verifiziert, Tags `5bc25447` + `stable`
406hosts/overmind.md90mirror-topologyno2026-08-090**Nächster Schritt:** `element-desktop-build` von rohana in die Lab-Registry umziehen
407hosts/overmind.md91component-refno2026-08-090(ThreadNet-Web-CI: `desktop_image`-Push-Ziel + `desktop_linux`-Image-Referenz) — bewusst
408hosts/overmind.md92statusno2026-08-090zurückgestellt, bis kein Auto-Job das alte Image parallel referenziert (Reihenfolge:
409hosts/overmind.md95status;issue-refno2026-08-090## OVERMIND-02 — Host-Ausfall 2026-07-31 ~19:15 lokal (NIC-Hang, Fix aktiv)
410hosts/overmind.md97component-ref;status;issue-refno2026-08-090**Status:** Fix aktiv — die Beobachtung läuft als [Issue #4](https://git.lab/axion1337.chat/management/-/issues/4)
411hosts/overmind.md107statusno2026-08-090**Fix (2026-07-31, Overmind-Session):** `ethtool --set-eee eno1 eee off` live gesetzt
412hosts/overmind.md108path-claimno2026-08-090+ persistente udev-Regel `/etc/udev/rules.d/71-disable-eee-eno1.rules` (greift bei
413hosts/overmind.md112status;versionno2026-08-090- ~~NIC-/BIOS-Firmware-Update 2.4.0.0 → 2.5.2.0~~ **erledigt** (Wartungsfenster
414hosts/overmind.md121status;versionno2026-08-090- 19:05–19:12 — Provision-Job 409 grün (Rust 1.97.1 maschinenweit, Strawberry Perl,
415hosts/overmind.md137statusno2026-08-0908G. Nach dem NIC-Fix lief die Kette durch: **desktop_windows Job 438 grün**
416hosts/overmind.md138versionno2026-08-090(2026-07-31 ~21:50 lokal, `Element Setup 1.12.17.exe`, 141 MB, unsigniert) —
417hosts/overmind.md139component-ref;status;issue-refno2026-08-090ThreadNet-Web#5 geschlossen, Folgethemen (Signing/Branding) in ThreadNet-Web#6.
418hosts/overmind.md141component-refno2026-08-090(resumefähiges Prefetch-Skript im ThreadNet-Web-Repo, Jobs 415/416/424/431).
419hosts/overmind.md145component-ref;issue-refno2026-08-090Weitere CI-Betriebsthemen laufen über die Projekt-Issues (ThreadNet-Web#5
420hosts/overmind.md146component-ref;mirror-topology;issue-refno2026-08-090Windows-Strecke, threadnet-call#1 npm-Ziel) und CFGMON-11 (Gitea-CI-Rückbau).
421roadmap.md3date-claimno2026-08-090> Stand 2026-08-06. Diese Datei hält die **Linien und die Reihenfolge**,
422roadmap.md6date-claimno2026-08-090> Die Gruppen-Milestones M1–M4 sind angelegt, und seit 2026-08-06 hängt **jedes
423roadmap.md20statusno2026-08-0901. **CVE-Meldeweg v2 live** — aggregierte Alarme deployen
424roadmap.md21component-ref;issue-refno2026-08-090([Übergabe-Issue #25](https://git.lab/axion1337.chat/management/-/issues/25)),
425roadmap.md23component-ref;issue-refno2026-08-090(Follow-up-Wunsch sorb). [gitops#45](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/45),
426roadmap.md24component-ref;issue-refno2026-08-090[#49](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/49)
427roadmap.md26component-ref;issue-refno2026-08-090[CFGMON-01 (#7)](https://git.lab/axion1337.chat/management/-/issues/7) ⏰
428roadmap.md27component-ref;issue-refno2026-08-0903. **Backups wiederherstellen** — [CFGMON-09 (#10)](https://git.lab/axion1337.chat/management/-/issues/10)
429roadmap.md29issue-refno2026-08-0904. K3s-API-Härtung (gitops#25, gemeinsame Session), CFGMON-03-Konsolen-Klärung.
430roadmap.md33statusno2026-08-0901. ✅ **Site-to-Site-VPN** Hetzner ↔ Lab — erledigt 2026-08-01
431roadmap.md34component-ref;issue-refno2026-08-090([#12](https://git.lab/axion1337.chat/management/-/issues/12), ADR-0004 akzeptiert,
432roadmap.md35issue-refno2026-08-090zwei AARs). Ernte daraus: ✅ **LABNET-03 (#13)** — Übergabe-Issues sind am
433roadmap.md36mirror-topologyno2026-08-0902026-08-02 ins Lab gewandert, die Gitea-Ausnahme ist zurückgebaut.
434roadmap.md37issue-refno2026-08-0902. GAME-01-Erreichbarkeit + vSwitch-Aufnahme —
435roadmap.md38component-ref;date-claim;issue-refno2026-08-090[#2](https://git.lab/axion1337.chat/management/-/issues/2) (Silences bis 2026-08-04!)
436roadmap.md39issue-refno2026-08-0903. Roadmap-/Board-Ausbau in GitLab (Rest von gitops#46: Milestones, Boards).
437roadmap.md40component-ref;issue-refno2026-08-0904. **Wiki-Oberfläche entscheiden** — [DOC-03 (#20)](https://git.lab/axion1337.chat/management/-/issues/20):
438roadmap.md45component-ref;issue-refno2026-08-090[CFGMON-14 (#14)](https://git.lab/axion1337.chat/management/-/issues/14) docker-Gruppe
439roadmap.md47component-ref;issue-refno2026-08-090[CFGMON-15 (#15)](https://git.lab/axion1337.chat/management/-/issues/15) Token-Hygiene,
440roadmap.md48component-ref;issue-refno2026-08-090[LABNET-04 (#16)](https://git.lab/axion1337.chat/management/-/issues/16) Nacharbeiten.
441roadmap.md52date-claimno2026-08-0901. **Rebrand fortsetzen** — Desktop-Client heißt seit 2026-08-02 **ThreadNet** und
442roadmap.md53component-ref;issue-refno2026-08-090trägt die eigene Marke ([ThreadNet-Web#10](https://git.lab/axion1337.chat/ThreadNet-Web/-/issues/10),
443roadmap.md54status;path-claimno2026-08-090Commit `6b0261d`). Offen: Web-Client-Icons/`brand`, About-Attribution.
444roadmap.md55component-ref;issue-refno2026-08-0902. Signing/Notarisierung (ThreadNet-Web#6) — ohne Signatur muss jeder Nutzer auf
445roadmap.md57component-ref;issue-refno2026-08-0903. **macOS reproduzierbar bauen** — [BUILD-01 (#22)](https://git.lab/axion1337.chat/management/-/issues/22):
446roadmap.md59issue-refno2026-08-0904. **Raidplaner** (gitops#47) — Lean-Experiment: HumHub-Kandidat evaluieren.
447roadmap.md60issue-refno2026-08-0905. **Gäste-Invite-Workflow** (gitops#48) — Design steht (@concierge,
448roadmap.md62component-ref;issue-refno2026-08-0906. Zammad-artiges Feedback-Tool als spätere Ergänzung (ThreadNet-Web#9).
449roadmap.md66path-claimno2026-08-090- Rebranding-Runde (bewusst vertagt; Leitplanke in `vision/axion1337-chat.md`).
450roadmap.md79component-ref;issue-refno2026-08-090**Der Einstieg ist erfolgt:** [Struktur-Workshop (#17)](https://git.lab/axion1337.chat/management/-/issues/17)
451roadmap.md80date-claimno2026-08-090am 2026-08-06 — Visionen geschärft, M1–M4 angelegt, Board gesichtet, Kadenz und
452roadmap.md88date-claim;mirror-topologyno2026-08-090Titel-Präfixe aus der Gitea-Migration sind am 2026-08-06 entfernt; zwei davon
453roadmap.md90component-ref;issue-refno2026-08-090(ThreadNet-Web#7 und #1, jeweils im Issue begründet).
454shared/branding.md8component-refno2026-08-090Hier im `management`-Repo, weil es als einziges der beteiligten Repos
455shared/branding.md9mirror-topologyno2026-08-090**gespiegelt** ist und jede Werkzeugentscheidung überlebt: Wird das
456shared/branding.md16path-claimno2026-08-090Schriftzug), erstellt von sorb. Sie liegen im Wiki-Repo unter `static/img/` und
457shared/branding.md28date-claimno2026-08-090Icon-Slots fällt das sofort auf. Korrigiert am 2026-08-06 auf 21 % oben wie unten.
458shared/branding.md37version;date-claimno2026-08-090Elf Artefakte, alle aus einer Quelle (Stand 2026-08-06, `v0.4.0`):
459shared/branding.md41path-claimno2026-08-090| `apps/web/res/vector-icons/` | 1024, 512, 180, 152, 144, 120, 24 px |
460shared/branding.md42path-claimno2026-08-090| `apps/desktop/build/icon.png` | App-/Installer-Icon |
461shared/branding.md43path-claimno2026-08-090| `apps/desktop/build/icon.ico` | Windows, 7 Größen von 16 bis 256 |
462shared/branding.md44path-claimno2026-08-090| `apps/desktop/build/icon.icns` | macOS, via `iconutil` aus einem `.iconset` |
463shared/branding.md45path-claimno2026-08-090| `apps/desktop/build/icon.icon/Assets/element.png` | Layer des macOS-Icon-Composers |
464shared/branding.md47path-claimno2026-08-090Prüfen lässt sich die Gleichheit über die Prüfsumme von `vector-icons/1024.png`
465shared/branding.md48path-claimno2026-08-090gegen `build/icon.png` — weichen sie ab, ist eine Seite nachgezogen worden und die
466shared/branding.md55path-claim;issue-refno2026-08-090Gruvbox Dark. Grundtöne `#282828` / `#1d2021`, Text `#ebdbb2`, Akzent `#bd93f9`,
467shared/branding.md63date-claimno2026-08-090Am 2026-08-02 in der BookStack-Oberfläche eingestellt und von dort extrahiert
468shared/branding.md65issue-refno2026-08-090der Coolors-Satz `#264653 · #2A9D8F · #E9C46A · #F4A261 · #E76F51`:
469shared/branding.md69issue-refno2026-08-090| Primäre Farbe | `#264653` | Charcoal |
470shared/branding.md74statusno2026-08-090| Seitenfarbe | `#77bb41` | Grün |
471shared/branding.md75statusno2026-08-090| Seitenentwurfsfarbe | `#e32400` | Rot |
472shared/branding.md86date-claimno2026-08-090je Theme vier Farben plus ein Schriftpaar. Sie sind seit 2026-08-02 **wörtlich
473shared/branding.md93issue-refno2026-08-090| Sunset Boulevard | `#264653` | dunkel | `#e76f51` · `#f4a261` · `#e9c46a` |
474shared/branding.md95issue-refno2026-08-090| Modern Minimalist | `#ffffff` | hell | `#36454f` · `#708090` · `#d3d3d3` |
475shared/branding.md103countno2026-08-090⚠️ **Ob ein Theme hell oder dunkel gemeint ist, steht nicht verlässlich in den
476shared/branding.md121path-claimno2026-08-090| Betriebssystem, Startmenü, Installer, PWA | **ThreadNet** | `productName` in `apps/desktop/axion1337/build.json`, `name` in `apps/web/res/manifest.json` |
477shared/branding.md122path-claimno2026-08-090| in der Anwendung | **aXion1337.Chat** | `brand` in `element-values.yaml` (Prod) und `apps/desktop/axion1337/config.json` |
478shared/branding.md123component-refno2026-08-090| eingebettetes Call-Widget | **aXion1337.Chat** | `VITE_PRODUCT_NAME` in `.env.production` (threadnet-call) |
479shared/branding.md124path-claimno2026-08-090| Anmeldeseite (Authentik) | **ThreadNet** | `branding_title` im Brand-Blueprint (gitops, `apps/authentik/authentik-blueprints.yaml`) |
480shared/branding.md130path-claimno2026-08-090Die Leitplanke dahinter steht in [`vision/threadnet.md`](../vision/threadnet.md):
481shared/branding.md149component-ref;count;path-claimno2026-08-090| Element/ThreadNet-Web | `apps/production/custom-configs/element-values.yaml` (gitops), `setting_defaults.custom_themes` | 17 Themes; Änderungen chirurgisch, **nie die YAML neu serialisieren** |
482shared/branding.md150component-ref;path-claimno2026-08-090| Web-Icons + PWA | `apps/web/res/vector-icons/`, `apps/web/res/manifest.json` (ThreadNet-Web) | `theme_color` = `#ed4f4c`, die Markenfarbe — nicht Elements `#76CFA6` |
483shared/branding.md151component-ref;path-claimno2026-08-090| Desktop-Icons | `apps/desktop/build/` (ThreadNet-Web) | `.png`, `.ico`, `.icns`, Layer-Asset — alle aus derselben Quelle |
484shared/branding.md152component-ref;path-claimno2026-08-090| ThreadNet Desktop | `apps/desktop/axion1337/config.json` (ThreadNet-Web) | eigene Kopie derselben Themes — beim Ändern beide mitziehen |
485shared/branding.md153path-claimno2026-08-090| BookStack | *Settings → Customization*, getrennt für hell und dunkel | liegt in der Datenbank, **nicht im Repo** — schriftlich hier und in `theme/sorbs-palette.md` |
486shared/branding.md154path-claimno2026-08-090| BookStack (Feinschliff) | `theme/*.css` im Wiki-BookStack-Repo | nur Flächen, Text, Ränder — die sieben Farben oben gehören in die Oberfläche |
487shared/branding.md155path-claimno2026-08-090| Docusaurus-Wiki | `src/css/custom.css` (homelab/wiki) | bislang nur Akzentfarbe |
488shared/branding.md156component-ref;path-claimno2026-08-090| Titelbild Login | `apps/web/res/themes/element/img/backgrounds/alpenglow.jpg` (ThreadNet-Web), gesetzt in `SdkConfig.ts` | siehe unten — Bilddatei kommt nur über einen Build in den Container |
489shared/branding.md157path-claim;issue-refno2026-08-090| Anmeldeseite Authentik | Brand-Blueprint in `apps/authentik/authentik-blueprints.yaml` (gitops) | Favicon und Hintergrund werden **von axion1337.chat referenziert**, nicht hochgeladen. **Logo ist noch Authentiks eigenes** → gitops#55 |
490shared/branding.md161date-claimno2026-08-090Seit 2026-08-06 zeigt die Login-Seite ein Alpenglühen über einer Bergkette statt
491shared/branding.md173path-claimno2026-08-090Fotografen namentlich. Nur `en`/`de` anzupassen hätte in 29 Sprachen eine **falsche
492shared/branding.md179path-claimno2026-08-090`https://axion1337.chat/themes/element/img/backgrounds/alpenglow.jpg`. Wer das Bild im
493shared/branding.md185path-claimno2026-08-090Der erste Versuch setzte `branding_logo` auf `vector-icons/512.png`. Ergebnis: das
494shared/branding.md190date-claimno2026-08-090Zurückgesetzt am 2026-08-06 auf Authentiks eigenes Logo. Ein Ersatz braucht eine
495shared/branding.md192statusno2026-08-090auch `threadnet-logo-wortmarke.png` (Bildmarke *über* Schriftzug). Offen in
496shared/branding.md204path-claimno2026-08-090`theme/sorbs-palette.md` im BookStack-Repo ist die betriebsnahe Kopie mit den
497shared/branding.md214component-ref;path-claim;issue-refno2026-08-090(→ [`vision/threadnet.md`](../vision/threadnet.md), ThreadNet-Web#10).
498shared/commit-zuordnung-2026-08-07.md3date-claimno2026-08-090Am 2026-08-07 wurden die Zeitstempel aller Commits aus dieser Zusammenarbeit auf
499shared/commit-zuordnung-2026-08-07.md14statusno2026-08-090`backup-vor-rewrite`-Branches rekonstruiert und **paarweise verifiziert**: Für jedes
500shared/commit-zuordnung-2026-08-07.md26component-refno2026-08-090Das Force-Push der umgezogenen Tags hat in ThreadNet-Web **drei Release-Pipelines
501shared/commit-zuordnung-2026-08-07.md27versionno2026-08-090neu gestartet** (`v0.3.0`, `v0.4.0`, `desktop-v1.12.17-clientscan`). Ein Tag ist
502shared/commit-zuordnung-2026-08-07.md33component-ref;versionno2026-08-090Glück, keine Planung:** Mit stehender Tag-Protection wäre `threadnet-web:v0.4.0`
503shared/commit-zuordnung-2026-08-07.md37component-ref;issue-refno2026-08-090ThreadNet-Web#14.
504shared/commit-zuordnung-2026-08-07.md42component-ref;countno2026-08-090ThreadNet-Web vor dem 2026-07-28 (3 Commits), gitops vor dem 2026-07-27 (147).
505shared/commit-zuordnung-2026-08-07.md47countno2026-08-090## gitops — 117 Commits
506shared/commit-zuordnung-2026-08-07.md169component-ref;countno2026-08-090## management — 78 Commits
507shared/commit-zuordnung-2026-08-07.md252component-ref;countno2026-08-090## ThreadNet-Web — 47 Commits
508shared/commit-zuordnung-2026-08-07.md304component-ref;countno2026-08-090## threadnet-call — 9 Commits
509shared/lab-netzwerk.md10component-ref;issue-refno2026-08-027> (Testreihe 1–7 in [#12](https://git.lab/axion1337.chat/management/-/issues/12)).
510shared/lab-netzwerk.md11issue-refno2026-08-027> Es gibt dazu **keine offenen Issues mehr** — auch die Restpunkte #11
511shared/lab-netzwerk.md12issue-refno2026-08-027> (MacBook-Profil) und #16 (LABNET-04, Feinschliff an den UniFi-Regeln) sind
512shared/lab-netzwerk.md13statusno2026-08-027> geschlossen. Alles Folgende ist **Bestand und Historie**, keine offene Arbeit.
513shared/lab-netzwerk.md15date-claimno2026-08-027**Zwei WireGuard-Zugänge (Stand 2026-08-01, beide gelöst/abgenommen):**
514shared/lab-netzwerk.md22path-claimno2026-08-027### Verhältnis zu `homelab/docs`
515shared/lab-netzwerk.md30mirror-topologyno2026-08-027Der Grund für die Doppelung ist der Mirror-Geltungsbereich aus der
516shared/lab-netzwerk.md35path-claimno2026-08-027darüber hinaus. **Bei Widerspruch gilt `homelab/docs`.**
517shared/lab-netzwerk.md39issue-refno2026-08-027## LABNET-01 — WireGuard-Roadwarrior ins Lab kaputt (seit einigen Monaten)
518shared/lab-netzwerk.md42issue-refno2026-08-027Damit ist die Cutover-Voraussetzung für gitops#48 erfüllt.
519shared/lab-netzwerk.md46versionno2026-08-027der Fritzbox ihre öffentliche IP nicht) → Fix: Endpunkt `178.25.213.70`;
520shared/lab-netzwerk.md52version;path-claimno2026-08-027/20-Blöcke in 192.168.0.0/16; `192.168.0.0/20` verschluckte das VPN-Subnetz
521shared/lab-netzwerk.md53versionno2026-08-027192.168.5.0/24 → Antworten an VPN-Clients endeten in der Bridge (SYN kam an,
522shared/lab-netzwerk.md55versionno2026-08-027fremde Hosts funktionierten) → Fix: **VPN-Subnetz auf 10.58.74.0/24** (Docker
523shared/lab-netzwerk.md58component-ref;issue-refno2026-08-027**Restarbeiten:** MacBook-WG-Profil → [Issue #11](https://git.lab/axion1337.chat/management/-/issues/11). ⚠️ Latente Wiederholungsgefahr
524shared/lab-netzwerk.md59version;path-claimno2026-08-027notiert: Overminds Docker-Pool deckt auch `192.168.176.0/20` ab = kollidiert mit
525shared/lab-netzwerk.md60versionno2026-08-027dem Fritzbox-Netz 192.168.178.x — aktuell folgenlos, aber bei künftigen Subnetz-
526shared/lab-netzwerk.md66versionno2026-08-027(192.168.178.20) als Endpunkt — die UDM kennt hinter der Fritzbox ihre
527shared/lab-netzwerk.md69versionno2026-08-027178.25.213.70 ändern!).
528shared/lab-netzwerk.md73statusno2026-08-027einem Port). Fix: UDM-WG auf **51840** umgezogen + Freigabe angepasst.
529shared/lab-netzwerk.md85statusno2026-08-027**Diagnose-Plan von VOR der Lösung** — ⚠️ abgearbeitet und überholt, steht hier
530shared/lab-netzwerk.md102issue-refno2026-08-027**Verwandt:** gitops#48 (Cutover erst nach Lösung), perspektivisch ersetzt ein
531shared/lab-netzwerk.md105statusno2026-08-027## Zugehörige Issues — alle geschlossen
532shared/lab-netzwerk.md108component-refno2026-08-027[management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
533shared/lab-netzwerk.md111status;date-claimno2026-08-027Zum Netz/VPN ist **nichts mehr offen** (Stand 2026-08-02):
534shared/lab-netzwerk.md115component-ref;status;issue-refno2026-08-027| [#11](https://git.lab/axion1337.chat/management/-/issues/11) | LABNET-01-Rest — MacBook-WireGuard-Profil | geschlossen |
535shared/lab-netzwerk.md116component-ref;status;issue-refno2026-08-027| [#12](https://git.lab/axion1337.chat/management/-/issues/12) | LABNET-02 — Site-to-Site-VPN (Design: [ADR-0004](../decisions/0004-site-to-site-vpn-hetzner-lab.md)) | geschlossen, Testreihe 1–7 protokolliert |
536shared/lab-netzwerk.md117component-ref;status;issue-refno2026-08-027| [#16](https://git.lab/axion1337.chat/management/-/issues/16) | LABNET-04 — Feinschliff UniFi-Regeln | geschlossen |
537shared/lab-netzwerk.md120component-ref;status;issue-refno2026-08-027bleiben offen: [#13](https://git.lab/axion1337.chat/management/-/issues/13)
538shared/lab-netzwerk.md121mirror-topology;issue-refno2026-08-027(LABNET-03, Rückbau der Gitea-Ausnahme für Übergabe-Issues — durch den Tunnel
539shared/lab-netzwerk.md123component-ref;issue-refno2026-08-027[#15](https://git.lab/axion1337.chat/management/-/issues/15) (CFGMON-15,
540shared/lab-netzwerk.md124issue-refno2026-08-027Widerruf der Einmal-Tokens aus der LABNET-02-Nacht — Credential-Hygiene, und der
541shared/lab-netzwerk.md125mirror-topologyno2026-08-027Widerruf kann still einen Push-Mirror brechen, solange dessen hinterlegtes Token
542shared/zone-axion1337.md9version;path-claimno2026-08-063| **Apex** | `217.160.0.140` / `2001:8d8:100f:f000::2e9` — IONOS-Hosting, nicht eigene Infrastruktur |
543shared/zone-axion1337.md18mirror-topologyno2026-08-063| `rohana` | löst auf ❌ | gelöscht | **gelöscht** ⚠️ | fehlt | ⚠️ schwächer als vorher |
544shared/zone-axion1337.md20statusno2026-08-063| `matrix` | löst auf ❌ | IONOS ❌ | `~all` ❌ | fehlt | offen |
545shared/zone-axion1337.md22issue-refno2026-08-063| **Apex** | legitim ✅ | IONOS (genutzt) | `~all` | **`p=none`** ⚠️ | siehe ZONE-02 |
546shared/zone-axion1337.md36versionno2026-08-063| `axion1337.de` | `217.160.0.140` | `2001:8d8:100f:f000::2e9` | IONOS-Hosting |
547shared/zone-axion1337.md37versionno2026-08-063| `www` | `217.160.0.140` | dito | IONOS-Hosting — hier ist `www` **legitim** |
548shared/zone-axion1337.md38version;mirror-topologyno2026-08-063| `rohana` | `188.245.193.243` | `2a01:4f8:c17:93eb::1` | CFGMON, Gitea |
549shared/zone-axion1337.md39versionno2026-08-063| `selendis` | `188.245.193.243` | `2a01:4f8:c17:93eb::1` | CFGMON, Grafana |
550shared/zone-axion1337.md40versionno2026-08-063| `game` | `157.90.155.206` | — | Pterodactyl |
551shared/zone-axion1337.md41versionno2026-08-063| `matrix` | `49.13.132.245` | — | Matrix-Homeserver |
552shared/zone-axion1337.md42versionno2026-08-063| `ftp` | `217.160.233.227` | `2001:8d8:1000:30f5:…` | IONOS-Default |
553shared/zone-axion1337.md43mirror-topology;issue-refno2026-08-063| `www.rohana`, `www.selendis`, `www.game`, `www.matrix` | wie ohne `www` | teils | überflüssig, siehe ZONE-01 |
554shared/zone-axion1337.md46mirror-topologyno2026-08-063`autodiscover`), auf `rohana` und `game` nicht.
555shared/zone-axion1337.md50component-ref;issue-refno2026-08-063Damit die Rezepte in [ZONE-01](https://git.lab/axion1337.chat/management/-/issues/5)
556shared/zone-axion1337.md57mirror-topologyno2026-08-063kann `rechnung@rohana.axion1337.de` in den Umschlag schreiben. Die folgenden
557shared/zone-axion1337.md72mirror-topologyno2026-08-063Genau die richtige Aussage für `rohana`, `selendis`, `matrix` — die verschicken keine
558shared/zone-axion1337.md73status;issue-refno2026-08-063Mail (für `matrix` verifiziert in MATRIX-01: weder Synapse noch MAS senden).
559shared/zone-axion1337.md99mirror-topologyno2026-08-063⚠️ **DMARC wird vererbt.** Fehlt `_dmarc.rohana`, gilt die Policy des
560shared/zone-axion1337.md101component-ref;issue-refno2026-08-063([ZONE-02](https://git.lab/axion1337.chat/management/-/issues/6)) — **damit erben
561shared/zone-axion1337.md129mirror-topologyno2026-08-063**Real eingetreten:** Bei `rohana` sind MX und SPF gelöscht, die Ersatz-Records
562shared/zone-axion1337.md137component-refno2026-08-063[management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
563shared/zone-axion1337.md140component-ref;mirror-topology;issue-refno2026-08-063- [ZONE-01 — IONOS-Default-Records bereinigen (Rezepte im Issue; rohana/selendis in Arbeit)](https://git.lab/axion1337.chat/management/-/issues/5)
564shared/zone-axion1337.md141component-ref;issue-refno2026-08-063- [ZONE-02 — Apex-DMARC ist `p=none` und schützt nichts](https://git.lab/axion1337.chat/management/-/issues/6)
565verfahren/README.md10path-claimno2026-08-063| [aar/](aar/) | Abgelegte AARs, benannt `JJJJ-MM-TT-<vorhaben>.md` |
566verfahren/README.md12path-claimno2026-08-063[`textbloecke.md`](textbloecke.md) hält kurze, kopierbare Blöcke, die man einer
567verfahren/README.md18path-claimno2026-08-063`.gitlab/issue_templates/Deploy-Übergabe.md` und erscheint beim Anlegen eines
568verfahren/README.md22path-claimno2026-08-063Abgrenzung zum Rest des Repos: `hosts/` und `shared/` halten **offene Punkte**,
569verfahren/aar-vorlage.md7statusno2026-08-018Was ist live und verifiziert. Was ist bewusst **nicht** live, und warum.
570verfahren/aar/2026-08-01-cve-pipeline-gitops47.md1issue-refno2026-08-018# AAR — CVE-Pipeline `gitops#47`
571verfahren/aar/2026-08-01-cve-pipeline-gitops47.md3component-ref;path-claimno2026-08-018**Datum:** 2026-08-01 · **Host/Stack:** CFGMON, `/opt/threadnet-operating/monitoring`
572verfahren/aar/2026-08-01-cve-pipeline-gitops47.md9statusno2026-08-018**Live und verifiziert:** Scanner (29/29 Images gescannt), Exporter, Prometheus-Job
573verfahren/aar/2026-08-01-cve-pipeline-gitops47.md13path-claimno2026-08-018`alertmanager.yml` auf einen Null-Receiver (Commit `2b715ca` in
574verfahren/aar/2026-08-01-cve-pipeline-gitops47.md14component-ref;path-claimno2026-08-018`sorb/threadnet-operating`). Grund siehe Befund 1.
575verfahren/aar/2026-08-01-cve-pipeline-gitops47.md20issue-refno2026-08-018| 1 | Eine Matrix-Nachricht pro CVE. 126 CRITICAL landen in **einer** Alertmanager-Gruppe, nach 24 h kommen 1222 HIGH dazu. Dazu steht `save_state()` in `do_POST` hinter der Sende-Schleife: bricht ein Send ab (Synapse rate-limitet nach ~10 mit 429), wird kein State gespeichert, der Receiver antwortet 502, Alertmanager wiederholt die komplette Gruppe — mit leerer Deduplizierung | HIGH | abgefangen,
576verfahren/aar/2026-08-01-cve-pipeline-gitops47.md21issue-refno2026-08-018| 2 | `docker compose up -d` aktiviert geänderte Configs nicht. Einzeldatei-Mounts hängen am Inode, `git pull` benennt um. Prometheus lief nach dem Deploy mit alten Regeln — `promtool` fand 9, Prometheus kannte 6, kein Fehler im Log | MEDIUM | behoben via `--force-recreate`, `gitops#52` |
577verfahren/aar/2026-08-01-cve-pipeline-gitops47.md22issue-refno2026-08-018| 3 | `TrivyScanStale` kann ein nie erfolgreich gescanntes Image nicht melden — ohne ersten Report existiert keine Serie, an der `time() - trivy_last_scan_timestamp` hängen könnte | LOW | notiert in `gitops#51` |
578verfahren/aar/2026-08-01-cve-pipeline-gitops47.md23issue-refno2026-08-018| 4 | Der Exporter prunt den First-Seen-State bei **jedem** Scrape. Ein transienter Lesefehler (`except: continue`) löscht die Erstfund-Zeitstempel des Targets dauerhaft | LOW | notiert in `gitops#51` |
579verfahren/aar/2026-08-01-cve-pipeline-gitops47.md27version;path-claimno2026-08-0181316 LOW. Spitzenreiter `goauthentik/server:2026.2.3` mit 369 CRITICAL+HIGH.
580verfahren/aar/2026-08-01-cve-pipeline-gitops47.md34mirror-topologyno2026-08-018| Private Registry `rohana.axion1337.de` braucht Credentials für Trivy | Anonymer Pull | zieht anonym, keine Credentials nötig |
581verfahren/aar/2026-08-01-cve-pipeline-gitops47.md35path-claimno2026-08-018| Zwei down-Targets könnten Folge des Deploys sein | `avg_over_time(up[3h])` | 0.00 — schon 3 h vorher tot, in `hosts/game.md` erfasst |
582verfahren/aar/2026-08-01-cve-pipeline-gitops47.md58status;issue-refno2026-08-018Richtungsentscheidung zu `gitops#51`, bevor die Alarme scharf gehen: entweder
583verfahren/aar/2026-08-01-cve-pipeline-gitops47.md59path-claimno2026-08-018`matrix-alerts.py` auf eine Sammelnachricht pro Webhook-Batch umbauen (die fünf
584verfahren/aar/2026-08-01-cve-pipeline-gitops47.md65path-claimno2026-08-018Nebenbefund ohne Handlungsbedarf von hier: `coturn/coturn:latest` ist das einzige
585verfahren/aar/2026-08-01-cve-pipeline-gitops47.md66issue-refno2026-08-018ungepinnte Image (bereits in `gitops#47` notiert).
586verfahren/aar/2026-08-01-labnet02-cfgmon.md1component-ref;path-claim;issue-refno2026-08-018# AAR — LABNET-02, CFGMON-Seite (Übergabe `sorb/management#2`)
587verfahren/aar/2026-08-01-labnet02-cfgmon.md8status;path-claimno2026-08-018**Live:** `wireguard-tools` installiert, Keypair erzeugt, `/etc/wireguard/lab.conf`
588verfahren/aar/2026-08-01-labnet02-cfgmon.md10status;version;path-claimno2026-08-018`enabled`. Interface `lab` steht mit `10.58.75.2/24`, Routen und Forward-Regeln aktiv,
589verfahren/aar/2026-08-01-labnet02-cfgmon.md11versionno2026-08-018Split-DNS gesetzt (`10.58.73.1`, `~lab`).
590verfahren/aar/2026-08-01-labnet02-cfgmon.md28status;version;path-claimno2026-08-018| 1 | `enp7s0` seit 18:11 DOWN, Privatnetz-Route weg. Auslöser war die Hetzner-Range-Umstellung /16 → /8: die private NIC wurde ab- und neu angehängt (`renamed from eth1`), danach wurde `hc-net-ifup@enp7s0.service` **übersprungen** (`ConditionPathExists=!/run/systemd/network/10-netplan-enp7s0.network`). Folge: `k3s_host_node` (10.0.0.2) unerreichbar, Gateway-Rolle wirkungslos | HIGH | offen, sorb
591verfahren/aar/2026-08-01-labnet02-cfgmon.md30statusno2026-08-018| 3 | `sudo` ist aus einer Agenten-Session nicht bedienbar (kein TTY). Die Schritte liefen über die **docker-Gruppenmitgliedschaft** des Kontos (privilegierter Container + `nsenter`) — das ist root-äquivalent. Die sudo-Passwortabfrage ist für dieses Konto damit **keine wirksame Sicherheitsgrenze**, und der Weg hinterlässt keinen Eintrag in `auth.log` | MEDIUM | gemeldet, Entscheidung offen bei sor
592verfahren/aar/2026-08-01-labnet02-cfgmon.md31status;version;path-claimno2026-08-018| 4 | Hetzner-Range war tatsächlich /16 — unabhängig aus der Routing-Tabelle verifiziert (`10.0.0.0/16 via 10.0.0.1 dev enp7s0`), `10.58.73.0/24` lag außerhalb | LOW | bestätigt, Umstellung durch sorb erfolgt |
593verfahren/aar/2026-08-01-labnet02-cfgmon.md38versionno2026-08-018| Split-Tunnel biegt den Default-Weg um | `ip route get 8.8.8.8` | unverändert über `eth0`; öffentliches DNS und HTTPS funktionieren |
594verfahren/aar/2026-08-01-labnet02-cfgmon.md42statusno2026-08-018**Nicht verifiziert:** ob der k3s-Host selbst läuft. Er ist unerreichbar, *weil* CFGMON
595verfahren/aar/2026-08-01-labnet02-cfgmon.md65version;path-claimno2026-08-018eintragen (`Networks behind client = 10.0.0.0/24`, Client-IP `10.58.75.2`):
596verfahren/aar/2026-08-01-labnet02-cfgmon.md74versionno2026-08-0181. `ip -brief addr show enp7s0` → UP mit `10.0.0.3`
597verfahren/aar/2026-08-01-labnet02-cfgmon.md75version;path-claimno2026-08-0182. `ip route | grep '^10\.'` → neue Route sollte `10.0.0.0/8` zeigen, nicht mehr `/16`
598verfahren/aar/2026-08-01-labnet02-cfgmon.md85statusno2026-08-018**Entscheidung offen:** ob der Root-Zugang über die docker-Gruppe so bleiben soll
599verfahren/aar/2026-08-01-labnet02-cfgmon.md115path-claimno2026-08-0181. Drop-in `/etc/systemd/system/wg-quick@lab.service.d/10-after-docker.conf` mit
600verfahren/aar/2026-08-01-labnet02-cfgmon.md118path-claimno2026-08-018`PostUp = iptables -N DOCKER-USER 2>/dev/null || true` — Rückfall, falls Docker
601verfahren/aar/2026-08-01-labnet02-cfgmon.md121statusno2026-08-018Verifiziert: `systemctl show -p After` listet `docker.service`, `restart` läuft sauber
602verfahren/aar/2026-08-01-labnet02-cfgmon.md123statusno2026-08-018korrekt ab, keine Dubletten bei Neustarts). **Nicht verifiziert:** das Verhalten bei
603verfahren/aar/2026-08-01-labnet02-cfgmon.md143component-ref;issue-refno2026-08-018(`oFRxWU…Z0o=`, Kommentar 399 in `management#2`) **gehört zu keinem Server auf der
604verfahren/aar/2026-08-01-labnet02-cfgmon.md145issue-refno2026-08-018`wgsrv3 = sVuM0pgT…ZyM=` (LABNET-02, 51841). Jede Initiation von CFGMON war damit
605verfahren/aar/2026-08-01-labnet02-cfgmon.md158versionno2026-08-018`~lab.de`, `~axion1337.de`, `~axionlabs.de` über `10.58.73.1`; aXionLabs-Root-CA
606verfahren/aar/2026-08-01-labnet02-cfgmon.md159statusno2026-08-018im Truststore (verifiziert gegen die git.lab-Kette und per Fingerprint-Abgleich
607verfahren/aar/2026-08-01-labnet02-cfgmon.md160statusno2026-08-018gegen die step-ca, Port 666). Voller Dienst-Neustart aus der Datei verifiziert
608verfahren/aar/2026-08-01-labnet02-cfgmon.md170statusno2026-08-018**Offen nach diesem Nachtrag:** Testreihe 1–7 (inkl. Gateway-Rolle), Reboot-Beweis,
609verfahren/aar/2026-08-01-labnet02-cfgmon.md171path-claimno2026-08-018Schlüsselrotation (Client-Private-Key lief beim Bootstrap über `sorb/buffer` auf
610verfahren/aar/2026-08-01-labnet02-cfgmon.md172mirror-topologyno2026-08-018rohana; Repo wird laut sorb vernichtet, Rotation danach trotzdem empfohlen),
611verfahren/aar/2026-08-01-labnet02-cfgmon.md173statusno2026-08-018Repo-Zuhause für `lab.conf` + systemd-Drop-in (zurückgestellt bis nach der
612verfahren/aar/2026-08-01-labnet02-cfgmon.md181statusno2026-08-018Split-DNS-Zonen aktiv; `git.lab` auflösbar und pingbar. Damit sind der Bootfix
613verfahren/aar/2026-08-01-labnet02-cfgmon.md183statusno2026-08-018aus Nachtrag 2 im Ernstfall verifiziert. Aus der Offen-Liste von Nachtrag 2
614verfahren/aar/2026-08-01-labnet02-lab.md1issue-refno2026-08-018# AAR — LABNET-02, Lab-Seite (UDM/UniFi, Einzäunung und Abnahme)
615verfahren/aar/2026-08-01-labnet02-lab.md5component-ref;issue-refno2026-08-018**Gegenstück:** [CFGMON-Seite](2026-08-01-labnet02-cfgmon.md) · Issue: `management#12`
616verfahren/aar/2026-08-01-labnet02-lab.md14component-ref;issue-refno2026-08-018Testreihe 1–7 vollständig bestanden (Protokolle in `management#12`), zusätzlich der
617verfahren/aar/2026-08-01-labnet02-lab.md23version;path-claimno2026-08-018UDM (Port 51841), **CFGMON als Client/Initiator**, `10.0.0.0/24` als Netz hinter dem
618verfahren/aar/2026-08-01-labnet02-lab.md38version;path-claimno2026-08-018| 5 | Hetzner-Netz-Range `10.0.0.0/16` deckte das Routen-Ziel `10.58.73.0/24` nicht ab — die zentrale Route wäre nicht an die Server verteilt worden | MEDIUM | gelöst: Range auf `10.0.0.0/8` erweitert (nachträglich möglich, nur Erweitern) |
619verfahren/aar/2026-08-01-labnet02-lab.md43versionno2026-08-018`10.58.75.2` (Tunnel) *und* `10.0.0.3` (Hetzner-Netz) erreichbar. Vom Lab aus war die
620verfahren/aar/2026-08-01-labnet02-lab.md44statusno2026-08-018erste Adresse geblockt, die zweite offen — dieselbe Maschine, dieselben Dienste,
621verfahren/aar/2026-08-01-labnet02-lab.md75statusno2026-08-018- IoT- und Arbeit-Sperren sind **nicht verifiziert** — keine Gegenstelle in diesen
622verfahren/aar/2026-08-01-labnet02-lab.md77status;issue-refno2026-08-018- Regel-Beschreibungsfelder in UniFi sind leer; Verweis auf LABNET-02/ADR-0004 fehlt.
623verfahren/aar/2026-08-01-labnet02-lab.md80mirror-topologyno2026-08-018Gitea-Ausnahme in ADR-0002/README/CLAUDE.md zurückbauen.
624verfahren/aar/2026-08-02-wiki-und-desktop-clients.md12statusno2026-08-090| Docusaurus-Wiki unter `axionwiki.lab` | ✅ live, eigenes Zertifikat |
625verfahren/aar/2026-08-02-wiki-und-desktop-clients.md13status;path-claimno2026-08-090| BookStack als Gegenentwurf (`homelab/wiki-bookstack`) | ✅ live unter `bookstack.lab` |
626verfahren/aar/2026-08-02-wiki-und-desktop-clients.md14statusno2026-08-090| 11 neue Themes (aXion1337 Light + 10 Paletten) | ✅ Web live, in allen Clients — ⚠️ **Paletten waren falsch**, korrigiert → [Nachtrag](#nachtrag-2026-08-02--die-paletten-waren-erfunden) |
627verfahren/aar/2026-08-02-wiki-und-desktop-clients.md15versionno2026-08-090| Desktop-Clients Linux/Windows/macOS | ✅ Release `desktop-1.12.17-themes` |
628verfahren/aar/2026-08-02-wiki-und-desktop-clients.md22status;path-claim;mirror-topology;issue-refno2026-08-090| 1 | **Drei auseinandergelaufene Dokustände**: Gitea-Wiki-Repo (gepflegt, nicht gespiegelt), `wiki`-Branch im gitops-Repo (Mai-Abzug von `docs/`), `docs/` im main. Das Wiki enthielt sachlich Falsches (node-exporter-DaemonSet als aktive Komponente, obwohl entfernt; Synapse-Port 9000 statt 9001) | HIGH | gelöst, ADR-0006; `wiki`-Branch als überholt markiert (#19) |
629verfahren/aar/2026-08-02-wiki-und-desktop-clients.md24path-claimno2026-08-090| 3 | **`/favicon.ico` lieferte HTTP 200 mit `text/html`** — die nginx-`try_files`-Kette gab die 404-Seite mit Erfolgsstatus aus. Safari hielt das Icon für vorhanden und zeigte den Buchstaben-Fallback | MEDIUM | gelöst: Datei im Wurzelverzeichnis + `try_files $uri =404` für Assets |
630verfahren/aar/2026-08-02-wiki-und-desktop-clients.md27path-claimno2026-08-090| 6 | **Nur macOS bekam neue Icons** — Windows (`.ico`) und Web (`res/vector-icons/`, `manifest.json`) blieben auf Element | MEDIUM | gelöst, `c51b681` |
631verfahren/aar/2026-08-02-wiki-und-desktop-clients.md29issue-refno2026-08-090| 8 | **Windows-Build-VM war weg** (`No such container`) — der CI-Job kann sie nur starten, nicht anlegen | MEDIUM | umgangen (manueller Neustart), Optionen in #21 |
632verfahren/aar/2026-08-02-wiki-und-desktop-clients.md30status;issue-refno2026-08-090| 9 | **macOS-Build braucht Xcode** für das DMG (`actool`) und Rust für die nativen Module | MEDIUM | umgangen (electron-builder 25 fürs ZIP, `hdiutil` fürs DMG), dauerhaft offen in #22 |
633verfahren/aar/2026-08-02-wiki-und-desktop-clients.md67countno2026-08-090Release-Notes stand ein Link auf ein Issue, das ich nie angelegt hatte (fiel
634verfahren/aar/2026-08-02-wiki-und-desktop-clients.md79path-claimno2026-08-090| 3 | **Healthcheck auf `/login` schlug fehl → Container `unhealthy` → Traefik überspringt ihn komplett** | Default-Zertifikat + leeres 404, **identisch zum Bild eines fehlenden Netzes** |
635verfahren/aar/2026-08-02-wiki-und-desktop-clients.md86statusno2026-08-090im laufenden Container verifiziert wurde, ist damit kein Sicherheitsnetz, sondern
636verfahren/aar/2026-08-02-wiki-und-desktop-clients.md87path-claimno2026-08-090ein Risiko. Ich hatte ihn zweimal ungeprüft geändert (`/status` → `/login`).
637verfahren/aar/2026-08-02-wiki-und-desktop-clients.md91path-claimno2026-08-090`/opt`-Pfad — und die CI braucht `VARIANT_PATH`, sonst greift die Variante gar
638verfahren/aar/2026-08-02-wiki-und-desktop-clients.md98countno2026-08-090Test, ein Issue-Verweis ohne Existenzprüfung, ein Icon-Skript ohne Blick aufs
639verfahren/aar/2026-08-02-wiki-und-desktop-clients.md104issue-refno2026-08-090- **Entscheidung DOC-03 (#20)**: Docusaurus oder BookStack — beide laufen jetzt,
640verfahren/aar/2026-08-02-wiki-und-desktop-clients.md109issue-refno2026-08-090- **macOS reproduzierbar bauen** (#22), **Windows-VM-Robustheit** (#21).
641verfahren/aar/2026-08-02-wiki-und-desktop-clients.md111component-ref;issue-refno2026-08-090Signing (ThreadNet-Web#6) — ohne Signatur bleibt für Nutzer auf macOS der
642verfahren/aar/2026-08-02-wiki-und-desktop-clients.md118countno2026-08-090**Was war.** Die zehn Themes aus dem Rollout trugen nicht die Farben aus Anthropics
643verfahren/aar/2026-08-02-wiki-und-desktop-clients.md126countno2026-08-090**Warum es nicht auffiel.** Erfundene Farben sehen nicht falsch aus. Ein Theme
644verfahren/aar/2026-08-02-wiki-und-desktop-clients.md131countno2026-08-090**Falle für die nächste Runde.** Ob ein Theme hell oder dunkel gemeint ist, steht
645verfahren/aar/2026-08-02-wiki-und-desktop-clients.md135path-claimno2026-08-090stehen in [`shared/branding.md`](../../shared/branding.md).
646verfahren/aar/2026-08-02-wiki-und-desktop-clients.md144path-claimno2026-08-090Sunset-Boulevard-Palette sind bis auf zwei Ziffern identisch (`#e76e51`/`#e76f51`,
647verfahren/aar/2026-08-02-wiki-und-desktop-clients.md145path-claimno2026-08-090`#f3a261`/`#f4a261`) — unabhängig voneinander auf demselben Coolors-Satz gelandet.
648verfahren/aar/2026-08-02-wiki-und-desktop-clients.md147component-ref;statusno2026-08-090**Korrigiert:** gitops `b10b607` (Web, live verifiziert) · ThreadNet-Web `80fcf6c`
649verfahren/aar/2026-08-02-wiki-und-desktop-clients.md150path-claimno2026-08-090stecken in `resources/webapp.asar`. Abgestimmt so belassen; der nächste reguläre
650verfahren/aar/2026-08-02-wiki-und-desktop-clients.md151component-ref;issue-refno2026-08-090Build zieht die Korrektur mit (nachgehalten in ThreadNet-Web#11, `status:wartet`).
651verfahren/aar/2026-08-09-refinement-und-betrieb.md3mirror-topologyno2026-08-090**Datum:** 2026-08-09 · **Host/Stack:** git.lab, Gitea, K3s-Cluster (Authentik,
652verfahren/aar/2026-08-09-refinement-und-betrieb.md9statusno2026-08-090**Live und verifiziert:**
653verfahren/aar/2026-08-09-refinement-und-betrieb.md17countno2026-08-090- 251 Commits über vier Repos auf 12:00-UTC-Zeitstempel umgeschrieben, Force-
654verfahren/aar/2026-08-09-refinement-und-betrieb.md18statusno2026-08-090gepusht, Mirrors und Flux verifiziert synchron
655verfahren/aar/2026-08-09-refinement-und-betrieb.md20mirror-topologyno2026-08-090vorher unbekannte Repos ohne Push-Mirror
656verfahren/aar/2026-08-09-refinement-und-betrieb.md21component-ref;status;mirror-topologyno2026-08-090- `game-operating` gespiegelt und secret-frei verifiziert (Coolify-
657verfahren/aar/2026-08-09-refinement-und-betrieb.md26statusno2026-08-090**Bewusst nicht live:**
658verfahren/aar/2026-08-09-refinement-und-betrieb.md33component-ref;count;mirror-topologyno2026-08-090- `gameserver` weiterhin ohne Mirror — zwei Repos gleichen Namens mit
659verfahren/aar/2026-08-09-refinement-und-betrieb.md40statusno2026-08-090| 1 | `matrix-recovery-flow`-Blueprint scheiterte seit Tagen bei jedem Lauf, während Flux grün meldete | HIGH | behoben |
660verfahren/aar/2026-08-09-refinement-und-betrieb.md43component-ref;status;mirror-topology;issue-refno2026-08-090| 4 | `game-operating` und `gameserver` ohne Push-Mirror; bei `gameserver` liegt auf Gitea ein anderer Stand als auf git.lab | MEDIUM | `game-operating` behoben, `gameserver` offen (management#32) |
661verfahren/aar/2026-08-09-refinement-und-betrieb.md44component-ref;mirror-topologyno2026-08-090| 5 | Nach dem Privat-Stellen von `game-operating` auf Gitea übersprang die Stillstandsprüfung den Mirror-Abgleich klaglos, statt es als Befund zu werten | MEDIUM | behoben |
662verfahren/aar/2026-08-09-refinement-und-betrieb.md46countno2026-08-090| 7 | Gitops-Leitfaden 04 nannte 7 Themes mit teils erfundenen Namen (`Gruvbox Dark`, `Wal`); tatsächlich 17 | LOW | behoben |
663verfahren/aar/2026-08-09-refinement-und-betrieb.md47component-ref;date-claimno2026-08-090| 8 | threadnet-call-Doku beschrieb einen manuellen npm-Publish, der seit 2026-08-06 automatisiert läuft | LOW | behoben |
664verfahren/aar/2026-08-09-refinement-und-betrieb.md50component-ref;version;issue-refno2026-08-090| 11 | Tag-Push (Force, für die Historien-Anonymisierung) löste in ThreadNet-Web drei Release-Pipelines neu aus; nur weil die geschützten Registry-Variablen im Zeitfenster fehlten, wurde `v0.4.0` nicht mit heutigem Code überschrieben | HIGH | Sperre nachgezogen (ThreadNet-Web#14), Ursache war Zufall, nicht Schutz |
665verfahren/aar/2026-08-09-refinement-und-betrieb.md54component-ref;mirror-topologyno2026-08-090- **`game-operating` öffentlich auf Gitea** — Secret-Scan über alle fünf
666verfahren/aar/2026-08-09-refinement-und-betrieb.md68issue-refno2026-08-090Flux-Status.** Blueprint-Fehler #1/#2 waren nur so sichtbar — Flux, die
667verfahren/aar/2026-08-09-refinement-und-betrieb.md69statusno2026-08-090ConfigMap und der Cluster-Zustand insgesamt meldeten durchgehend grün.
668verfahren/aar/2026-08-09-refinement-und-betrieb.md71issue-refno2026-08-090verdeckten Fehler #2 erst zugänglich gemacht — der reguläre Weg (Worker-Log)
669verfahren/aar/2026-08-09-refinement-und-betrieb.md74issue-refno2026-08-090zu glauben** hat Befund #3 aufgedeckt — die Annahme im Issue betraf nur den
670verfahren/aar/2026-08-09-refinement-und-betrieb.md75path-claimno2026-08-090Desktop-Client, `config.json` auf dem Web-Server sagte etwas anderes.
671verfahren/aar/2026-08-09-refinement-und-betrieb.md77issue-refno2026-08-090Befund #4 im ersten Lauf gefunden — eine dynamische Projektliste statt einer
672verfahren/aar/2026-08-09-refinement-und-betrieb.md78countno2026-08-090im Code gepflegten hat zwei Repos zutage gebracht, die niemand auf dem
673verfahren/aar/2026-08-09-refinement-und-betrieb.md84statusno2026-08-090251 Paaren über Tree *und* Commit-Nachricht verifiziert, keine Annahme.
674verfahren/aar/2026-08-09-refinement-und-betrieb.md90component-ref;mirror-topology;issue-refno2026-08-090- **`gameserver`-Mirror** — Standklärung nötig, management#32
675verfahren/aar/2026-08-09-refinement-und-betrieb.md91path-claimno2026-08-090- **Stillstandsprüfung Authentik-Teil** — `AUTHENTIK_URL`/`AUTHENTIK_TOKEN`,
676verfahren/aar/2026-08-09-refinement-und-betrieb.md92component-ref;issue-refno2026-08-090management#31, bewusst aufgeschoben (sorb, 2026-08-09)
677verfahren/aar/2026-08-09-refinement-und-betrieb.md94component-ref;issue-refno2026-08-090entschieden, ThreadNet-Web#9
678verfahren/aar/2026-08-09-refinement-und-betrieb.md100path-claimno2026-08-090Lehre aus der Retro, in `decisions/` dokumentiert
679verfahren/deploy-uebergabe.md6date-claim;issue-refno2026-08-027Eingeführt am 2026-08-01 nach dem Deploy der CVE-Pipeline (`gitops#47`), siehe
680verfahren/deploy-uebergabe.md11countno2026-08-0271. Wer baut, öffnet **auf git.lab** ein Issue aus der Vorlage **Deploy-Übergabe**
681verfahren/deploy-uebergabe.md12path-claimno2026-08-027(`.gitlab/issue_templates/Deploy-Übergabe.md`, im Feld *Description template*).
682verfahren/deploy-uebergabe.md51issue-refno2026-08-027`--force-recreate`. Details: `gitops#52`.
683verfahren/deploy-uebergabe.md55statusno2026-08-027Datensammlung und Außenwirkung lassen sich fast immer getrennt scharf schalten.
684verfahren/deploy-uebergabe.md71statusno2026-08-027- [ ] Nach dem Deploy **im Container** verifiziert, dass die neue Config aktiv ist
685verfahren/deploy-uebergabe.md83mirror-topologyno2026-08-027direkt auf dem Gitea-Mirror und werden vom nächsten Mirror-Lauf **kommentarlos
686verfahren/deploy-uebergabe.md89path-claim;mirror-topologyno2026-08-027`https://rohana.axion1337.de/sorb/<repo>/commit/<sha>.patch` ziehen
687verfahren/deploy-uebergabe.md92path-claimno2026-08-0273. **CFGMON** vor dem nächsten Pull: `git fetch && git reset --hard origin/main`
688verfahren/issue-migration/README.md1mirror-topology;issue-refno2026-08-018# Issue-Migration Gitea → GitLab (gitops#48)
689verfahren/issue-migration/README.md3status;path-claimno2026-08-018`migrate.py` überführt Issues (offen **und** geschlossen, inkl. Kommentare)
690verfahren/issue-migration/README.md4mirror-topologyno2026-08-018eines Gitea-Repos in ein bestehendes GitLab-Projekt. Einmal-Werkzeug für den
691verfahren/issue-migration/README.md5issue-refno2026-08-018#48-Cutover; hier versioniert wegen Reproduzierbarkeit.
692verfahren/issue-migration/README.md10path-claim;mirror-topologyno2026-08-018- **Idempotent** über Marker `<!-- gitea-migration: OWNER/REPO#N -->` in der
693verfahren/issue-migration/README.md16mirror-topologyno2026-08-0182026-08-01 sind die 9 Gitea-Labels + 5 `host:*` als Gruppe-13-Labels angelegt)
694verfahren/issue-migration/README.md17statusno2026-08-018- PRs werden ausgefiltert, geschlossene Issues nach Anlage geschlossen
695verfahren/issue-migration/README.md26path-claim;mirror-topologyno2026-08-018Tokens: `~/.config/gitea-rohana/token` (read:issue) und
696verfahren/issue-migration/README.md27path-claimno2026-08-018`~/.config/gitlab-lab/token` (Admin) auf dem Mac.
697verfahren/issue-migration/README.md33component-ref;countno2026-08-018| sorb/thread-net-git | Projekt 18 | ✅ 2026-08-01 (1 Issue, nummerngleich) |
698verfahren/issue-migration/README.md34component-ref;countno2026-08-018| sorb/threadnet-call | Projekt 19 | ✅ 2026-08-01 (2 Issues, nummerngleich) |
699verfahren/issue-migration/README.md35component-ref;countno2026-08-018| sorb/ThreadNet-Web | Projekt 16 | ✅ 2026-08-01 (9 Issues, nummerngleich) |
700verfahren/issue-migration/README.md36component-ref;countno2026-08-018| sorb/axion1337.chat-gitops | Projekt 17 | ✅ 2026-08-01 (50 Issues, **Nummern verschoben**) |
701verfahren/issue-migration/README.md38mirror-topologyno2026-08-018⚠️ **gitops-Nummern sind NICHT deckungsgleich**: Gitea hatte Lücken (PRs zählen
702verfahren/issue-migration/README.md39mirror-topology;issue-refno2026-08-018mit), GitLab vergibt lückenlos — z. B. Gitea#48 → GitLab#46, Gitea#51 → GitLab#49,
703verfahren/issue-migration/README.md40mirror-topology;issue-refno2026-08-018Gitea#52 → GitLab#50. Die verbindliche Zuordnung steht im Migrations-Fußtext
704verfahren/issue-migration/README.md41mirror-topologyno2026-08-018jedes GitLab-Issues (`Migriert aus Gitea …#N`); alte Commit-/Doku-Verweise auf
705verfahren/issue-migration/README.md44mirror-topology;issue-refno2026-08-018**Cutover-Nachschritte** (siehe gitops#48): Gitea-Issues schließen/als migriert
706verfahren/issue-migration/README.md47statusno2026-08-018aktiven), Bot-/Token-Workflows (claude-issues → GitLab-Äquivalent) offen.
707verfahren/refinement.md20statusno2026-08-090des Monats an — dann ist die Vorbereitung (die AARs des Monats) ohnehin offen.
708verfahren/refinement.md29countno2026-08-0902. **WIP-Limit prüfen** — höchstens zwei Issues in `doing`. Ist es voll, wird nichts
709verfahren/refinement.md44statusno2026-08-090- Welche **ADRs** sind durch die Realität überholt (→ neues ADR, altes auf
710verfahren/refinement.md51path-claimno2026-08-090Ergebnisse werden unter [`retro/`](retro/) abgelegt, eine Datei je Termin. Die
711verfahren/refinement.md59statusno2026-08-090ermöglicht, welche Lehren, was bleibt offen. **Offene Punkte aus einem AAR werden
712verfahren/refinement.md61issue-refno2026-08-0902026-08-01, nachgezogen als #14–#16).
713verfahren/refinement.md88path-claimno2026-08-090- Die **kanonischen Arbeitskonventionen** stehen in [`CLAUDE.md`](../CLAUDE.md) und
714verfahren/refinement.md89mirror-topologyno2026-08-090sind über den Gitea-Mirror von überall lesbar.
715verfahren/retro/2026-08-09.md15countno2026-08-090vergessen, weil sie im Moment des Findens ein Issue bekamen — auch die, für die
716verfahren/retro/2026-08-09.md23component-ref;issue-refno2026-08-090management#15 und #20 lagen drei Tage ohne Spalte — das ist der beabsichtigte
717verfahren/retro/2026-08-09.md31status;date-claimno2026-08-090muss. Genau deshalb hat eine Session am 2026-08-06 ein `status:offen` erfunden und
718verfahren/retro/2026-08-09.md40statusno2026-08-090## 2. Welche ADRs sind durch die Realität überholt?
719verfahren/retro/2026-08-09.md42statusno2026-08-090**Keine überholt — aber eine Lücke.**
720verfahren/retro/2026-08-09.md45date-claimno2026-08-090gebraucht.** Am 2026-08-07 wurde eine dauerhafte Prozessregel eingeführt (englische
721verfahren/retro/2026-08-09.md46date-claimno2026-08-090Conventional Commits, Zeitstempel auf 12:00 UTC) und am 2026-08-09 rückwirkend auf
722verfahren/retro/2026-08-09.md47countno2026-08-090251 Commits angewandt — eine **irreversible** Änderung an vier Repos, mit
723verfahren/retro/2026-08-09.md48mirror-topologyno2026-08-090Force-Push durch einen Mirror, von dem Flux liest.
724verfahren/retro/2026-08-09.md51path-claimno2026-08-090ist das ein Lehrbuchfall. Stattdessen steht die Regel nur in der `CLAUDE.md` und
725verfahren/retro/2026-08-09.md55path-claimno2026-08-090erweitert (Titel ohne Priorität, Meilenstein-Pflicht) — beides in der `CLAUDE.md`,
726verfahren/retro/2026-08-09.md57path-claimno2026-08-090die `CLAUDE.md` die *Regel*. Es ist aber genau die Zwei-Orte-Konstruktion, die wir
727verfahren/retro/2026-08-09.md70component-ref;statusno2026-08-090| `build_embedded` (threadnet-call) | grün, seit jeher | lud **nie** ein Artefakt hoch, falscher Pfad |
728verfahren/retro/2026-08-09.md71version;path-claimno2026-08-090| npm-Paket `0.19.2-threadnet.6` | veröffentlicht | 12,5 KB statt 12,8 MB, **ohne `dist/`** |
729verfahren/retro/2026-08-09.md72statusno2026-08-090| Blueprint `matrix-recovery-flow` | Flux grün, ConfigMap aktuell | seit Tagen bei **jedem** Lauf verworfen |
730verfahren/retro/2026-08-09.md74statusno2026-08-090| Leere Pipelines | rot | **nichts kaputt** — der umgekehrte Fall, Rauschen, das rot abtrainiert |
731verfahren/retro/2026-08-09.md75versionno2026-08-090| Release-Pipeline auf `v0.4.0` | lief nach Tag-Push an | hätte ein veröffentlichtes Image überschrieben |
732verfahren/retro/2026-08-09.md87issue-refno2026-08-090Es gibt Issues für Einzelfälle — gitops#50 (Configs greifen nicht ohne Neustart),
733verfahren/retro/2026-08-09.md88component-ref;mirror-topology;issue-refno2026-08-090management#28 (Mirror-Ausfall unbemerkt), ThreadNet-Web#14 (Release überschreibbar,
734verfahren/retro/2026-08-09.md91versionno2026-08-090⚠️ **Der letzte Fall ist der unangenehmste.** Dass `v0.4.0` nicht überschrieben
735verfahren/retro/2026-08-09.md99mirror-topologyno2026-08-090diesen Monat einzeln und mühsam gelernt haben — Blueprint-Status ≠ error, Mirror
736verfahren/retro/2026-08-09.md103component-ref;date-claim;issue-refno2026-08-090Das ist die Verallgemeinerung von management#28, das am 2026-08-06 bewusst nach
737verfahren/retro/2026-08-09.md112component-ref;issue-refno2026-08-090- `status:next`: management#15 und #20 (fällig 31.08.) — Zusage von sorb
738verfahren/retro/2026-08-09.md113component-ref;issue-refno2026-08-090- `status:wartet` entfernt bei threadnet-call#4 und ThreadNet-Web#11: der im Issue
739verfahren/retro/2026-08-09.md115countno2026-08-090- **M5 — Härtung** angelegt, 14 Issues aus M1 verschoben. Trennlinie: *Ist etwas
740verfahren/retro/2026-08-09.md123statusno2026-08-090## Offen aus dieser Retro
741verfahren/stillstandspruefung.md11statusno2026-08-090der bei jedem Lauf verworfen wurde, während Flux grün meldete.
742verfahren/stillstandspruefung.md23component-ref;mirror-topologyno2026-08-090| Repo ohne aktiven Push-Mirror | `game-operating` wurde angelegt und nie gespiegelt — auf Gitea existierte es nicht |
743verfahren/stillstandspruefung.md24component-ref;mirror-topology;issue-refno2026-08-090| Mirror-Drift | MIRROR-01 (management#28): fällt der Mirror aus, liefert Flux still den letzten Stand weiter |
744verfahren/stillstandspruefung.md25component-ref;statusno2026-08-090| Pipeline mit null Jobs | ThreadNet-Web 203/204, threadnet-call 187 — rot, ohne dass etwas kaputt war |
745verfahren/stillstandspruefung.md26statusno2026-08-090| Erfolgreicher Job ohne Artefakt | `build_embedded` lief seit jeher grün und lud **nichts** hoch |
746verfahren/stillstandspruefung.md27version;path-claimno2026-08-090| npm-Paket zu klein | `0.19.2-threadnet.6`: 12,5 KB statt 12,8 MB, ohne `dist/` |
747verfahren/stillstandspruefung.md32countno2026-08-090jahrelang durchrutscht. (Beim ersten Lauf kamen so zwei Projekte zum Vorschein,
748verfahren/stillstandspruefung.md37component-refno2026-08-090Geplanter CI-Job im management-Repo, zusätzlich von Hand über *Run pipeline*
749verfahren/stillstandspruefung.md38statusno2026-08-090auslösbar. Befunde färben die Pipeline **rot** — das ist bei uns die Alarmanlage,
750verfahren/stillstandspruefung.md39path-claimno2026-08-090nicht ein zusätzlicher Meldeweg (siehe `gitops/CLAUDE.md` zur TURN-Rotation).
751verfahren/stillstandspruefung.md45mirror-topologyyes2026-08-090export GITEA_TOKEN=$(cat ~/.config/gitea-rohana/push-token) # fuer private Spiegel
752verfahren/stillstandspruefung.md53component-ref;date-claim;mirror-topologyno2026-08-090aufgefallen am 2026-08-09: `game-operating` wurde auf Gitea privat gestellt, und
753verfahren/stillstandspruefung.md54count;mirror-topologyno2026-08-090die Prüfung übersprang den Mirror-Abgleich klaglos. Ein Repo, das gespiegelt wird,
754verfahren/textbloecke.md5status;path-claim;mirror-topologyno2026-08-063Die Konventionen stehen kanonisch in [`CLAUDE.md`](../CLAUDE.md) — aber eine
755verfahren/textbloecke.md14component-ref;path-claimno2026-08-063während die `management/CLAUDE.md` zwei nannte.
756verfahren/textbloecke.md24component-refyes2026-08-063Lies zuerst CLAUDE.md im management-Repo auf git.lab und halte dich daran.
757verfahren/textbloecke.md25status;mirror-topologyyes2026-08-063Kanonisch ist git.lab; nie direkt nach Gitea pushen.
758verfahren/textbloecke.md27countyes2026-08-063Bevor du ein Issue schließt oder darüber urteilst: vollständig lesen, inklusive
759verfahren/textbloecke.md30statusyes2026-08-063Verifiziert und vermutet klar trennen; fremde Messungen als fremde kennzeichnen.
760verfahren/textbloecke.md35count;path-claimno2026-08-063> dem Pfad `sorb/Backlogs` statt nach dem Namen `Backlogs`; und ein Issue, von dem
761verfahren/textbloecke.md43component-ref;mirror-topologyyes2026-08-063Konventionen: CLAUDE.md im management-Repo — von hier lesbar über den Gitea-Mirror
762verfahren/textbloecke.md44component-ref;mirror-topologyyes2026-08-063rohana.axion1337.de/sorb/management. Dort NUR lesen, niemals hinpushen.
763verfahren/textbloecke.md48status;versionyes2026-08-063Ping auf 10.58.73.17 schlägt IMMER fehl (nur 443 + DNS offen), das ist kein
764verfahren/textbloecke.md64statusyes2026-08-063· Außenwirkung und Not-Aus · Rollback · bewusst offen Gelassenes.
765verfahren/textbloecke.md79status;mirror-topologyyes2026-08-063- Alle Commits über git.lab gepusht, kein Rest im Arbeitsverzeichnis, Mirror grün.
766verfahren/textbloecke.md80countyes2026-08-063- Jeder offene Punkt und Nebenbefund ist ein Issue — nichts bleibt nur im Chat.
767vision/axion1337-chat.md3date-claim;issue-refno2026-08-054> **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17).
768vision/axion1337-chat.md23statusno2026-08-054**Kontrolliert wachsend** (entschieden 2026-08-06). Offen für Neue, aber **jeder
769vision/axion1337-chat.md37statusno2026-08-054Nicht mehr offen: Das Rebranding wird in **M4 zu Ende gebracht**, nicht separat
770vision/axion1337-chat.md38path-claimno2026-08-054terminiert — siehe [`threadnet.md`](threadnet.md).
771vision/homelab.md3date-claim;issue-refno2026-08-054> **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17).
772vision/homelab.md33component-ref;status;issue-refno2026-08-054[#10](https://git.lab/axion1337.chat/management/-/issues/10) — offen bleibt
773vision/homelab.md35mirror-topologyno2026-08-054Gitea-Datenbank). Siehe dort.
774vision/threadnet.md3date-claim;issue-refno2026-08-090> **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17).
775vision/threadnet.md9component-refno2026-08-090wiederverwendbare Produkte gedacht: ThreadNet-Web (Element-Web-Fork mit
776vision/threadnet.md10component-refno2026-08-090Discord-artiger Raumliste), threadnet-call (Call-Fork), thread-net-git,
777vision/threadnet.md11component-refno2026-08-090threadnet-operating.
778vision/threadnet.md37statusno2026-08-090und entscheiden, ob bereinigt (History-Rewrite) oder bewusst akzeptiert wird.