Solución de problemas del navegador
Problema: “Error al iniciar Chrome CDP en el puerto 18800”
Sección titulada «Problema: “Error al iniciar Chrome CDP en el puerto 18800”»El servidor de control del navegador de OpenClaw no puede iniciar Chrome/Brave/Edge/Chromium con el error:
{"error":"Error: Failed to start Chrome CDP on port 18800 for profile \"openclaw\"."}Causa raíz
Sección titulada «Causa raíz»En Ubuntu (y muchas distribuciones de Linux), la instalación predeterminada de Chromium es un paquete snap. El confinamiento de AppArmor de Snap interfiere con la forma en que OpenClaw genera y supervisa el proceso del navegador.
El comando apt install chromium instala un paquete stub que redirige a snap:
Note, selecting 'chromium-browser' instead of 'chromium'chromium-browser is already the newest version (2:1snap1-0ubuntu2).Esto NO es un navegador real; es solo un contenedor.
Otros fallos comunes de inicio en Linux:
The profile appears to be in use by another Chromium processsignifica que Chrome encontró archivos de bloqueoSingleton*obsoletos en el directorio del perfil gestionado. OpenClaw elimina esos bloqueos y reintentan una vez cuando el bloqueo apunta a un proceso muerto o de un host diferente.Missing X server or $DISPLAYsignifica que se solicitó explícitamente un navegador visible en un host sin una sesión de escritorio. De forma predeterminada, los perfiles gestionados locales ahora vuelven al modo sin cabeza en Linux cuandoDISPLAYyWAYLAND_DISPLAYno están establecidos. Si estableceOPENCLAW_BROWSER_HEADLESS=0,browser.headless: falseobrowser.profiles.<name>.headless: false, elimine esa invalidación con interfaz, establezcaOPENCLAW_BROWSER_HEADLESS=1, inicieXvfb, ejecuteopenclaw browser start --headlesspara un inicio gestionado de un solo uso, o ejecute OpenClaw en una sesión de escritorio real.
Solución 1: Instalar Google Chrome (Recomendado)
Sección titulada «Solución 1: Instalar Google Chrome (Recomendado)»Instale el paquete .deb oficial de Google Chrome, que no está en sandbox por snap:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.debsudo dpkg -i google-chrome-stable_current_amd64.debsudo apt --fix-broken install -y # if there are dependency errorsLuego actualice su configuración de OpenClaw (~/.openclaw/openclaw.json):
{ "browser": { "enabled": true, "executablePath": "/usr/bin/google-chrome-stable", "headless": true, "noSandbox": true }}Solución 2: Usar Snap Chromium con el modo de solo conexión
Sección titulada «Solución 2: Usar Snap Chromium con el modo de solo conexión»Si debe usar Chromium snap, configure OpenClaw para que se conecte a un navegador iniciado manualmente:
- Actualizar configuración:
{ "browser": { "enabled": true, "attachOnly": true, "headless": true, "noSandbox": true }}- Iniciar Chromium manualmente:
chromium-browser --headless --no-sandbox --disable-gpu \ --remote-debugging-port=18800 \ --user-data-dir=$HOME/.openclaw/browser/openclaw/user-data \ about:blank &- Opcionalmente, cree un servicio de usuario systemd para iniciar Chrome automáticamente:
[Unit]Description=OpenClaw Browser (Chrome CDP)After=network.target
[Service]ExecStart=/snap/bin/chromium --headless --no-sandbox --disable-gpu --remote-debugging-port=18800 --user-data-dir=%h/.openclaw/browser/openclaw/user-data about:blankRestart=on-failureRestartSec=5
[Install]WantedBy=default.targetHabilitar con: systemctl --user enable --now openclaw-browser.service
Verificar que el navegador funciona
Sección titulada «Verificar que el navegador funciona»Verificar estado:
curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'Probar navegación:
curl -s -X POST http://127.0.0.1:18791/startcurl -s http://127.0.0.1:18791/tabsReferencia de configuración
Sección titulada «Referencia de configuración»| Opción | Descripción | Predeterminado |
|---|---|---|
browser.enabled | Habilitar control del navegador | true |
browser.executablePath | Ruta al binario de un navegador basado en Chromium (Chrome/Brave/Edge/Chromium) | autodetectado (prefiere el navegador predeterminado cuando sea basado en Chromium) |
browser.headless | Ejecutar sin GUI | false |
OPENCLAW_BROWSER_HEADLESS | Invalidación por proceso para el modo headless del navegador local administrado | sin establecer |
browser.noSandbox | Añadir el indicador --no-sandbox (necesario para algunas configuraciones de Linux) | false |
browser.attachOnly | No iniciar el navegador, solo adjuntarse al existente | false |
browser.cdpPort | Puerto del Protocolo Chrome DevTools | 18800 |
browser.localLaunchTimeoutMs | Tiempo de espera de descubrimiento de Chrome administrado local | 15000 |
browser.localCdpReadyTimeoutMs | Tiempo de espera de preparación del CDP posterior al inicio administrado local | 8000 |
En Raspberry Pi, hosts VPS antiguos o almacenamiento lento, aumente browser.localLaunchTimeoutMs cuando Chrome necesite más tiempo para exponer su endpoint HTTP del CDP. Aumente browser.localCdpReadyTimeoutMs cuando el inicio tenga éxito pero openclaw browser start todavía reporte not reachable after start. Los valores deben ser enteros positivos hasta 120000 ms; los valores de configuración no válidos son rechazados.
Problema: “No se encontraron pestañas de Chrome para profile=“user""
Sección titulada «Problema: “No se encontraron pestañas de Chrome para profile=“user""»Estás utilizando un perfil existing-session / Chrome MCP. OpenClaw puede ver el Chrome local, pero no hay pestañas abiertas disponibles para adjuntar.
Opciones de solución:
- Usar el navegador administrado:
openclaw browser start --browser-profile openclaw(o configurebrowser.defaultProfile: "openclaw"). - Usar Chrome MCP: asegúrese de que Chrome local se esté ejecutando con al menos una pestaña abierta, luego vuelva a intentar con
--browser-profile user.
Notas:
useres solo para el host. Para servidores Linux, contenedores o hosts remotos, prefiera perfiles CDP.user/ otros perfilesexisting-sessionmantienen los límites actuales de Chrome MCP: acciones impulsadas por referencias, ganchos de carga de un solo archivo, sin invalidaciones de tiempo de espera de diálogo, sinwait --load networkidle, y sinresponsebody, exportación de PDF, intercepción de descargas o acciones por lotes.- Los perfiles
openclawlocales asignan automáticamentecdpPort/cdpUrl; solo configúrelos para CDP remoto. - Los perfiles de CDP remoto aceptan
http://,https://,ws://ywss://. Use HTTP(S) para el descubrimiento de/json/version, o WS(S) cuando su servicio de navegador le proporcione una URL de socket directa de DevTools.