docs: README.md + CONTRIB.md ergaenzt (Mesh-Setup, Aenderungsregeln, Review-Korrekturen)
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user