Zielgruppe: Teams, die Gateway und openclaw-CLI in getrennten Compose‑Diensten betreiben, im Log ein gesundes Gateway sehen, während die CLI auf „gateway closed“ (WebSocket 1006/1008), pairing required oder zwei Tokenpfade (Env vs. Datei) stößt. Fokus dieses Texts: Gateway‑URL‑Semantik (Service‑TCP oder gemeinsamer Unix‑Socket), OPENCLAW_GATEWAY_TOKEN und gateway.auth.* auf eine Quelle der Wahrheit bringen, danach — falls nötig — die Aufrufoberfläche über gemeinsame Netz‑Namespaces zusammenziehen. Abgrenzung zum April‑Artikel Sub‑Agent 1008 + trustedProxies: dort stehen grobe CIDRs; hier geht es darum, wie jeder Container das Gateway erreicht und welchen Token er liest — Querverweise: Docker‑Netzwerk‑Checkliste, Pairing & Token, Volumes & Rechte.
127.0.0.1: Loopback meint nur den aktuellen Container; Compose‑DNS verwenden (z. B. http://openclaw-gateway:18789).OPENCLAW_GATEWAY_TOKEN kann Dateikonfiguration überschreiben — wirkt dann wie sporadisches 401/1008‑Flippen.gateway.sock vor, brauchen beide Seiten denselben Host‑Pfad und passende UID/GID.network_mode: service:<gateway> dokumentieren oder konsequent TCP per DNS — keine hybriden Env‑Boluses pro Ticket.Alle fünf müssen erledigt sein, bevor Image‑Tags gekippt werden; Namespace-/Token-Verträge first.
Bei geschlossenen Sockets Zeitstempel von Gateway‑stderr, CLI‑stdout und docker events zusammenlegen — häufig passen „random“‑Ausfälle zu Restarts oder zu aggressiven Healthchecks.
| Symptom | Als Nächstes (oben → unten) | Häufige Ursache |
|---|---|---|
1006 + frische PID / OOM | Hosts-/Kernel‑Logs gleiches Fenster → Restart‑Budgets → Timeouts | Transport geschlossen ≠ falsches Pairing |
1008 + pairing | eine Tokenwahrheit → Gateway‑URL → Status auf Platte | doppelte Mounts / RO‑States |
Connection refused nur im CLI‑Container | Probes dort ausführen; Host‑curl = Anekdote | Loopback‑Fallacy / Mapping fehlt |
| Socket ENOENT / Permission denied | ls -la‑Mounts; gemeinsamen Elternordner binden | Socket fehlt im Kind‑Namespace |
Schließcodes sind keine Diagnose allein: 1006/1008 mit Gateway‑Logs, Pairing‑Zuständen und Proxy‑Retries übereinlesen — sonst Bind flappen und Exposure wächst.
docker compose config nachweisen..openclaw gleich eingebunden: beschreibbare gleiche Baum — sonst wirkt pairing „wie Schritt 0“ eingefroren (Volumencheckliste).openclaw gateway status, dann doctor: Zeitstempel Host vs. Inner‑Logs angleichen.network_mode: service:<gateway> im Review dokumentieren — konsistent zu trustedProxies‑Playbooks.Steht Nginx oder Caddy vor dem Gateway, verknüpfen Sie Upgrade‑ und Idle‑Timeouts mit der Compose‑URL (Reverse‑Proxy‑Leitfaden), sonst mischt sporadisches 1006 mit Auth‑Bugs.
# Namen/Volumes anpassen, dann docker compose config prüfen
services:
openclaw-gateway:
environment:
- OPENCLAW_CONFIG_DIR=/data/.openclaw
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
volumes:
- oc-data:/data/.openclaw
networks: [oc-net]
openclaw-cli:
environment:
- OPENCLAW_CONFIG_DIR=/data/.openclaw
- OPENCLAW_GATEWAY_URL=http://openclaw-gateway:18789
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
volumes:
- oc-data:/data/.openclaw
networks: [oc-net]
depends_on:
- openclaw-gateway
networks:
oc-net:
driver: bridge
volumes:
oc-data:
OpenClaw braucht planbare Restarts, Festplattengrundlinien und auditierbare Pairing‑Historie. Auf einem eigenständigen Fern‑Mac mit sechs Regionen und Monats-/Quartalskalkulation passt das eher zur CI‑Geheimnisrotation als zu schlummernden PCs. Öffentliche Seiten: Mac‑mini‑Mietpreise · Hilfe & FAQ; Variablen anschließend aus diesem Runbook spiegeln.
Compose‑Fälle kleben meist an Namespace + Token + Zustandsverzeichnis. Ohne wiederholbare Handshake‑Aufzeichnung aus dem gleichen Container: keine Image‑Panic, kein Blind‑„TLS‑aus“. Sobald Kontrakte stabil: GHCR + Control UI und gehärtete Proxies.
FAQ
Überschneidung mit dem April‑trustedProxies‑Artikel?
Dort CIDRs & Sub‑Traffic; hier URL, Socket, Namespace, eine Tokenquelle — beide lesen.
Host‑curl ok ⇒ CI ok?
Nein. Dieselbe fehlerhafte Container‑Image‑Probe wiederholen.