Solución de problemas del navegador (Linux)

Problema: “Failed to start Chrome CDP on port 18800”

El servidor de control de navegador de OpenClaw falla al iniciar Chrome/Brave/Edge/Chromium con el error:

{"error":"Error: Failed to start Chrome CDP on port 18800 for profile \"openclaw\"."}

Causa raíz

En Ubuntu (y muchas distribuciones Linux), la instalación por defecto de Chromium es un paquete snap. El confinamiento AppArmor de Snap interfiere con la forma en que OpenClaw inicia y monitorea 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 envoltorio.

Solución 1: Instalar Google Chrome (Recomendado)

Instala el paquete .deb oficial de Google Chrome, que no está aislado por snap:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt --fix-broken install -y  # si hay errores de dependencias

Luego actualiza tu configuración de OpenClaw (~/.openclaw/openclaw.json):

{
  "browser": {
    "enabled": true,
    "executablePath": "/usr/bin/google-chrome-stable",
    "headless": true,
    "noSandbox": true
  }
}

Solución 2: Usar Chromium de Snap con modo solo-adjuntar

Si debes usar Chromium de snap, configura OpenClaw para adjuntarse a un navegador iniciado manualmente:

  1. Actualiza la configuración:
{
  "browser": {
    "enabled": true,
    "attachOnly": true,
    "headless": true,
    "noSandbox": true
  }
}
  1. Inicia Chromium manualmente:
chromium-browser --headless --no-sandbox --disable-gpu \
  --remote-debugging-port=18800 \
  --user-data-dir=$HOME/.openclaw/browser/openclaw/user-data \
  about:blank &
  1. Opcionalmente crea un servicio de usuario systemd para auto-iniciar Chrome:
# ~/.config/systemd/user/openclaw-browser.service
[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:blank
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target

Habilita con: systemctl --user enable --now openclaw-browser.service

Verificar que el navegador funciona

Comprueba el estado:

curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'

Prueba la navegación:

curl -s -X POST http://127.0.0.1:18791/start
curl -s http://127.0.0.1:18791/tabs

Referencia de configuración

OpciónDescripciónValor por defecto
browser.enabledHabilitar control del navegadortrue
browser.executablePathRuta a un binario de navegador basado en Chromium (Chrome/Brave/Edge/Chromium)auto-detectado (prefiere el navegador por defecto cuando es basado en Chromium)
browser.headlessEjecutar sin interfaz gráficafalse
browser.noSandboxAgregar flag --no-sandbox (necesario para algunas configuraciones Linux)false
browser.attachOnlyNo lanzar navegador, solo adjuntarse al existentefalse
browser.cdpPortPuerto del Chrome DevTools Protocol18800

Problema: “Chrome extension relay is running, but no tab is connected”

Estás usando el perfil chrome (relay de extensión). Espera que la extensión de navegador de OpenClaw esté adjuntada a una pestaña activa.

Opciones de solución:

  1. Usa el navegador gestionado: openclaw browser start --browser-profile openclaw (o establece browser.defaultProfile: "openclaw").
  2. Usa el relay de extensión: instala la extensión, abre una pestaña y haz clic en el ícono de la extensión de OpenClaw para adjuntarla.

Notas:

  • El perfil chrome usa tu navegador basado en Chromium por defecto del sistema cuando es posible.
  • Los perfiles locales openclaw auto-asignan cdpPort/cdpUrl; solo establece esos para CDP remoto.