77 lines
3.2 KiB
Markdown
77 lines
3.2 KiB
Markdown
# 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.<C>.<D>.<Auftrag>.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.
|