Community translations by veiseule.ai — Help improve them on Crowdin
Skip to main content

การเข้าถึงระยะไกล (SSH, อุโมงค์, และ tailnet)

รีโปนี้รองรับ “รีโมตผ่านSSH” โดยคงให้มี Gateway (ตัวหลัก) เพียงตัวเดียวทำงานบนโฮสต์เฉพาะ (เดสก์ท็อป/เซิร์ฟเวอร์) และให้ไคลเอนต์เชื่อมต่อเข้ามา

  • สำหรับ ผู้ดูแลระบบ (คุณ/แอปmacOS): การทำอุโมงค์SSHเป็นทางเลือกสำรองสากล
  • สำหรับ โหนด (iOS/Android และอุปกรณ์ในอนาคต): เชื่อมต่อกับ Gateway WebSocket (ผ่านLAN/tailnet หรืออุโมงค์SSHตามความจำเป็น)

แนวคิดหลัก

  • Gateway WebSocket จะ bind กับ loopback บนพอร์ตที่คุณกำหนด (ค่าเริ่มต้น 18789)
  • สำหรับการใช้งานระยะไกล ให้ forward พอร์ต loopback นั้นผ่าน SSH (หรือใช้ tailnet/VPN เพื่อลดการทำอุโมงค์)

การตั้งค่า VPN/tailnet ที่พบบ่อย (ตำแหน่งที่เอเจนต์ทำงาน)

มองว่า โฮสต์เกตเวย์ คือ “ที่ที่เอเจนต์อาศัยอยู่” มันเป็นเจ้าของเซสชัน โปรไฟล์การยืนยันตัวตน แชนเนล และสถานะ แล็ปท็อป/เดสก์ท็อปของคุณ (และโหนด) เชื่อมต่อไปยังโฮสต์นั้น

1. Gateway เปิดตลอดใน tailnet ของคุณ (VPS หรือโฮมเซิร์ฟเวอร์)

รัน Gateway บนโฮสต์ถาวรและเข้าถึงผ่าน Tailscale หรือ SSH

  • ประสบการณ์ใช้งานดีที่สุด: คงค่า gateway.bind: "loopback" และใช้ Tailscale Serve สำหรับ Control UI
  • ทางเลือกสำรอง: คง loopback + อุโมงค์SSH จากเครื่องใดก็ได้ที่ต้องการเข้าถึง
  • ตัวอย่าง: exe.dev (VM ตั้งค่าง่าย) หรือ Hetzner (VPS สำหรับโปรดักชัน)

เหมาะอย่างยิ่งเมื่อแล็ปท็อปของคุณพักเครื่องบ่อย แต่ต้องการให้เอเจนต์ทำงานตลอด

2. เดสก์ท็อปที่บ้านรัน Gateway, แล็ปท็อปเป็นตัวควบคุมระยะไกล

แล็ปท็อป ไม่ รันเอเจนต์ แต่เชื่อมต่อจากระยะไกล: มันเชื่อมต่อจากระยะไกล:

  • ใช้โหมด Remote over SSH ของแอปmacOS (Settings → General → “OpenClaw runs”)
  • แอปจะเปิดและจัดการอุโมงค์ให้ ทำให้ WebChat + การตรวจสุขภาพ “ทำงานได้ทันที”

Runbook: macOS remote access

3. แล็ปท็อปรัน Gateway, เข้าถึงจากเครื่องอื่น

คง Gateway ไว้ภายในเครื่องแต่เปิดให้เข้าถึงอย่างปลอดภัย:

  • ทำอุโมงค์SSH เข้าหาแล็ปท็อปจากเครื่องอื่น หรือ
  • ใช้ Tailscale Serve สำหรับ Control UI และคง Gateway เป็น loopback เท่านั้น

คู่มือ: Tailscale และ Web overview

การไหลของคำสั่ง (อะไรทำงานที่ไหน)

บริการ Gateway เพียงตัวเดียวเป็นเจ้าของสถานะ + ช่องทาง โหนดเป็นอุปกรณ์ต่อพ่วง โหนดเป็นอุปกรณ์ต่อพ่วง

ตัวอย่างการไหล (Telegram → โหนด):

  • ข้อความจาก Telegram มาถึง Gateway
  • Gateway รัน เอเจนต์ และตัดสินใจว่าจะเรียกเครื่องมือของโหนดหรือไม่
  • Gateway เรียก โหนด ผ่าน Gateway WebSocket (RPC node.*)
  • โหนดส่งผลลัพธ์กลับมา; Gateway ตอบกลับไปยัง Telegram

หมายเหตุ:

  • โหนดไม่รันบริการGateway ควรมีGatewayเพียงหนึ่งตัวต่อโฮสต์ เว้นแต่คุณตั้งใจรันโปรไฟล์แยก (ดู Multiple gateways)
  • โหมด “node mode” ของแอปmacOS เป็นเพียงไคลเอนต์โหนดผ่าน Gateway WebSocket

