Web interfaces
แดชบอร์ด
แดชบอร์ด Gateway คือ UI ควบคุมในเบราว์เซอร์ที่ให้บริการที่ / ตามค่าเริ่มต้น
(แทนที่ได้ด้วย gateway.controlUi.basePath)
เปิดอย่างรวดเร็ว (Gateway ในเครื่อง):
- http://127.0.0.1:18789/ (หรือ http://localhost:18789/)
- เมื่อใช้
gateway.tls.enabled: trueให้ใช้https://127.0.0.1:18789/และwss://127.0.0.1:18789สำหรับปลายทาง WebSocket
ข้อมูลอ้างอิงสำคัญ:
- UI ควบคุม สำหรับการใช้งานและความสามารถของ UI
- Tailscale สำหรับระบบอัตโนมัติ Serve/Funnel
- พื้นผิวเว็บ สำหรับโหมดการ bind และหมายเหตุด้านความปลอดภัย
การยืนยันตัวตนจะถูกบังคับใช้ที่การจับมือ WebSocket ผ่านพาธ auth ของ gateway ที่กำหนดค่าไว้:
connect.params.auth.tokenconnect.params.auth.password- ส่วนหัวข้อมูลประจำตัวของ Tailscale Serve เมื่อ
gateway.auth.allowTailscale: true - ส่วนหัวข้อมูลประจำตัวของ trusted-proxy เมื่อ
gateway.auth.mode: "trusted-proxy"
ดู gateway.auth ใน การกำหนดค่า Gateway
หมายเหตุด้านความปลอดภัย: UI ควบคุมเป็น พื้นผิวผู้ดูแลระบบ (แชต, การกำหนดค่า, การอนุมัติการ exec) อย่าเปิดเผยต่อสาธารณะ UI จะเก็บโทเค็น URL ของแดชบอร์ดไว้ใน sessionStorage สำหรับเซสชันแท็บเบราว์เซอร์ปัจจุบันและ URL gateway ที่เลือก และลบโทเค็นออกจาก URL หลังโหลด ควรใช้ localhost, Tailscale Serve หรืออุโมงค์ SSH
เส้นทางด่วน (แนะนำ)
- หลังจาก onboarding แล้ว CLI จะเปิดแดชบอร์ดโดยอัตโนมัติและพิมพ์ลิงก์สะอาด (ไม่มีโทเค็น)
- เปิดใหม่ได้ทุกเมื่อ:
openclaw dashboard(คัดลอกลิงก์ เปิดเบราว์เซอร์ถ้าทำได้ แสดงคำแนะนำ SSH หากเป็น headless) - หากการส่งผ่านคลิปบอร์ดและเบราว์เซอร์ล้มเหลว
openclaw dashboardยังคงพิมพ์ URL สะอาดและบอกให้คุณใช้โทเค็นจากOPENCLAW_GATEWAY_TOKENหรือgateway.auth.tokenเป็นคีย์ fragment ของ URL ชื่อtoken; คำสั่งนี้จะไม่พิมพ์ค่าโทเค็น ในล็อก - หาก UI ขอ auth แบบ shared-secret ให้วางโทเค็นหรือ รหัสผ่านที่กำหนดค่าไว้ลงในการตั้งค่า UI ควบคุม
พื้นฐาน auth (ในเครื่องเทียบกับระยะไกล)
- Localhost: เปิด
http://127.0.0.1:18789/ - Gateway TLS: เมื่อ
gateway.tls.enabled: trueลิงก์แดชบอร์ด/สถานะจะใช้https://และลิงก์ WebSocket ของ UI ควบคุมจะใช้wss:// - แหล่งที่มาของโทเค็น shared-secret:
gateway.auth.token(หรือOPENCLAW_GATEWAY_TOKEN);openclaw dashboardสามารถส่งผ่าน URL fragment สำหรับการ bootstrap ครั้งเดียว และ UI ควบคุมจะเก็บไว้ใน sessionStorage สำหรับ เซสชันแท็บเบราว์เซอร์ปัจจุบันและ URL gateway ที่เลือก แทนที่จะใช้ localStorage - หาก
gateway.auth.tokenจัดการโดย SecretRefopenclaw dashboardจะพิมพ์/คัดลอก/เปิด URL ที่ไม่มีโทเค็นตามการออกแบบ วิธีนี้ช่วยหลีกเลี่ยงการเปิดเผย โทเค็นที่จัดการภายนอกในล็อกเชลล์ ประวัติคลิปบอร์ด หรืออาร์กิวเมนต์ การเปิดเบราว์เซอร์ - หาก
gateway.auth.tokenถูกกำหนดค่าเป็น SecretRef และยัง resolve ไม่ได้ใน เชลล์ปัจจุบันของคุณopenclaw dashboardจะยังคงพิมพ์ URL ที่ไม่มีโทเค็นพร้อม คำแนะนำการตั้งค่า auth ที่นำไปใช้ได้ - รหัสผ่าน shared-secret: ใช้
gateway.auth.passwordที่กำหนดค่าไว้ (หรือOPENCLAW_GATEWAY_PASSWORD) แดชบอร์ดจะไม่คงรหัสผ่านไว้ข้ามการโหลดซ้ำ - โหมดที่มีข้อมูลประจำตัว: Tailscale Serve สามารถตอบสนอง auth ของ UI ควบคุม/WebSocket
ผ่านส่วนหัวข้อมูลประจำตัวเมื่อ
gateway.auth.allowTailscale: trueและ reverse proxy ที่รับรู้ข้อมูลประจำตัวแบบ non-loopback สามารถตอบสนองgateway.auth.mode: "trusted-proxy"ได้ ในโหมดเหล่านั้นแดชบอร์ดไม่จำเป็นต้อง วาง shared secret สำหรับ WebSocket - ไม่ใช่ localhost: ใช้ Tailscale Serve, การ bind shared-secret แบบ non-loopback,
reverse proxy แบบ non-loopback ที่รับรู้ข้อมูลประจำตัวพร้อม
gateway.auth.mode: "trusted-proxy"หรืออุโมงค์ SSH HTTP API ยังคงใช้ auth แบบ shared-secret เว้นแต่คุณตั้งใจเรียกใช้ private-ingressgateway.auth.mode: "none"หรือ auth HTTP แบบ trusted-proxy ดู พื้นผิวเว็บ
หากคุณเห็น "unauthorized" / 1008
- ตรวจสอบให้แน่ใจว่า gateway เข้าถึงได้ (ในเครื่อง:
openclaw status; ระยะไกล: อุโมงค์ SSHssh -N -L 18789:127.0.0.1:18789 user@hostจากนั้นเปิดhttp://127.0.0.1:18789/) - สำหรับ
AUTH_TOKEN_MISMATCHไคลเอนต์อาจลองใหม่แบบเชื่อถือได้หนึ่งครั้งด้วยโทเค็นอุปกรณ์ที่แคชไว้เมื่อ gateway ส่งคืนคำใบ้สำหรับการลองใหม่ การลองใหม่ด้วยโทเค็นที่แคชไว้นั้นจะใช้ขอบเขตที่อนุมัติและแคชไว้ของโทเค็นซ้ำ ผู้เรียกที่ระบุdeviceToken/scopesอย่างชัดเจนจะยังคงใช้ชุดขอบเขตที่ร้องขอไว้ หาก auth ยังล้มเหลวหลังจากการลองใหม่นั้น ให้แก้ไข token drift ด้วยตนเอง - นอกพาธการลองใหม่นั้น ลำดับความสำคัญของ connect auth คือ shared token/password ที่ระบุชัดเจนก่อน จากนั้น
deviceTokenที่ระบุชัดเจน จากนั้นโทเค็นอุปกรณ์ที่จัดเก็บไว้ และสุดท้ายโทเค็น bootstrap - บนพาธ UI ควบคุมของ Tailscale Serve แบบ async ความพยายามที่ล้มเหลวสำหรับ
{scope, ip}เดียวกันจะถูกทำให้ทำงานตามลำดับก่อนที่ตัวจำกัด failed-auth จะบันทึกไว้ ดังนั้น การลองใหม่ที่ไม่ถูกต้องพร้อมกันครั้งที่สองอาจแสดงretry laterได้แล้ว - สำหรับขั้นตอนการซ่อมแซม token drift ให้ทำตาม เช็กลิสต์การกู้คืน token drift
- ดึงหรือระบุ shared secret จากโฮสต์ gateway:
- โทเค็น:
openclaw config get gateway.auth.token - รหัสผ่าน: resolve
gateway.auth.passwordที่กำหนดค่าไว้ หรือOPENCLAW_GATEWAY_PASSWORD - โทเค็นที่จัดการโดย SecretRef: resolve ผู้ให้บริการ secret ภายนอก หรือ export
OPENCLAW_GATEWAY_TOKENในเชลล์นี้ จากนั้นเรียกopenclaw dashboardอีกครั้ง - ไม่มี shared secret ที่กำหนดค่าไว้:
openclaw doctor --generate-gateway-token
- โทเค็น:
- ในการตั้งค่าแดชบอร์ด ให้วางโทเค็นหรือรหัสผ่านลงในช่อง auth แล้วเชื่อมต่อ
- ตัวเลือกภาษา UI อยู่ใน ภาพรวม -> การเข้าถึง Gateway -> ภาษา เป็นส่วนหนึ่งของการ์ดการเข้าถึง ไม่ใช่ส่วน Appearance