Failed to start Chrome CDP on port 18800
Warum Snap-Chromium die OpenClaw-Browsersteuerung unter Linux lahmlegt
Sie bitten den Agenten, eine Seite zu öffnen, und der Tool-Aufruf kommt mit einer einzigen Zeile JSON zurück: Failed to start Chrome CDP on port 18800 for profile openclaw. Nichts in dieser Meldung verrät, welcher Teil fehlgeschlagen ist, und auf einem Linux-Rechner ohne grafische Oberfläche erscheint der Browser überhaupt nicht. Die übliche Ursache ist nicht OpenClaw, sondern der Browser, den apt für Sie installiert hat.
Vier Fehlermeldungen, vier verschiedene Ursachen
- Failed to start Chrome CDP on port 18800 for profile openclaw bedeutet, dass das verwaltete Profil auf seinem Debugging-Port nicht hochkommt. Unter Ubuntu liegt das meist daran, dass das Chromium auf dem Rechner ein Snap-Wrapper ist und kein echtes Browser-Binary.
- The profile appears to be in use by another Chromium process weist auf veraltete Singleton-Sperrdateien im Verzeichnis des verwalteten Profils hin. OpenClaw entfernt diese Sperren und versucht es einmal erneut, wenn die Sperre einen beendeten Prozess auf dem aktuellen Host nennt; Sperren, die einen anderen Hostnamen nennen, bleiben dagegen erhalten, bis Sie bestätigen, dass das Profil nicht mehr verwendet wird, auch nach einer Umbenennung des Rechners.
- Missing X server or $DISPLAY bedeutet, dass auf einem Host ohne Desktop-Sitzung ausdrücklich ein sichtbarer Browser angefordert wurde. Lokale verwaltete Profile weichen unter Linux bereits auf headless aus, wenn weder DISPLAY noch WAYLAND_DISPLAY gesetzt ist. Sehen Sie diesen Fehler, hat also etwas einen Browser mit Fenster erzwungen: OPENCLAW_BROWSER_HEADLESS=0, browser.headless auf false oder derselbe Schlüssel in einem einzelnen Profil.
- Der Fehler Port N is in use for profile NAME but not by openclaw tritt auf, wenn bereits ein externer CDP-Dienst auf Loopback konfiguriert ist und attachOnly noch auf false steht. Die Lösung besteht darin, OpenClaw nicht mehr seinen eigenen Browser starten zu lassen, also im unten beschriebenen Attach-only-Modus zu arbeiten.
Das AppArmor-Confinement von Snap stört, wie OpenClaw den Browserprozess startet und überwacht.
Warum apt install chromium die eigentliche Ursache ist
Unter Ubuntu und den meisten Linux-Distributionen liefert apt install chromium keinen Browser. Das Paket wird zu chromium-browser aufgelöst, apt gibt den Hinweis aus, dass es chromium-browser statt chromium ausgewählt hat, und was auf der Festplatte landet, ist ein Snap-Wrapper. Das ist wichtig, denn wenn OpenClaw lokal einen Browser startet, nimmt es den ersten, den es in der Reihenfolge Chrome, Brave, Edge, Chromium, Chrome Canary findet, und sein Linux-Suchpfad umfasst /usr/bin, /snap/bin, /opt/google, /opt/brave.com, /usr/lib/chromium und /usr/lib/chromium-browser sowie das von Playwright verwaltete Chromium unter PLAYWRIGHT_BROWSERS_PATH oder ~/.cache/ms-playwright. Auf einem frischen Server, auf dem der Snap das einzige Binary der Chromium-Familie ist, findet die Erkennung genau ihn, und jeder verwaltete Start scheitert daran. Keine Kombination von Flags behebt das, weshalb die dokumentierte Antwort ein anderes Binary ist und keine andere Einstellung.
Drei Schritte, die das Problem beheben
- Installieren Sie echtes Google Chrome, das ist die empfohlene Lösung. Laden Sie google-chrome-stable_current_amd64.deb von dl.google.com herunter, installieren Sie es mit dpkg -i und führen Sie sudo apt --fix-broken install -y aus, falls Abhängigkeiten fehlen. Setzen Sie dann in ~/.openclaw/openclaw.json browser.executablePath auf /usr/bin/google-chrome-stable, mit enabled, headless und noSandbox jeweils auf true.
- Wenn das Snap-Chromium bleiben muss, nutzen Sie den Attach-only-Modus. Setzen Sie browser.attachOnly auf true, damit OpenClaw nie selbst etwas startet, und starten Sie den Browser selbst mit chromium-browser --headless --no-sandbox --disable-gpu --remote-debugging-port=18800 --user-data-dir=$HOME/.openclaw/browser/openclaw/user-data about:blank.
- Sorgen Sie mit einem systemd-User-Service dafür, dass dieser manuell gestartete Browser Ihre Shell überdauert. Eine Unit unter ~/.config/systemd/user/openclaw-browser.service, die /snap/bin/chromium mit denselben Flags ausführt, dazu Restart=on-failure und RestartSec=5, aktiviert über systemctl --user enable --now openclaw-browser.service, sorgt dafür, dass der CDP-Port bereits lauscht, bevor OpenClaw ihn anfragt.
Die Konfiguration umfasst sechs Einstellungen, und die Standardwerte passen eher zu einem Laptop als zu einem Server. browser.enabled schaltet die Browsersteuerung ein und steht bereits auf true. browser.executablePath ist der Pfad zu einem Chromium-basierten Binary (Chrome, Brave, Edge oder Chromium); lassen Sie ihn weg, wird er automatisch erkannt, wobei der Standardbrowser des Betriebssystems bevorzugt wird, sofern dieser auf Chromium basiert. browser.headless lässt den Browser ohne GUI laufen und steht standardmäßig auf false, ein Server muss es also ausdrücklich setzen; OPENCLAW_BROWSER_HEADLESS dient als Überschreibung pro Prozess und ist standardmäßig nicht gesetzt. browser.noSandbox fügt das Flag --no-sandbox hinzu, das manche Linux-Setups brauchen (Standard false), und browser.attachOnly hindert OpenClaw daran, überhaupt einen Browser zu starten (Standard false). Attach-only ist auch die dokumentierte Antwort auf einem Raspberry Pi, einem älteren VPS-Host oder bei langsamem Speicher, wenn Chrome mehr Zeit braucht, um seinen CDP-HTTP-Endpunkt bereitzustellen, als die Frist für den verwalteten Browser erlaubt. OpenClaw unter Linux behandelt die Linux-Installation im Allgemeinen, und OpenClaw auf einem VPS ist die Checkliste für einen Server, vor dem niemand sitzt.
CDP-Startfehler oder Navigationssperre
Ist der Browser konfiguriert, prüfen Sie ihn, bevor Sie anderswo suchen. Diese Prüfungen gehen an den Browser-Steuerdienst von OpenClaw und nicht an den Chrome-CDP-Port, der beim Start verwendet wird. Sein Port leitet sich von gateway.port ab: standardmäßig 18791, also der Gateway-Port plus zwei; passen Sie ihn an, wenn Sie das Gateway verlegt haben. Fragen Sie mit curl den Root-Pfad ab, und Sie erhalten running, pid und chosenBrowser; senden Sie einen POST an /start und dann einen GET an /tabs. Arbeiten Sie nun die Stufenfolge ab, die die beiden Fehlerklassen trennt: openclaw browser --browser-profile openclaw start, dann tabs, dann open https://example.com. Schlägt start mit not reachable after start fehl, ist die Steuerungsebene nicht gesund, und Sie müssen der CDP-Bereitschaft nachgehen. Gelingt start und schlägt tabs fehl, ist es immer noch ein Erreichbarkeitsproblem, kein Problem der Seite. Bestehen start und tabs und schlägt nur open oder navigate fehl, ist der Browser gesund, und Sie haben es mit der Navigationsrichtlinie oder der Seite selbst zu tun, also mit einem separaten Codepfad: Die Browserkonfiguration verwendet standardmäßig ein SSRF-Richtlinienobjekt, das im Zweifel blockiert (fail-closed), auch wenn Sie browser.ssrfPolicy nie geschrieben haben, und ein erfolgreiches start oder tabs gibt für die nächste Adresse nichts frei. Ist eine Ausnahme nötig, ist ein enger Eintrag mit exaktem Hostnamen in allowedHostnames besser, als das private Netzwerk zu öffnen, und dangerouslyAllowPrivateNetwork gehört nur in eine Umgebung, die Sie bewusst geprüft haben. Das Tool, das der Agent tatsächlich aufruft, ist das Browser-Tool von OpenClaw, und die Referenz zur Browsersteuerung beschreibt die vollständige Steuerungs-API und die Kommandozeile.
Auf Diali
Diali hostet OpenClaw, dieser Abend bleibt Ihnen also erspart. Jeder Kunde betreibt seinen eigenen Assistenten statt eines Anteils an einem gemeinsamen, und die Laufzeitkonfiguration wird aus Ihren Einstellungen im Dashboard erzeugt und bei jedem Release neu geschrieben: Es gibt also keine openclaw.json auf einem Server, die nach einem Upgrade repariert werden muss, und keine Entscheidung zwischen Snap und deb. Alles, was der Assistent speichert, liegt auf einem persistenten Volume, mit täglichen Snapshots und Wiederherstellung per Klick über das Backups-Add-on (in Max enthalten). Gehostetes OpenClaw auf Diali beschreibt das gehostete Angebot, und die Diali-Preisübersicht nennt die Kosten.
- apt install chromium liefert einen Snap-Wrapper, keinen Browser.
- Erst echtes Chrome, dann Attach-only plus eine systemd-Unit.
- start und tabs laufen durch, aber open schlägt fehl: Das ist die Richtlinie, nicht CDP.
Genug gelesen, bauen Sie selbst einen
Richten Sie einen Agenten ein, wählen Sie einen Kanal und lassen Sie ihn in der App arbeiten, die Sie ohnehin geöffnet haben.