อุโมงค์SSH (CLI + เครื่องมือ)

สร้างอุโมงค์ภายในเครื่องไปยัง Gateway WS ระยะไกล:

ssh -N -L 18789:127.0.0.1:18789 user@host

เมื่ออุโมงค์พร้อมใช้งาน:

  • openclaw health และ openclaw status --deep จะเข้าถึง Gateway ระยะไกลผ่าน ws://127.0.0.1:18789
  • openclaw gateway {status,health,send,agent,call} สามารถกำหนดเป้าหมายไปยัง URL ที่ถูก forward ผ่าน --url เมื่อจำเป็น

หมายเหตุ: แทนที่ 18789 ด้วย gateway.port ที่คุณกำหนดค่าไว้ (หรือ --port/OPENCLAW_GATEWAY_PORT) หมายเหตุ: แทนที่ 18789 ด้วย gateway.port ที่คุณกำหนด (หรือ --port/OPENCLAW_GATEWAY_PORT) หมายเหตุ: เมื่อคุณส่ง --url CLI จะไม่ย้อนกลับไปใช้คอนฟิกหรือข้อมูลประจำตัวจากตัวแปรสภาพแวดล้อม โปรดระบุ --token หรือ --password อย่างชัดเจน การขาดข้อมูลประจำตัวที่ระบุชัดถือเป็นข้อผิดพลาด ระบุ --token หรือ --password อย่างชัดเจน การขาดข้อมูลรับรองที่ระบุอย่างชัดเจนถือเป็นข้อผิดพลาด

ค่าเริ่มต้นของ CLI สำหรับรีโมต

คุณสามารถบันทึกเป้าหมายรีโมตเพื่อให้คำสั่ง CLI ใช้เป็นค่าเริ่มต้นได้:

{
  gateway: {
    mode: "remote",
    remote: {
      url: "ws://127.0.0.1:18789",
      token: "your-token",
    },
  },
}

เมื่อ Gateway เป็น loopback เท่านั้น ให้คง URL ไว้ที่ ws://127.0.0.1:18789 และเปิดอุโมงค์SSH ก่อน

Chat UI ผ่าน SSH

WebChat ไม่ได้ใช้พอร์ต HTTP แยกอีกต่อไป WebChat ไม่ได้ใช้พอร์ตHTTPแยกต่างหากอีกต่อไป UI แชต SwiftUI จะเชื่อมต่อโดยตรงกับ Gateway WebSocket

  • Forward 18789 ผ่าน SSH (ดูด้านบน) จากนั้นให้ไคลเอนต์เชื่อมต่อไปที่ ws://127.0.0.1:18789
  • บน macOS แนะนำให้ใช้โหมด “Remote over SSH” ของแอป ซึ่งจัดการอุโมงค์ให้อัตโนมัติ

แอปmacOS “Remote over SSH”

แอปเมนูบาร์บน macOS สามารถจัดการการตั้งค่าเดียวกันได้ครบวงจร (ตรวจสถานะระยะไกล, WebChat, และการ forward Voice Wake)

Runbook: macOS remote access

กฎด้านความปลอดภัย (รีโมต/VPN)

สรุปสั้น ๆ: คง Gateway เป็น loopback เท่านั้น เว้นแต่คุณมั่นใจว่าจำเป็นต้อง bind

  • Loopback + SSH/Tailscale Serve เป็นค่าเริ่มต้นที่ปลอดภัยที่สุด (ไม่มีการเปิดสาธารณะ)
  • การ bind ที่ไม่ใช่ loopback (lan/tailnet/custom หรือ auto เมื่อไม่สามารถใช้ loopback ได้) ต้องใช้โทเคน/รหัสผ่านสำหรับการยืนยันตัวตน
  • gateway.remote.token ใช้ เฉพาะ สำหรับการเรียก CLI ระยะไกล — ไม่ เปิดใช้งานการยืนยันตัวตนภายในเครื่อง
  • gateway.remote.tlsFingerprint จะ pin ใบรับรองTLSระยะไกลเมื่อใช้ wss://
  • Tailscale Serve สามารถยืนยันตัวตนผ่าน identity headers เมื่อ gateway.auth.allowTailscale: true ตั้งค่าเป็น false หากคุณต้องการใช้โทเคน/รหัสผ่านแทน ตั้งค่าเป็น false หากคุณต้องการใช้โทเคน/รหัสผ่านแทน
  • ปฏิบัติต่อการควบคุมผ่านเบราว์เซอร์เหมือนการเข้าถึงของผู้ปฏิบัติงาน: จำกัดเฉพาะ tailnet + การจับคู่โหนดอย่างรอบคอบ

เจาะลึก: Security