---
read_when:
    - การตั้งค่าหรือดีบักการควบคุม Mac ระยะไกล
summary: โฟลว์แอป macOS สำหรับควบคุม Gateway OpenClaw ระยะไกล
title: การควบคุมระยะไกล
x-i18n:
    generated_at: "2026-06-28T00:13:08Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 96ac4af5af9d3250f907818751120984106c3c7bcb1f3349d3f0678b4fefb120
    source_path: platforms/mac/remote.md
    workflow: 16
---

โฟลว์นี้ทำให้แอป macOS ทำหน้าที่เป็นรีโมตคอนโทรลเต็มรูปแบบสำหรับ OpenClaw Gateway ที่ทำงานบนโฮสต์อื่น (เดสก์ท็อป/เซิร์ฟเวอร์) ได้ แอปสามารถเชื่อมต่อโดยตรงไปยัง URL ของ Gateway บน LAN/Tailnet ที่เชื่อถือได้ หรือจัดการอุโมงค์ SSH เมื่อ Gateway ระยะไกลเป็นแบบ loopback-only การตรวจสุขภาพ, การส่งต่อ Voice Wake และเว็บแชทใช้การกำหนดค่าระยะไกลเดียวกันจาก _การตั้งค่า → ทั่วไป_

## โหมด

- **ภายในเครื่อง (Mac เครื่องนี้)**: ทุกอย่างทำงานบนแล็ปท็อป ไม่มี SSH เกี่ยวข้อง
- **ระยะไกลผ่าน SSH (ค่าเริ่มต้น)**: คำสั่ง OpenClaw จะถูกเรียกใช้บนโฮสต์ระยะไกล แอป Mac เปิดการเชื่อมต่อ SSH ด้วย `-o BatchMode` พร้อม identity/key ที่คุณเลือกและการส่งต่อพอร์ตภายในเครื่อง
- **ระยะไกลโดยตรง (ws/wss)**: ไม่มีอุโมงค์ SSH แอป Mac เชื่อมต่อกับ URL ของ Gateway โดยตรง (เช่น ผ่าน LAN, Tailscale, Tailscale Serve หรือ reverse proxy HTTPS สาธารณะ)

## ทรานสปอร์ตระยะไกล

โหมดระยะไกลรองรับทรานสปอร์ตสองแบบ:

- **อุโมงค์ SSH** (ค่าเริ่มต้น): ใช้ `ssh -N -L ...` เพื่อส่งต่อพอร์ต Gateway ไปยัง localhost Gateway จะเห็น IP ของ Node เป็น `127.0.0.1` เพราะอุโมงค์เป็น loopback
- **โดยตรง (ws/wss)**: เชื่อมต่อไปยัง URL ของ Gateway โดยตรง Gateway จะเห็น IP ไคลเอนต์จริง

ในโหมดอุโมงค์ SSH ชื่อโฮสต์ LAN/tailnet ที่ค้นพบจะถูกบันทึกเป็น
`gateway.remote.sshTarget` แอปจะคง `gateway.remote.url` ไว้ที่ปลายทางอุโมงค์ภายในเครื่อง
เช่น `ws://127.0.0.1:18789` เพื่อให้ CLI, เว็บแชท และ
บริการโฮสต์ Node ภายในเครื่องทั้งหมดใช้ทรานสปอร์ต loopback ที่ปลอดภัยเดียวกัน
เมื่อการค้นพบคืนค่าทั้ง IP Tailnet ดิบและชื่อโฮสต์ที่เสถียร แอปจะเลือก
Tailscale MagicDNS หรือชื่อ LAN ก่อน เพื่อให้การเชื่อมต่อระยะไกลทนต่อการเปลี่ยนแปลงที่อยู่ได้ดีกว่า
หากพอร์ตอุโมงค์ภายในเครื่องต่างจากพอร์ต Gateway ระยะไกล ให้ตั้งค่า
`gateway.remote.remotePort` เป็นพอร์ตบนโฮสต์ระยะไกล

การทำงานอัตโนมัติของเบราว์เซอร์ในโหมดระยะไกลเป็นความรับผิดชอบของโฮสต์ Node ของ CLI ไม่ใช่
Node ของแอป macOS แบบเนทีฟ แอปจะเริ่มบริการโฮสต์ Node ที่ติดตั้งไว้เมื่อ
ทำได้ หากคุณต้องการควบคุมเบราว์เซอร์จาก Mac เครื่องนั้น ให้ติดตั้ง/เริ่มด้วย
`openclaw node install ...` และ `openclaw node start` (หรือเรียก
`openclaw node run ...` ใน foreground) แล้วกำหนดเป้าหมายไปยัง
Node ที่รองรับเบราว์เซอร์นั้น

