2026 OpenClaw Docker Compose Mehrcontainer: Gateway-Bindung, Token & „Subagent-Pairing 1008“-Netzwerk-Fix-Checkliste (trustedProxies)

ca. 14 Min. Lesezeit · MACCOME

Betroffene: Sie betreiben per Docker Compose Gateway plus CLI- oder agentenbezogene Container; Gateway wirkt in Logs gesund, aber Unter-Sessions melden gateway closed (1008): pairing required, oder RPC ist healthy und Pairing scheitert trotzdem. Kernaussage: Das löst man selten durch „Image noch einmal neu installieren“—es ist meist Kombination aus Bind-Fläche, Token, vertrauenswürdigen Proxy-CIDRs (trustedProxies) und URLs zwischen Containern; dieser Text liefert eine Symptommatrix, Compose-Snippet, Sechs-Schritte-Runbook und drei KPIs. Abgrenzung: parallel zu offiziellem docker-setup.sh + GHCR, Pairing und Token und Docker-Netzwerk-Triage.

Warum ist Gateway in Compose „oben“, Subagents melden aber 1008?

Das OpenClaw-Gateway hält Langläufer-Verbindungen und Routing; wenn CLI oder „Unter-Session“-/Subagent-Tools per WebSocket/HTTP mit dem Gateway sprechen, reicht ein laufender Prozess nicht—der Netzwerk-Caller muss aus Sicht des Gateways vertrauenswürdig sein und Pairing gültig sein. Docker isoliert jeden Dienst in einem eigenen Netzwerk-Namespace: Schreiben Sie in einem CLI-Container http://127.0.0.1:18789, trifft der Traffic nur den eigenen Container, nicht Host oder andere Dienste.

  1. localhost nicht durch Dienstnamen ersetzt: Verwenden Sie einen Compose-DNS-Namen wie http://openclaw-gateway:18789 (Beispiel).
  2. Bind-Fläche und Zugriffspfad divergieren: hört Gateway nur auf Loopback, können andere Container über Bridge-IPs als „nicht lokal“ klassifiziert werden—Auth- oder Pairing-Zweige.
  3. trustedProxies fehlt: steht das Gateway hinter Reverse Proxy oder Bridge, müssen Docker-Bereiche (z. B. 172.16.0.0/12, 10.0.0.0/8, Ihr Custom-CIDR) deklariert werden, damit Client-Identität korrekt bewertet wird.
  4. OPENCLAW_GATEWAY_TOKEN driftet: Gateway und CLI lesen Token aus unterschiedlichen Mounts oder Umgebungsvariablen—es wechselt zwischen „mal geht es“ und 401/1008. Bei der Handhabung von Tokens gelten Zugriffsbeschränkung und Datenschutz (z. B. DSGVO), falls personenbezogene Inhalte in Logs oder Konfiguration mitlaufen könnten.
  5. Pairing nach Upgrade verloren: unvollständige Volume-Mounts—Subagent-Sessions brauchen erneutes Pairing, wird aber als reines Netzproblem interpretiert.
  6. Muster aus Community-Issues übersehen: Loopback-Bind plus getrennte Container erfordert explizite Bind- oder Trusted-Proxy-Strategie—das ist ein Netzwerk-Grenzvertrag, kein willkürlicher Defekt-Label.

Im Gegensatz zum Drei-OS-Installationsüberblick geht es bei Compose weniger um „welches OS“, sondern welches Netz in welchem Container als vertrauenswürdig gilt.

Bei Reproduktion drei Log-Markierungen parallel sichern: Gateway-Startzeilen, Subagent-Stack und Subnet des attachable-Netzes aus docker inspect—viele 1008-Fälle landen nach Vergleich auf „vertrauenswürdiger Bereich nicht deklariert“, nicht auf Modell oder Kanal.

Tabelle 1: Symptom-Snapshot → Checks (Entscheidungsmatrix)

Symptom-SnapshotZuerst prüfen (Reihenfolge)Häufige Ursache
Container A erreicht 127.0.0.1:18789 nichtZuerst Dienstname-URL, dann published Ports und Listen-AdresseFalsche localhost-Semantik
RPC healthy, sessions_spawn liefert 1008Pairing-Liste → trustedProxies → Bind-TripelSubagent-Pfad als extern/ungepaart gewertet
Logs mit trusted proxy / pairingCompose-CIDR mit gateway.auth angleichenBereich fehlt in der Trust-Menge
Nur nach Versions-UpgradeAlte vs. neue Standard-bind/auth und migriertes .openclaw-Volume vergleichenStrengere Defaults oder abgelaufenes Pairing
info

Hinweis: Nutzen Sie den offiziellen Pfad docker-setup.sh, prüfen Sie Dienstnamen und Volumes dennoch aus dieser Netzwerk-Vertrags-Sicht—siehe GHCR- und Control-UI-Runbook.

Tabelle 2: Bind-Modus vs. Container-zu-Container-Zugriff

gateway.bind (Konzept)Geeignet fürReibung mit Compose
loopbackEin-Container-All-in-one oder nur Host-ZugriffAndere Service-Container können es nicht als lokale Loopback behandeln
lan / benutzerdefiniertes ListenMehrere Dienste, RPC zwischen ContainernToken/Auth und exponierte Fläche streng begrenzen
trusted reverse proxyNginx/Caddy davorMuss zur Reverse-Proxy-Checkliste für Downstream-Quellen passen

Tabelle 3: trustedProxies ausfüllen (Beispiel-CIDRs)

Die folgende Tabelle ist didaktisch: ermitteln Sie das reale Subnetz mit docker network inspect, nicht blind kopieren.

