Files
alan/docs/architecture.md

64 lines
2.3 KiB
Markdown

# Architektur
## Ziele
- Hermes parallel zu OpenClaw betreiben, ohne Port-, Volume- oder Netzwerk-Kollisionen.
- Reproduzierbares Setup fuer eine Arch-Linux-Workstation.
- Resilienter Betrieb mit Healthchecks, Restart-Policy, Backups und Update-Weg.
- Komfortabler Workflow ueber ein einziges Wrapper-Skript.
- Internetzugang fuer Hermes ueber die Host-Bridge `br0`.
## Trennungsprinzipien
### 1. Eigene Datenverzeichnisse
- Hermes: `./state/hermes`
- OpenClaw: separat, z. B. `./state/openclaw`
Hermes schreibt seine komplette Identitaet, Konfiguration, Skills, Sessions und Memory in das gemountete Datenverzeichnis. Das darf nicht mit einem zweiten Hermes-Gateway geteilt werden.
### 2. Eigene Host-Ports
Default in diesem Repo:
- Hermes API: `127.0.0.1:18642 -> 8642`
- Hermes Dashboard: `127.0.0.1:19119 -> 9119`
Die absichtlich ungewohnten Host-Ports reduzieren Kollisionen mit anderen lokalen Stacks. Dass die Bindung auf `127.0.0.1` erfolgt, ist Absicht: der LAN-Uplink laeuft separat ueber `br0`, die Bedienoberflaechen bleiben lokal.
### 3. Eigene Netzrollen
- `hermes_private`: internes Docker-Bridge-Netz fuer Compose-interne Kommunikation
- `br0_uplink`: externes Docker-Macvlan-Netz auf Parent `br0`
- `alan_agents_shared`: optionales Querverbindungsnetz fuer Hermes/OpenClaw
Damit ist die Verkehrsrichtung klar getrennt:
- Internet/LAN raus ueber `br0_uplink`
- interne Service-Aufloesung ueber `hermes_private`
- bewusste Interconnects ueber `alan_agents_shared`
### 4. Eigene Compose-Projektkennung
Der Standard-Projektname ist `alan`. Dadurch bleiben Container, Netzwerke und sonstige Docker-Ressourcen sauber benannt.
## Resilienz
- `restart: unless-stopped`
- HTTP-Healthchecks fuer Gateway und Dashboard
- `no-new-privileges`
- definierte Ressourcenlimits
- Backup- und Restore-Skripte
- idempotentes Bootstrap fuer `.env`, Verzeichnisse und Shared-Netz
- explizite Validierung des externen `br0`-Netzes vor dem Start
## Nicht absichtlich eingebaut
- kein Reverse-Proxy per Default
- kein gemeinsamer Docker-Socket fuer Hermes und OpenClaw
- kein wildes Mounten von `/home`
- kein direkter Zwang, OpenClaw in denselben Compose-Stack zu ziehen
- keine blind automatische Ermittlung deiner LAN-Parameter
Das ist Absicht: weniger Seiteneffekte, weniger Sicherheitsrisiko, bessere Fehlersuche.