# mesh-configs — Konfigurations- und Service-Store des Hermes-Mesh Dieses Repository ist der **versionierte Konfigurationsspeicher** des Mesh. Es wird vom Master (VPSHermes) automatisch gesichert (Cron: alle 6 h `git add -A` → Commit → Push nach Gitea `mehlzoerwer/mesh-configs`). ## Inhalt | Pfad | Inhalt | |---|---| | `config.yaml` | Hermes-Konfiguration des Masters | | `app.py` | Hilfsanwendung im Wurzelverzeichnis (wird mitgesichert) | | `cron/` | Cron-Jobs und deren Output-Historie | | `mesh-services/` | `docker-compose.yml` (Gitea + ntfy), `docker-compose.monitoring.yml` (Monitoring) | | `sites-available/` | nginx-VHost-Vorlagen | | `scripts/update_mesh.sh` | Fleet-Update-Helfer | | `skills/` | Spiegel der Skill-Bibliothek | **Nicht** in diesem Repo: die operativen Betriebsskripte. Sie liegen direkt im Dateisystem (siehe unten) und werden hier nur dokumentiert. ## Mesh-Topologie | Knoten | ZeroTier-IP | Rolle | Betriebsskripte | |---|---|---|---| | VPSHermes (Master) | 172.24.196.119 | Orchestrator + Deployer | `/usr/local/bin/mesh-*.{sh,py}` | | UnraidHermes | 172.24.34.142 | Entwickler | `~/.local/bin/mesh-*` | | SwitchHermes | 172.24.20.26 | Cockpit (ARM64) | `~/.local/bin/mesh-*` | | LaptopHermes | 172.24.178.202 | Worker (RTX 2060) | `~/.local/bin/mesh-*` | Netz: ein ZeroTier-Netz `6ab565387a75e498` (172.24.0.0/16). Kein öffentlicher Zugang, kein Drittanbieter-Sync. ## Task-Austausch - Gemeinsamer Ordner: `/srv/work/tasks/` — **ausschliesslich über NFS** (Samba/CIFS ist blockiert). - Ablauf: `offen/` → `in_arbeit/` (atomarer `mv`-Lock) → `fertig/` → bei Bedarf `bugfix/` → `archiv/`. - Dateiname: `JJJJMMTT....json`, wobei `C.D` die letzten beiden Oktette der Ziel-IP sind (z. B. `20261008.34.142.ModelAssignment.json`). - Der Sub-Agent-Poller (`mesh-agent-poller.sh`, getaktet vom `mesh-poller-daemon.sh` alle 10 s) zieht Tasks per SSH/scp vom Master. ## Kosten und Budget - Hartes Tageslimit: **1 USD pro Agent**; zusätzlich Guthaben-Stopp bei 0. - Zeitreihe: `/srv/work/costs/costs.jsonl` - Tagesverbrauch: `/srv/work/costs/daily.jsonl` - Monatssumme: `/srv/work/costs/month.json` - Bremse (Kill-Switch): `/srv/work/costs/kill_switches.json`, Logik in `mesh-cost-break.py`, Limits in `budget.yaml`. - Cron-Kette stündlich: `mesh-cost-track.sh` → `mesh-cost-break.py` → `mesh-cost-month.py` (immer mit `/usr/bin/python3` starten, siehe CONTRIB.md). ## Logs (Master) | Log | Quelle | |---|---| | `/var/log/mesh-doku.log` | `mesh-master-report.sh` (Doku-Website) | | `/var/log/mesh-poller.log` | `mesh-master-poller.sh` (Ausfall-Fallback) | | `/var/log/mesh-cost.log` | Kosten-Kette | | `/var/log/mesh-budget-watch.log` | `mesh-budget-watch.sh` (Guthaben alle 30 min) | | `/var/log/wissensbasis-sync.log` | Wissensbasis- und Session-Archiv-Sync | ## Websites des Mesh - `dokumentationen.perfekt-ohne-en.de` — Live-Panel (nginx-Root `/var/www/dokumentationen.perfekt-ohne-en.de`, **kleingeschrieben**) - `archiv.perfekt-ohne-en.de` — Tagesarchiv - `kanban.perfekt-ohne-en.de` — Aufgabenboard ## Bekannte Betriebsregeln Siehe `CONTRIB.md`. Kurzfassung: ein Fix pro Schritt, Backup mit Datum, Rollback-Weg notieren, jedes Script vor dem Einsatz syntaktisch prüfen.