NetztypBeispiel-CIDRIhre Aufgabe
Standard-Docker-Bridge172.17.0.0/16 (umgebungsabhängig)Prüfen, ob Quell-IPs des Gateways in diesem Bereich liegen
Compose-Custom-Netzz. B. 172.18.0.0/16172.30.x.xGesamtes Subnetz in trustedProxies (nicht einzelne Container-IPs)
overlay / swarmvom Orchestrator vergebenEbenfalls Subnetze statt flüchtiger Pod-IP-Listen

Sechs-Schritte-Runbook: von „Container pingen sich“ zu „Subagents können paaren“

  1. OPENCLAW_CONFIG_DIR vereinheitlichen: Gateway und CLI/Agents mounten denselben Pfad oder synchronisierten Inhalt—kein A/B-Lesen.
  2. Gateway-URL mit Dienstnamen: in der CLI-Container-Umgebung z. B. OPENCLAW_GATEWAY_URL=http://openclaw-gateway:18789 (Name wie im Compose-Dienst).
  3. Token angleichen: OPENCLAW_GATEWAY_TOKEN beidseitig identisch; bei Datei-Token Mount-Permissions und Zugriffskontrolle beachten (DSGVO/Datenschutz, wenn Inhalte personenbezogen sein könnten).
  4. Gateway-bind und trustedProxies setzen: nach Update gemäß Tabellen 2/3 Gateway neu starten (Bind-Änderungen oft Hard-Restart).
  5. Diagnosekette: openclaw gateway statusopenclaw doctor → Subagent reproduzieren und Logs nach 1008 / pairing durchsuchen.
  6. Drei KPIs dokumentieren: Zeit bis erfolgreiches Pairing, Neustarts, weiterhin RPC-Timeouts zwischen Containern—im Ticket festhalten.
yaml
# Beispiel-Snippet (Dienstnamen und Platzhalter — vor Produktion ersetzen)
services:
  openclaw-gateway:
    environment:
      - OPENCLAW_CONFIG_DIR=/config
      - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
    volumes:
      - ./config:/config
    networks: [oc-net]

  openclaw-cli:
    environment:
      - OPENCLAW_CONFIG_DIR=/config
      - OPENCLAW_GATEWAY_URL=http://openclaw-gateway:18789
      - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
    volumes:
      - ./config:/config
    networks: [oc-net]

networks:
  oc-net: { driver: bridge }

Drei KPIs fürs Dashboard (Operations prüfbar)

  1. Subagent-Erfolgsrate: erfolgreiche sessions_spawn (oder äquivalent) / Gesamtaufrufe im Fenster; unter Schwelle „Pairing+CIDR“-Triage öffnen.
  2. Konfig-Drift-Alarm: gateway.auth.token-Fingerprint oder Env-Hash zwischen Containern vergleichen; Release blockieren bei Abweichung.
  3. Gateway-Neustart-Kosten: Neustarts nach bind/trustedProxies-Änderungen zählen; treibt „Konfiguration als Code“ und Review-Templates.

Diese KPIs sind ingenieurtechnische Observability-Vorschläge, kein Upstream-SLA.

Warum zusammengestoppelte Container-Umgebungen schwer die OpenClaw-Produktionslinie tragen

„Image läuft“ reicht nicht: Subagents und Session-Tools brauchen ein stabiles Gateway, vorhersehbare Netzwerk-Identität und konsistente Konfig-Volumes. Einzel-Container-docker run auf dem Laptop unterscheidet sich in der Fehlerlage von festem Compose und persistenten Volumes auf dediziertem Remote-Mac—letzteres entspricht unbeaufsichtigten und geplanten Jobs viel näher.

Ephemere VPS oder geteilte Desktops mögen Demos ermöglichen, oft fehlt aber eine einheitliche Disk- und Netz-Baseline; wenn Gateway, Reverse Proxy und Automatisierung in derselben Vertrauenszone skalieren sollen, sind mehrregionale Apple-Silicon-Hosts mit Monats-/Quartalsmodellen oft sinnvoller als wiederholtes Basteln temporärer Docker-Hosts. MACCOME bietet physikalische Isolation und Sechs-Regionen-Standorte zum Schichten von „immer-an-Gateway“ und Build/Signing. Mietpreise und Hilfe-Center lesen, dann Umgebungsvariablen mit diesem Runbook verdrahten.

Rollout: zuerst die Sechs-Schritte-Schleife in einem Compose-Projekt schließen, dann bewerten, ob Gateway und andere Lasten auf separate Remote-Knoten gehören.

FAQ

Soll ich bei Code 1008 sofort bind auf LAN ändern?

Zuerst Tabelle 1: oft Dienstname-URL oder trustedProxies, nicht blind breiter hören. Bei größerer Exposition Token und Firewall gemeinsam anpassen. Mehr zu Pairing: Pairing- und Token-Checkliste.

Kann curl auf 127.0.0.1:18789 auf dem Host die Container-Prüfung ersetzen?

Host-seitig für Liveness in Ordnung, kein Ersatz für Erreichbarkeit vom Container per Gateway-Dienstname—Namespaces sind unterschiedlich. Hilfe: Mac mini Hilfe & FAQ.

Doppelt sich das mit dem Docker-Netzwerk-Triage-Artikel?

Netzwerk-Triage behandelt Compose-Namensräume und CLI-Erreichbarkeit; der offizielle Docker-Artikel Image-Pfade. Dieser Text verbindet Subagent-Pairing mit trustedProxies. Weiterführend: MCP- und Skills-Verifikation.