Tools
การแก้ไขปัญหาเบราว์เซอร์
ปัญหา: "Failed to start Chrome CDP on port 18800"
เซิร์ฟเวอร์ควบคุมเบราว์เซอร์ของ OpenClaw เปิด Chrome/Brave/Edge/Chromium ไม่สำเร็จพร้อมข้อผิดพลาด:
{"error":"Error: Failed to start Chrome CDP on port 18800 for profile \"openclaw\"."}
สาเหตุหลัก
บน Ubuntu (และ Linux distro จำนวนมาก) การติดตั้ง Chromium เริ่มต้นเป็น แพ็กเกจ snap การจำกัดของ AppArmor จาก snap รบกวนวิธีที่ OpenClaw สร้างและตรวจสอบกระบวนการเบราว์เซอร์
คำสั่ง apt install chromium ติดตั้งแพ็กเกจ stub ที่เปลี่ยนเส้นทางไปยัง snap:
Note, selecting 'chromium-browser' instead of 'chromium'
chromium-browser is already the newest version (2:1snap1-0ubuntu2).
นี่ไม่ใช่เบราว์เซอร์จริง เป็นเพียง wrapper เท่านั้น
ความล้มเหลวในการเปิดใช้งานบน Linux ที่พบบ่อยอื่นๆ:
The profile appears to be in use by another Chromium processหมายความว่า Chrome พบไฟล์ล็อกSingleton*ที่ค้างอยู่ในไดเรกทอรีโปรไฟล์ที่จัดการอยู่ OpenClaw จะลบล็อกเหล่านั้นและลองอีกครั้งหนึ่งครั้งเมื่อล็อกชี้ไปยังกระบวนการที่ตายแล้วหรือ อยู่คนละโฮสต์Missing X server or $DISPLAYหมายความว่ามีการขอเบราว์เซอร์แบบมองเห็นได้อย่างชัดเจน บนโฮสต์ที่ไม่มีเซสชันเดสก์ท็อป ตามค่าเริ่มต้น โปรไฟล์ที่จัดการในเครื่อง ตอนนี้จะถอยกลับไปใช้โหมด headless บน Linux เมื่อทั้งDISPLAYและWAYLAND_DISPLAYไม่ได้ตั้งค่าไว้ หากคุณตั้งOPENCLAW_BROWSER_HEADLESS=0,browser.headless: falseหรือbrowser.profiles.<name>.headless: false, ให้ลบการ override แบบมีหัวนั้นออก ตั้งOPENCLAW_BROWSER_HEADLESS=1, เริ่มXvfb, รันopenclaw browser start --headlessสำหรับการเปิดใช้งานที่จัดการแบบครั้งเดียว หรือรัน OpenClaw ในเซสชันเดสก์ท็อปจริง
วิธีแก้ไข 1: ติดตั้ง Google Chrome (แนะนำ)
ติดตั้งแพ็กเกจ .deb อย่างเป็นทางการของ Google Chrome ซึ่งไม่ได้ถูก sandbox โดย 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 # if there are dependency errors
จากนั้นอัปเดตการกำหนดค่า OpenClaw ของคุณ (~/.openclaw/openclaw.json):
{
"browser": {
"enabled": true,
"executablePath": "/usr/bin/google-chrome-stable",
"headless": true,
"noSandbox": true
}
}
วิธีแก้ไข 2: ใช้ Snap Chromium ด้วยโหมดแนบเท่านั้น
หากคุณจำเป็นต้องใช้ snap Chromium ให้กำหนดค่า OpenClaw ให้แนบกับเบราว์เซอร์ที่เริ่มด้วยตนเอง:
- อัปเดตการกำหนดค่า:
{
"browser": {
"enabled": true,
"attachOnly": true,
"headless": true,
"noSandbox": true
}
}
- เริ่ม Chromium ด้วยตนเอง:
chromium-browser --headless --no-sandbox --disable-gpu \
--remote-debugging-port=18800 \
--user-data-dir=$HOME/.openclaw/browser/openclaw/user-data \
about:blank &
- สร้าง systemd user service เพื่อเริ่ม 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
เปิดใช้ด้วย: systemctl --user enable --now openclaw-browser.service
การตรวจสอบว่าเบราว์เซอร์ทำงาน
ตรวจสอบสถานะ:
curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'
ทดสอบการเรียกดู:
curl -s -X POST http://127.0.0.1:18791/start
curl -s http://127.0.0.1:18791/tabs
อ้างอิงการกำหนดค่า
| ตัวเลือก | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
browser.enabled |
เปิดใช้การควบคุมเบราว์เซอร์ | true |
browser.executablePath |
เส้นทางไปยังไบนารีเบราว์เซอร์ที่ใช้ Chromium (Chrome/Brave/Edge/Chromium) | ตรวจพบอัตโนมัติ (เลือกเบราว์เซอร์เริ่มต้นก่อนเมื่อเป็นเบราว์เซอร์ที่ใช้ Chromium) |
browser.headless |
รันโดยไม่มี GUI | false |
OPENCLAW_BROWSER_HEADLESS |
การ override ต่อกระบวนการสำหรับโหมด headless ของเบราว์เซอร์ที่จัดการในเครื่อง | ไม่ได้ตั้งค่า |
browser.noSandbox |
เพิ่ม flag --no-sandbox (จำเป็นสำหรับการตั้งค่า Linux บางแบบ) |
false |
browser.attachOnly |
ไม่เปิดเบราว์เซอร์ แนบกับตัวที่มีอยู่เท่านั้น | false |
browser.cdpPort |
พอร์ต Chrome DevTools Protocol | 18800 |
browser.localLaunchTimeoutMs |
ระยะหมดเวลาการค้นหา Chrome ที่จัดการในเครื่อง | 15000 |
browser.localCdpReadyTimeoutMs |
ระยะหมดเวลาความพร้อมของ CDP หลังเปิดใช้งานที่จัดการในเครื่อง | 8000 |
บน Raspberry Pi, โฮสต์ VPS รุ่นเก่า หรือสตอเรจที่ช้า ให้เพิ่ม
browser.localLaunchTimeoutMs เมื่อ Chrome ต้องใช้เวลามากขึ้นในการเปิดเผย endpoint
HTTP ของ CDP เพิ่ม browser.localCdpReadyTimeoutMs เมื่อเปิดใช้งานสำเร็จแต่
openclaw browser start ยังรายงานว่า not reachable after start ค่าต้องเป็น
จำนวนเต็มบวกสูงสุด 120000 มิลลิวินาที ค่าการกำหนดค่าที่ไม่ถูกต้องจะถูกปฏิเสธ
ปัญหา: "No Chrome tabs found for profile="user""
คุณกำลังใช้โปรไฟล์ existing-session / Chrome MCP OpenClaw สามารถมองเห็น Chrome ในเครื่องได้
แต่ไม่มีแท็บที่เปิดอยู่ให้แนบได้
ตัวเลือกการแก้ไข:
- ใช้เบราว์เซอร์ที่จัดการ:
openclaw browser start --browser-profile openclaw(หรือตั้งbrowser.defaultProfile: "openclaw") - ใช้ Chrome MCP: ตรวจสอบให้แน่ใจว่า Chrome ในเครื่องกำลังรันอยู่พร้อมแท็บที่เปิดอย่างน้อยหนึ่งแท็บ จากนั้นลองใหม่ด้วย
--browser-profile user
หมายเหตุ:
userใช้ได้เฉพาะโฮสต์เท่านั้น สำหรับเซิร์ฟเวอร์ Linux, คอนเทนเนอร์ หรือโฮสต์ระยะไกล ให้ใช้โปรไฟล์ CDP- โปรไฟล์
user/existing-sessionอื่นๆ จะคงข้อจำกัดปัจจุบันของ Chrome MCP: การกระทำที่ขับเคลื่อนด้วย ref, hook อัปโหลดไฟล์เดียว, ไม่มีการ override ระยะหมดเวลาของ dialog, ไม่มีwait --load networkidleและไม่มีresponsebody, การส่งออก PDF, การดักดาวน์โหลด หรือการกระทำแบบ batch - โปรไฟล์
openclawในเครื่องจะกำหนดcdpPort/cdpUrlอัตโนมัติ ตั้งค่าเหล่านี้เฉพาะสำหรับ CDP ระยะไกลเท่านั้น - โปรไฟล์ CDP ระยะไกลยอมรับ
http://,https://,ws://และwss://ใช้ HTTP(S) สำหรับการค้นหา/json/versionหรือใช้ WS(S) เมื่อบริการเบราว์เซอร์ของคุณ ให้ URL ซ็อกเก็ต DevTools โดยตรง