Vai al contenuto principale

Risoluzione dei problemi del browser (Linux)

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

Il server di controllo browser di OpenClaw non riesce ad avviare Chrome/Brave/Edge/Chromium con l’errore:
{"error":"Error: Failed to start Chrome CDP on port 18800 for profile \"openclaw\"."}

Causa principale

Su Ubuntu (e molte distribuzioni Linux), l’installazione predefinita di Chromium è un pacchetto snap. Il confinement AppArmor di snap interferisce con il modo in cui OpenClaw avvia e monitora il processo del browser. Il comando apt install chromium installa un pacchetto stub che reindirizza a snap:
Note, selecting 'chromium-browser' instead of 'chromium'
chromium-browser is already the newest version (2:1snap1-0ubuntu2).
Questo NON è un browser reale: è solo un wrapper.

Soluzione 1: installare Google Chrome (consigliato)

Installa il pacchetto .deb ufficiale di Google Chrome, che non è confinato da 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  # se ci sono errori di dipendenza
Quindi aggiorna la configurazione di OpenClaw (~/.openclaw/openclaw.json):
{
  "browser": {
    "enabled": true,
    "executablePath": "/usr/bin/google-chrome-stable",
    "headless": true,
    "noSandbox": true
  }
}

Soluzione 2: usare Snap Chromium con la modalità solo collegamento

Se devi usare Chromium snap, configura OpenClaw in modo che si colleghi a un browser avviato manualmente:
  1. Aggiorna la configurazione:
{
  "browser": {
    "enabled": true,
    "attachOnly": true,
    "headless": true,
    "noSandbox": true
  }
}
  1. Avvia 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. Facoltativamente crea un servizio utente systemd per avviare automaticamente 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
Abilitalo con: systemctl --user enable --now openclaw-browser.service

Verificare che il browser funzioni

Controlla lo stato:
curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'
Testa la navigazione:
curl -s -X POST http://127.0.0.1:18791/start
curl -s http://127.0.0.1:18791/tabs

Riferimento della configurazione

OpzioneDescrizionePredefinito
browser.enabledAbilita il controllo del browsertrue
browser.executablePathPercorso di un binario browser basato su Chromium (Chrome/Brave/Edge/Chromium)rilevato automaticamente (preferisce il browser predefinito se basato su Chromium)
browser.headlessEsegue senza GUIfalse
browser.noSandboxAggiunge il flag --no-sandbox (necessario per alcune configurazioni Linux)false
browser.attachOnlyNon avvia il browser, si collega solo a uno esistentefalse
browser.cdpPortPorta Chrome DevTools Protocol18800

Problema: “No Chrome tabs found for profile=“user""

Stai usando un profilo existing-session / Chrome MCP. OpenClaw riesce a vedere Chrome locale, ma non ci sono schede aperte disponibili a cui collegarsi. Opzioni per la correzione:
  1. Usa il browser gestito: openclaw browser start --browser-profile openclaw (oppure imposta browser.defaultProfile: "openclaw").
  2. Usa Chrome MCP: assicurati che Chrome locale sia in esecuzione con almeno una scheda aperta, poi riprova con --browser-profile user.
Note:
  • user è solo host. Per server Linux, container o host remoti, preferisci i profili CDP.
  • user / altri profili existing-session mantengono gli attuali limiti di Chrome MCP: azioni basate su ref, hook di upload di un solo file, nessuna sostituzione del timeout delle finestre di dialogo, nessun wait --load networkidle e nessun responsebody, esportazione PDF, intercettazione dei download o azioni batch.
  • I profili locali openclaw assegnano automaticamente cdpPort/cdpUrl; impostali solo per CDP remoto.
  • I profili CDP remoti accettano http://, https://, ws:// e wss://. Usa HTTP(S) per il rilevamento /json/version, oppure WS(S) quando il tuo servizio browser ti fornisce un URL socket DevTools diretto.