## ข้อกำหนดเบื้องต้นบนโฮสต์ระยะไกล

1. ติดตั้ง Node + pnpm และ build/ติดตั้ง OpenClaw CLI (`pnpm install && pnpm build && pnpm link --global`)
2. ตรวจสอบให้แน่ใจว่า `openclaw` อยู่ใน PATH สำหรับเชลล์แบบไม่โต้ตอบ (สร้าง symlink ไปที่ `/usr/local/bin` หรือ `/opt/homebrew/bin` หากจำเป็น)
3. สำหรับทรานสปอร์ต SSH เท่านั้น: เปิด SSH พร้อมการยืนยันตัวตนด้วยคีย์ เราแนะนำ IP ของ **Tailscale** เพื่อให้เข้าถึงได้อย่างเสถียรเมื่อนอก LAN

## การตั้งค่าแอป macOS

หากต้องการกำหนดค่าแอปล่วงหน้าโดยไม่ใช้โฟลว์ต้อนรับ:

```bash
openclaw-mac configure-remote \
  --ssh-target user@gateway.local \
  --local-port 18789 \
  --remote-port 18789 \
  --token "$OPENCLAW_GATEWAY_TOKEN"
```

สำหรับ Gateway ที่เข้าถึงได้อยู่แล้วบน LAN หรือ Tailnet ที่เชื่อถือได้ ให้ข้าม SSH ทั้งหมด:

```bash
openclaw-mac configure-remote \
  --direct-url ws://192.168.0.202:18789 \
  --token "$OPENCLAW_GATEWAY_TOKEN"
```

คำสั่งนี้เขียนการกำหนดค่าระยะไกล ทำเครื่องหมายว่า onboarding เสร็จสมบูรณ์ และให้แอปเป็นเจ้าของ
ทรานสปอร์ตที่เลือกเมื่อเริ่มทำงาน

1. เปิด _การตั้งค่า → ทั่วไป_
2. ภายใต้ **OpenClaw ทำงานที่** ให้เลือก **ระยะไกล** และตั้งค่า:
   - **ทรานสปอร์ต**: **อุโมงค์ SSH** หรือ **โดยตรง (ws/wss)**
   - **เป้าหมาย SSH**: `user@host` (เลือกใส่ `:port` ได้)
     - หาก Gateway อยู่บน LAN เดียวกันและประกาศ Bonjour ให้เลือกจากรายการที่ค้นพบเพื่อเติมฟิลด์นี้โดยอัตโนมัติ
   - **URL ของ Gateway** (เฉพาะแบบโดยตรง): `wss://gateway.example.ts.net` (หรือ `ws://...` สำหรับภายในเครื่อง/LAN)
   - **ไฟล์ identity** (ขั้นสูง): พาธไปยังคีย์ของคุณ
   - **รากโปรเจกต์** (ขั้นสูง): พาธ checkout ระยะไกลที่ใช้สำหรับคำสั่ง
   - **พาธ CLI** (ขั้นสูง): พาธทางเลือกไปยัง entrypoint/ไบนารี `openclaw` ที่เรียกใช้ได้ (เติมอัตโนมัติเมื่อมีการประกาศ)
3. กด **ทดสอบระยะไกล** ความสำเร็จหมายถึง `openclaw status --json` ระยะไกลทำงานถูกต้อง ความล้มเหลวมักหมายถึงปัญหา PATH/CLI; exit 127 หมายถึงไม่พบ CLI บนเครื่องระยะไกล
4. ตอนนี้การตรวจสุขภาพและเว็บแชทจะทำงานผ่านทรานสปอร์ตที่เลือกโดยอัตโนมัติ

## เว็บแชท

- **อุโมงค์ SSH**: เว็บแชทเชื่อมต่อกับ Gateway ผ่านพอร์ตควบคุม WebSocket ที่ส่งต่อไว้ (ค่าเริ่มต้น 18789)
- **โดยตรง (ws/wss)**: เว็บแชทเชื่อมต่อโดยตรงไปยัง URL ของ Gateway ที่กำหนดค่าไว้
- ไม่มีเซิร์ฟเวอร์ HTTP สำหรับ WebChat แยกต่างหากอีกต่อไป

## สิทธิ์

- โฮสต์ระยะไกลต้องมีการอนุมัติ TCC แบบเดียวกับภายในเครื่อง (Automation, Accessibility, Screen Recording, Microphone, Speech Recognition, Notifications) เรียก onboarding บนเครื่องนั้นเพื่อให้สิทธิ์หนึ่งครั้ง
- Node ประกาศสถานะสิทธิ์ผ่าน `node.list` / `node.describe` เพื่อให้เอเจนต์รู้ว่ามีอะไรพร้อมใช้งาน

