Thore CimbalandClaude Opus 4.8 fc30ce83a4 docs: add group-rules pointer (CLAUDE.md) and repo-specific AGENTS.md
Field test F-011 found four of five components carried no pointer file, so a
session landing here had no path to the group rules at all. CLAUDE.md is the
one-line pointer the check looks for; AGENTS.md links the canonical rules in the
management repo (with the Gitea mirror URL for readers outside the lab) and
otherwise carries only what is specific and easy to get wrong here.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-15 12:00:00 +00:00
2026-07-30 15:56:36 +02:00

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

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):

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 (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 auf git.lab (ADR-0005); Bestand und Historie zum Host in 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.
S
Description
IaC: Traefik + Gitea + cAdvisor + act_runner Stack (CFGMON)
Readme
61 KiB
Languages
Shell 100%