Drei Stellen zeigten noch auf 'sorb/Backlogs' auf Gitea. Das Repo heisst seit dem Framework-Umbau 'management' und ist kanonisch auf git.lab (ADR-0001/0002); der alte Pfad loest nur noch per 301 auf. Ausserdem verwies der Backlog-Eintrag auf eine Datei, obwohl offene Punkte seit ADR-0005 Issues sind. - CFGMON-09 -> management#10 (verlinkt, statt nur zitiert) - 'Backlog: Repo sorb/Backlogs' -> Issues auf git.lab + hosts/cfgmon.md - 'Backlogs CFGMON-11' -> als erledigt datiert; dafuer gibt es kein Issue, die Arbeit war beim Umzug schon abgeschlossen - Nebenbei 'sorb/threadnet-operating' -> 'axion1337.chat/threadnet-operating' (Gitea-Pfad, kanonisch ist die Lab-Gruppe) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKhFj1S3UdD6xL2fbWPeYj
90 lines
4.2 KiB
Markdown
90 lines
4.2 KiB
Markdown
# thread-net-git — Traefik + Gitea + cAdvisor (CFGMON)
|
|
|
|
Infrastruktur-Repo für den Kern-Stack auf dem Operating-Host (CFGMON,
|
|
`rohana.axion1337.de`). Abgelöst aus dem unversionierten Portainer-Stack
|
|
(Stack-ID 8) am 2026-07-30 — siehe Backlog CFGMON-02.
|
|
|
|
| Dienst | Image | Zweck |
|
|
|---|---|---|
|
|
| reverse-proxy | traefik:v3.7.9 | TLS-Terminierung für ALLE Dienste des Hosts (auch Grafana aus dem monitoring-Stack) |
|
|
| gitea | gitea/gitea:1.27.0 | Git-Hosting, `rohana.axion1337.de` |
|
|
| cadvisor | cadvisor:v0.49.1 | Container-Metriken für Prometheus (monitoring-Stack) |
|
|
|
|
## Unumstößliche Regeln
|
|
|
|
1. **Projektname `thread-net-git` nie ändern** (`name:` in der Compose).
|
|
Das Gitea-Datenvolumen heißt `thread-net-git_gitea-data` und ist als
|
|
`external` deklariert — bei falschem Namen bricht der Deploy laut ab.
|
|
2. **Volumes `thread-net-git_gitea-data` und `thread-net-git_letsencrypt`
|
|
niemals löschen.** Ersteres sind die Produktivdaten (Repos, SQLite-DB,
|
|
LFS, SSH-Hostkeys), letzteres enthält `acme.json` — eine Zertifikats-
|
|
Neuausstellung scheitert an der Firewall (80/443 nur für User-IP offen).
|
|
3. **Gitea nie auf eine ältere Version pinnen** — SQLite-Schema kennt kein
|
|
Downgrade. Upgrades: Minor-Schritte, vorher Backup (s.u.).
|
|
4. **Diesen Stack nie wieder über Portainer anfassen.** Portainer
|
|
identifiziert Ressourcen über den Compose-Projektnamen; ein „Stack
|
|
löschen" dort würde die laufenden Container entfernen.
|
|
|
|
## Deploy
|
|
|
|
```bash
|
|
cd /opt/thread-net-git
|
|
docker network create traefik # falls noch nicht vorhanden
|
|
docker compose up -d
|
|
```
|
|
|
|
Erst-Deploy auf frischem Host (letsencrypt-Volume noch leer):
|
|
|
|
```bash
|
|
docker compose up --no-start # legt Volumes/Container an
|
|
# acme.json aus Backup einspielen (Rechte 600, root:root):
|
|
docker run --rm -v thread-net-git_letsencrypt:/dst -v /opt/backup:/src alpine \
|
|
sh -c 'cp /src/acme-<datum>.json /dst/acme.json && chmod 600 /dst/acme.json'
|
|
docker compose up -d
|
|
```
|
|
|
|
## Runner (entfernt 2026-08-01)
|
|
|
|
Der Gitea-Actions-Runner `builder-1` wurde im Zuge des CI-Umzugs ins Homelab-GitLab
|
|
zurückgebaut (CFGMON-11, erledigt 2026-08-01): alle Workflows laufen jetzt in der Lab-CI, die
|
|
Gitea-Actions-Toggles der Repos sind deaktiviert. Beim nächsten Deploy dieses Stacks
|
|
verschwindet der Runner-Container; zusätzlich einmalig auf dem Host: `builder-1` in der
|
|
Gitea-Admin-UI deregistrieren und `runner-data/` löschen.
|
|
|
|
## Backup & Restore
|
|
|
|
Warm-Backup: nächtlich um 03:17 per Cron des Users `rantanplan`
|
|
(`backup/gitea-backup.sh`, Log: `/opt/backup/backup.log`).
|
|
**Derzeit pausiert** (Cron auskommentiert, seit 2026-07-30): die Backups
|
|
sollen off-host in ein Borg-Repo auf einer Storage Box, bis dahin bleibt
|
|
der letzte Dump vom 2026-07-30 liegen — siehe
|
|
[management#10](https://git.lab/axion1337.chat/management/-/issues/10)
|
|
(CFGMON-09). Das Skript
|
|
stoppt kurz den Runner (SQLite-Journal-Race bei `gitea dump`), streamt
|
|
den Dump ohne Zwischenkopie (`gitea dump --type tar -f - | gzip`) und
|
|
behält **nur den neuesten Stand** auf dem Host — die 38-G-Platte trägt
|
|
nicht mehr. Manuell: einfach das Skript ausführen.
|
|
|
|
Restore auf frischem Host: Volume `thread-net-git_gitea-data` anlegen,
|
|
Dump-Zip entpacken (`gitea-repo.zip` → `/data/git/repositories`,
|
|
`gitea-db.sql` importieren bzw. `gitea.db` aus `data/` übernehmen,
|
|
`app.ini` nach `/data/gitea/conf/`), dann Stack deployen. Details:
|
|
https://docs.gitea.com/administration/backup-and-restore
|
|
|
|
**Off-Host-Kopie nicht vergessen** — ein Backup auf demselben Host schützt
|
|
nicht vor Plattenverlust:
|
|
`scp -P 2248 rantanplan@188.245.193.243:/opt/backup/gitea-dump-<datum>.tar.gz .`
|
|
|
|
## Bezüge
|
|
|
|
- Monitoring-Stack (Grafana/Prometheus/Loki): Repo `axion1337.chat/threadnet-operating`,
|
|
Checkout `/opt/threadnet-operating`. Prometheus scrapt `cadvisor:8080` und
|
|
`traefik:8080` aus diesem Stack über das gemeinsame externe `traefik`-Netz.
|
|
- Offene Punkte: **Issues** im
|
|
[management-Projekt](https://git.lab/axion1337.chat/management/-/issues) auf
|
|
git.lab (ADR-0005); Bestand und Historie zum Host in
|
|
[`hosts/cfgmon.md`](https://git.lab/axion1337.chat/management/-/blob/main/hosts/cfgmon.md).
|
|
- Gitea-Konfiguration (`app.ini` mit Secrets) liegt bewusst NICHT im Repo,
|
|
sondern nur im Datenvolumen; Änderungen via `GITEA__section__KEY`-Env-Vars
|
|
in der Compose.
|