## หมายเหตุด้านความปลอดภัย

- ควรใช้การ bind แบบ loopback บนโฮสต์ระยะไกล แล้วเชื่อมต่อผ่าน SSH, Tailscale Serve หรือ URL โดยตรงของ Tailnet/LAN ที่เชื่อถือได้
- อุโมงค์ SSH ใช้การตรวจสอบ host-key แบบเข้มงวด ให้เชื่อถือ host key ก่อนเพื่อให้มีอยู่ใน `~/.ssh/known_hosts`
- หากคุณ bind Gateway กับอินเทอร์เฟซที่ไม่ใช่ loopback ต้องกำหนดให้ใช้การยืนยันตัวตน Gateway ที่ถูกต้อง: token, password หรือ reverse proxy ที่รับรู้ identity พร้อม `gateway.auth.mode: "trusted-proxy"`
- ดู [ความปลอดภัย](/th/gateway/security) และ [Tailscale](/th/gateway/tailscale)

## โฟลว์เข้าสู่ระบบ WhatsApp (ระยะไกล)

- เรียก `openclaw channels login --verbose` **บนโฮสต์ระยะไกล** สแกน QR ด้วย WhatsApp บนโทรศัพท์ของคุณ
- เรียก login ซ้ำบนโฮสต์นั้นหาก auth หมดอายุ การตรวจสุขภาพจะแสดงปัญหาการเชื่อมโยง

## การแก้ปัญหา

- **exit 127 / not found**: `openclaw` ไม่อยู่ใน PATH สำหรับเชลล์แบบ non-login เพิ่มลงใน `/etc/paths`, shell rc ของคุณ หรือสร้าง symlink ไปที่ `/usr/local/bin`/`/opt/homebrew/bin`
- **Health probe failed**: ตรวจสอบการเข้าถึง SSH, PATH และว่า Baileys เข้าสู่ระบบแล้ว (`openclaw status --json`)
- **เว็บแชทค้าง**: ยืนยันว่า Gateway กำลังทำงานบนโฮสต์ระยะไกล และพอร์ตที่ส่งต่อตรงกับพอร์ต WS ของ Gateway; UI ต้องใช้การเชื่อมต่อ WS ที่สมบูรณ์
- **IP ของ Node แสดงเป็น 127.0.0.1**: เป็นพฤติกรรมที่คาดไว้กับอุโมงค์ SSH เปลี่ยน **ทรานสปอร์ต** เป็น **โดยตรง (ws/wss)** หากคุณต้องการให้ Gateway เห็น IP ไคลเอนต์จริง
- **Dashboard ทำงานแต่ความสามารถของ Mac ออฟไลน์**: หมายความว่าการเชื่อมต่อ operator/control ของแอปสมบูรณ์ แต่การเชื่อมต่อ Node คู่กันไม่ได้เชื่อมต่อหรือไม่มีพื้นผิวคำสั่ง เปิดส่วนอุปกรณ์ในแถบเมนูและตรวจสอบว่า Mac เป็น `paired · disconnected` หรือไม่ สำหรับ endpoint ของ Tailscale Serve แบบ `wss://*.ts.net` แอปจะตรวจพบ TLS leaf pins แบบ legacy ที่ค้างหลังการหมุนเวียนใบรับรอง ล้าง pin ที่ค้างเมื่อ macOS เชื่อถือใบรับรองใหม่ และลองใหม่โดยอัตโนมัติ หากใบรับรองไม่ได้รับความเชื่อถือจากระบบหรือโฮสต์ไม่ใช่ชื่อ Tailscale Serve ให้ตั้งค่า `gateway.remote.tlsFingerprint` เป็นลายนิ้วมือใบรับรองที่คาดไว้ ตรวจสอบใบรับรอง หรือเปลี่ยนเป็น **ระยะไกลผ่าน SSH**
- **Voice Wake**: trigger phrases จะถูกส่งต่อโดยอัตโนมัติในโหมดระยะไกล ไม่จำเป็นต้องมี forwarder แยกต่างหาก

## เสียงแจ้งเตือน

เลือกเสียงต่อการแจ้งเตือนจากสคริปต์ด้วย `openclaw` และ `node.invoke` เช่น:

```bash
openclaw nodes notify --node <id> --title "Ping" --body "Remote gateway ready" --sound Glass
```

ไม่มี toggle "เสียงเริ่มต้น" แบบ global ในแอปอีกต่อไป ผู้เรียกเลือกเสียง (หรือไม่เลือก) ต่อคำขอ

## ที่เกี่ยวข้อง

- [แอป macOS](/th/platforms/macos)
- [การเข้าถึงระยะไกล](/th/gateway/remote)
