Tools
การแก้ไขปัญหาเบราว์เซอร์
ปัญหา: ไม่สามารถเริ่ม Chrome CDP บนพอร์ต 18800
{ "error": "Error: Failed to start Chrome CDP on port 18800 for profile \"openclaw\"." }สาเหตุหลัก
บน Ubuntu และลินุกซ์ดิสทริบิวชันส่วนใหญ่ apt install chromium จะติดตั้งตัวห่อหุ้มแบบ snap
ไม่ใช่เบราว์เซอร์จริง:
Note, selecting 'chromium-browser' instead of 'chromium'chromium-browser is already the newest version (2:1snap1-0ubuntu2).การจำกัดสิทธิ์ด้วย AppArmor ของ Snap รบกวนวิธีที่ OpenClaw สร้างและตรวจติดตาม โปรเซสของเบราว์เซอร์
ความล้มเหลวอื่น ๆ ที่พบบ่อยในการเริ่มทำงานบน Linux:
The profile appears to be in use by another Chromium process: มีไฟล์ล็อกSingleton*ที่ค้างอยู่ในไดเรกทอรีโปรไฟล์ที่จัดการโดยระบบ OpenClaw จะลบ ล็อกเหล่านี้และลองอีกครั้งหนึ่งครั้ง เมื่อล็อกชี้ไปยังโปรเซสที่หยุดทำงานแล้วหรือ โปรเซสบนโฮสต์อื่นMissing X server or $DISPLAY: มีการร้องขอให้เปิดเบราว์เซอร์แบบแสดงผลอย่างชัดเจน บนโฮสต์ที่ไม่มีเซสชันเดสก์ท็อป โปรไฟล์ภายในเครื่องที่จัดการโดยระบบจะเปลี่ยนไปใช้ โหมดไม่มีส่วนติดต่อแบบกราฟิกบน Linux เมื่อไม่ได้ตั้งค่าทั้งDISPLAYและWAYLAND_DISPLAYหากคุณตั้งค่าOPENCLAW_BROWSER_HEADLESS=0,browser.headless: falseหรือbrowser.profiles.<name>.headless: falseให้ลบการแทนที่เพื่อใช้โหมดแสดงผลนั้น ตั้งค่าOPENCLAW_BROWSER_HEADLESS=1เริ่มXvfbเรียกใช้openclaw browser start --headlessเพื่อเริ่มเบราว์เซอร์ที่จัดการโดยระบบแบบครั้งเดียว หรือเรียกใช้ OpenClaw ในเซสชันเดสก์ท็อปจริง
วิธีแก้ไขที่ 1: ติดตั้ง Google Chrome (แนะนำ)
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 # หากมีข้อผิดพลาดเกี่ยวกับการขึ้นต่อกันอัปเดต ~/.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:
# ~/.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:blankRestart=on-failureRestartSec=5 [Install]WantedBy=default.targetsystemctl --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/startcurl -s http://127.0.0.1:18791/tabsข้อมูลอ้างอิงการกำหนดค่า
| ตัวเลือก | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
browser.enabled |
เปิดใช้งานการควบคุมเบราว์เซอร์ | true |
browser.executablePath |
พาธไปยังไฟล์ไบนารีของเบราว์เซอร์ที่ใช้ Chromium (Chrome/Brave/Edge/Chromium) | ตรวจหาโดยอัตโนมัติ (ให้ความสำคัญกับเบราว์เซอร์เริ่มต้นของระบบปฏิบัติการหากใช้ Chromium) |
browser.headless |
ทำงานโดยไม่มีส่วนติดต่อแบบกราฟิก | false |
OPENCLAW_BROWSER_HEADLESS |
ค่าแทนที่ระดับโปรเซสสำหรับโหมดไม่มีส่วนติดต่อแบบกราฟิกของเบราว์เซอร์ภายในเครื่องที่จัดการโดยระบบ | ไม่ได้ตั้งค่า |
browser.noSandbox |
เพิ่มแฟล็ก --no-sandbox (จำเป็นสำหรับการตั้งค่า Linux บางแบบ) |
false |
browser.attachOnly |
ไม่เปิดเบราว์เซอร์ แต่เชื่อมต่อกับเบราว์เซอร์ที่มีอยู่เท่านั้น | false |
browser.cdpPortRangeStart |
พอร์ต CDP ภายในเครื่องเริ่มต้นสำหรับโปรไฟล์ที่กำหนดค่าโดยอัตโนมัติ | 18800 (คำนวณจากพอร์ตของ Gateway) |
browser.localLaunchTimeoutMs |
ระยะหมดเวลาสำหรับการค้นหา Chrome ภายในเครื่องที่จัดการโดยระบบ สูงสุด 120000 |
15000 |
browser.localCdpReadyTimeoutMs |
ระยะหมดเวลารอ CDP พร้อมใช้งานหลังเริ่ม Chrome ภายในเครื่องที่จัดการโดยระบบ สูงสุด 120000 |
8000 |
ค่าระยะหมดเวลาทั้งสองต้องเป็นจำนวนเต็มบวกไม่เกิน 120000 มิลลิวินาที ค่าอื่น ๆ
จะถูกปฏิเสธขณะโหลดการกำหนดค่า บน Raspberry Pi, โฮสต์ VPS รุ่นเก่า หรือพื้นที่จัดเก็บข้อมูล
ที่ทำงานช้า ให้เพิ่ม browser.localLaunchTimeoutMs เมื่อ Chrome ต้องใช้เวลามากขึ้นเพื่อ
เปิดเผยปลายทาง HTTP ของ CDP ให้เพิ่ม browser.localCdpReadyTimeoutMs เมื่อ
เริ่มทำงานสำเร็จแล้ว แต่ openclaw browser start ยังคงรายงานว่า not reachable after start
ปัญหา: ไม่พบแท็บ Chrome สำหรับ profile="user"
คุณกำลังใช้โปรไฟล์ user (existing-session / Chrome MCP) และไม่มี
แท็บที่เปิดอยู่ให้เชื่อมต่อ
ตัวเลือกในการแก้ไข:
- ใช้เบราว์เซอร์ที่จัดการโดยระบบแทน:
openclaw browser --browser-profile openclaw start(หรือตั้งค่าbrowser.defaultProfile: "openclaw") - เปิด Chrome ภายในเครื่องไว้โดยมีแท็บเปิดอยู่อย่างน้อยหนึ่งแท็บ แล้วลองอีกครั้งด้วย
--browser-profile user
หมายเหตุ:
userใช้งานได้เฉพาะบนโฮสต์เท่านั้น บนเซิร์ฟเวอร์ Linux, คอนเทนเนอร์ หรือโฮสต์ระยะไกล ควรใช้ โปรไฟล์ CDP แทนuserและโปรไฟล์existing-sessionอื่น ๆ ใช้ข้อจำกัดปัจจุบันของ Chrome MCP ร่วมกัน ได้แก่ รองรับเฉพาะการดำเนินการที่ขับเคลื่อนด้วยข้อมูลอ้างอิง อัปโหลดได้ครั้งละหนึ่งไฟล์ ไม่มีการแทนที่timeoutMsสำหรับกล่องโต้ตอบ ไม่รองรับwait --load networkidleและไม่รองรับresponsebodyการส่งออก PDF การดักจับการดาวน์โหลด หรือการดำเนินการแบบกลุ่ม- โปรไฟล์ไดรเวอร์
openclawภายในเครื่องจะกำหนดcdpPort/cdpUrlโดยอัตโนมัติ ให้ตั้งค่า เหล่านี้ด้วยตนเองเฉพาะสำหรับ CDP ระยะไกลเท่านั้น - โปรไฟล์ CDP ระยะไกลรองรับ
http://,https://,ws://และwss://ใช้ HTTP(S) สำหรับการค้นหาผ่าน/json/versionหรือใช้ WS(S) เมื่อบริการเบราว์เซอร์ ให้ URL ซ็อกเก็ต DevTools โดยตรงแก่คุณ