WSL2 + Windows + Remote Chrome CDP Fehlerbehebung
Dieser Leitfaden behandelt das gängige Split-Host-Setup, bei dem:
- das OpenClaw-Gateway in WSL2 läuft
- Chrome unter Windows läuft
- die Browsersteuerung die WSL2/Windows-Grenze überschreiten muss
Er behandelt auch das schichtweise Fehlermuster aus Issue #39369: Mehrere unabhängige Probleme können gleichzeitig auftreten, was die falsche Schicht zuerst verdächtig aussehen lässt.
Wähle zuerst den richtigen Browser-Modus
Du hast zwei gültige Varianten:
Option 1: Raw Remote CDP
Ein Remote-Browserprofil verwenden, das von WSL2 auf einen Windows Chrome CDP-Endpunkt zeigt.
Wähle dies, wenn:
- du nur Browsersteuerung brauchst
- du damit einverstanden bist, Chrome Remote Debugging für WSL2 freizugeben
- du das Chrome Extension Relay nicht brauchst
Option 2: Chrome Extension Relay
Das eingebaute chrome-Profil plus die OpenClaw Chrome-Extension verwenden.
Wähle dies, wenn:
- du dich über den Toolbar-Button an einen bestehenden Windows Chrome-Tab anhängen möchtest
- du Extension-basierte Steuerung statt rohem
--remote-debugging-portmöchtest - das Relay selbst über die WSL2/Windows-Grenze erreichbar sein muss
Wenn du das Extension Relay über Namespaces hinweg verwendest, ist browser.relayBindHost die wichtige Einstellung, die in Browser und Chrome Extension eingeführt wird.
Funktionierende Architektur
Referenzform:
- WSL2 führt das Gateway auf
127.0.0.1:18789aus - Windows öffnet die Control UI in einem normalen Browser unter
http://127.0.0.1:18789/ - Windows Chrome gibt einen CDP-Endpunkt auf Port
9222frei - WSL2 kann diesen Windows CDP-Endpunkt erreichen
- OpenClaw zeigt mit einem Browserprofil auf die Adresse, die von WSL2 aus erreichbar ist
Warum dieses Setup verwirrend ist
Mehrere Fehler können sich überlagern:
- WSL2 kann den Windows CDP-Endpunkt nicht erreichen
- die Control UI wird von einem unsicheren Origin geöffnet
gateway.controlUi.allowedOriginsstimmt nicht mit dem Seiten-Origin überein- Token oder Pairing fehlt
- das Browserprofil zeigt auf die falsche Adresse
- das Extension Relay ist noch Loopback-only, obwohl du Namespace-übergreifenden Zugriff brauchst
Deshalb kann die Behebung einer Schicht einen anderen Fehler sichtbar lassen.
Kritische Regel für die Control UI
Wenn die UI von Windows aus geöffnet wird, verwende Windows localhost, es sei denn, du hast ein bewusstes HTTPS-Setup.
Verwende:
http://127.0.0.1:18789/
Verwende standardmäßig keine LAN-IP für die Control UI. Plain HTTP auf einer LAN- oder Tailnet-Adresse kann Insecure-Origin-/Device-Auth-Verhalten auslösen, das nichts mit CDP selbst zu tun hat. Siehe Control UI.
Schichtweise validieren
Arbeite von oben nach unten. Überspringe keine Schritte.
Schicht 1: Überprüfen, dass Chrome CDP unter Windows bereitstellt
Chrome unter Windows mit aktiviertem Remote Debugging starten:
chrome.exe --remote-debugging-port=9222
Von Windows aus zuerst Chrome selbst überprüfen:
curl http://127.0.0.1:9222/json/version
curl http://127.0.0.1:9222/json/list
Wenn das unter Windows fehlschlägt, liegt das Problem noch nicht bei OpenClaw.
Schicht 2: Überprüfen, dass WSL2 den Windows-Endpunkt erreichen kann
Aus WSL2 heraus die exakte Adresse testen, die du in cdpUrl verwenden willst:
curl http://WINDOWS_HOST_OR_IP:9222/json/version
curl http://WINDOWS_HOST_OR_IP:9222/json/list
Gutes Ergebnis:
/json/versiongibt JSON mit Browser / Protocol-Version Metadaten zurück/json/listgibt JSON zurück (leeres Array ist okay, wenn keine Seiten offen sind)
Wenn das fehlschlägt:
- Windows gibt den Port noch nicht für WSL2 frei
- die Adresse ist auf der WSL2-Seite falsch
- Firewall / Port-Forwarding / lokales Proxying fehlt noch
Behebe das, bevor du an der OpenClaw-Konfiguration arbeitest.
Schicht 3: Das richtige Browserprofil konfigurieren
Für Raw Remote CDP OpenClaw auf die Adresse richten, die von WSL2 aus erreichbar ist:
{
browser: {
enabled: true,
defaultProfile: "remote",
profiles: {
remote: {
cdpUrl: "http://WINDOWS_HOST_OR_IP:9222",
attachOnly: true,
color: "#00AA00",
},
},
},
}
Hinweise:
- Verwende die von WSL2 erreichbare Adresse, nicht die, die nur unter Windows funktioniert
- Behalte
attachOnly: truefür extern verwaltete Browser - Teste dieselbe URL mit
curl, bevor du erwartest, dass OpenClaw erfolgreich ist
Schicht 4: Wenn du stattdessen das Chrome Extension Relay verwendest
Wenn der Browser-Rechner und das Gateway durch eine Namespace-Grenze getrennt sind, braucht das Relay möglicherweise eine Nicht-Loopback-Bind-Adresse.
Beispiel:
{
browser: {
enabled: true,
defaultProfile: "chrome",
relayBindHost: "0.0.0.0",
},
}
Verwende dies nur, wenn nötig:
- Standardverhalten ist sicherer, weil das Relay Loopback-only bleibt
0.0.0.0erweitert die Angriffsfläche- Gateway-Auth, Node-Pairing und das umgebende Netzwerk privat halten
Wenn du das Extension Relay nicht brauchst, bevorzuge das Raw Remote CDP-Profil oben.
Schicht 5: Die Control UI-Schicht separat überprüfen
Die UI von Windows öffnen:
http://127.0.0.1:18789/
Dann überprüfen:
- der Seiten-Origin stimmt mit dem überein, was
gateway.controlUi.allowedOriginserwartet - Token-Auth oder Pairing ist korrekt konfiguriert
- du debuggst nicht ein Control UI-Auth-Problem als wäre es ein Browser-Problem
Hilfreiche Seite:
Schicht 6: Ende-zu-Ende-Browsersteuerung überprüfen
Aus WSL2:
openclaw browser open https://example.com --browser-profile remote
openclaw browser tabs --browser-profile remote
Für das Extension Relay:
openclaw browser tabs --browser-profile chrome
Gutes Ergebnis:
- der Tab öffnet sich in Windows Chrome
openclaw browser tabsgibt das Ziel zurück- spätere Aktionen (
snapshot,screenshot,navigate) funktionieren mit dem gleichen Profil
Häufig irreführende Fehlermeldungen
Behandle jede Meldung als schichtspezifischen Hinweis:
control-ui-insecure-auth- UI-Origin-/Secure-Context-Problem, kein CDP-Transport-Problem
token_missing- Auth-Konfigurationsproblem
pairing required- Geräte-Genehmigungsproblem
Remote CDP for profile "remote" is not reachable- WSL2 kann die konfigurierte
cdpUrlnicht erreichen
- WSL2 kann die konfigurierte
gateway timeout after 1500ms- oft noch CDP-Erreichbarkeit oder ein langsamer/unerreichbarer Remote-Endpunkt
Chrome extension relay is running, but no tab is connected- Extension Relay-Profil ausgewählt, aber noch kein angehängter Tab vorhanden
Schnelle Triage-Checkliste
- Windows: Funktioniert
curl http://127.0.0.1:9222/json/version? - WSL2: Funktioniert
curl http://WINDOWS_HOST_OR_IP:9222/json/version? - OpenClaw-Konfiguration: Verwendet
browser.profiles.<name>.cdpUrlgenau diese von WSL2 erreichbare Adresse? - Control UI: Öffnest du
http://127.0.0.1:18789/statt einer LAN-IP? - Nur Extension Relay: Brauchst du tatsächlich
browser.relayBindHost, und wenn ja, ist er explizit gesetzt?
Praktisches Fazit
Das Setup ist normalerweise machbar. Die Schwierigkeit besteht darin, dass Browser-Transport, Control UI-Origin-Sicherheit, Token/Pairing und Extension-Relay-Topologie jeweils unabhängig fehlschlagen können, während sie von der Benutzerseite ähnlich aussehen.
Im Zweifelsfall:
- Überprüfe zuerst den Windows Chrome-Endpunkt lokal
- Überprüfe dann denselben Endpunkt von WSL2 aus
- Debugge erst dann die OpenClaw-Konfiguration oder die Control UI-Auth