OpenClaw từ xa (macOS ⇄ máy chủ từ xa)
Luồng này cho phép ứng dụng macOS hoạt động như một điều khiển từ xa đầy đủ cho một gateway OpenClaw chạy trên máy chủ khác (desktop/server). Đây là tính năng Remote over SSH (chạy từ xa) của ứng dụng. Tất cả các tính năng—health checks, chuyển tiếp Voice Wake và Web Chat—đều tái sử dụng cùng cấu hình SSH từ xa trong Settings → General.Chế độ
- Local (máy Mac này): Mọi thứ chạy trên laptop. Không liên quan đến SSH.
- Ứng dụng mac mở một kết nối SSH với
-o BatchModecùng identity/khóa bạn chọn và một chuyển tiếp cổng cục bộ. Ứng dụng mac mở một kết nối SSH với-o BatchModecùng với identity/key bạn chọn và một port‑forward cục bộ. - Remote direct (ws/wss): Không có đường hầm SSH. Ứng dụng mac kết nối trực tiếp tới URL của gateway (ví dụ qua Tailscale Serve hoặc một HTTPS reverse proxy công khai).
Truyền tải từ xa
Chế độ remote hỗ trợ hai kiểu truyền tải:- Gateway sẽ thấy IP của node là
127.0.0.1vì đường hầm là loopback. Gateway sẽ thấy IP của node là127.0.0.1vì đường hầm là loopback. - Direct (ws/wss): Connects straight to the gateway URL. The gateway sees the real client IP.
Điều kiện tiên quyết trên máy chủ từ xa
- Cài Node + pnpm và build/cài OpenClaw CLI (
pnpm install && pnpm build && pnpm link --global). - Đảm bảo
openclawnằm trong PATH cho shell không tương tác (tạo symlink vào/usr/local/binhoặc/opt/homebrew/binnếu cần). - Chúng tôi khuyến nghị IP Tailscale để đảm bảo khả năng truy cập ổn định ngoài LAN. We recommend Tailscale IPs for stable reachability off-LAN.
Thiết lập ứng dụng macOS
- Mở Settings → General.
- Trong OpenClaw runs, chọn Remote over SSH và cấu hình:
- Transport: SSH tunnel hoặc Direct (ws/wss).
- SSH target:
user@host(tùy chọn:port).- Nếu gateway ở cùng LAN và quảng bá Bonjour, chọn từ danh sách phát hiện để tự động điền trường này.
- Gateway URL (chỉ Direct):
wss://gateway.example.ts.net(hoặcws://...cho local/LAN). - Identity file (nâng cao): đường dẫn tới khóa của bạn.
- Project root (nâng cao): đường dẫn checkout trên máy từ xa dùng cho các lệnh.
- CLI path (nâng cao): đường dẫn tùy chọn tới entrypoint/binary
openclawcó thể chạy (tự động điền khi được quảng bá).
- Thành công cho biết lệnh
openclaw status --jsontừ xa chạy đúng. Success indicates the remoteopenclaw status --jsonruns correctly. Failures usually mean PATH/CLI issues; exit 127 means the CLI isn’t found remotely. - Kiểm tra trạng thái và Web Chat giờ sẽ tự động chạy qua đường hầm SSH này.
Chat Web
- SSH tunnel: Web Chat kết nối tới gateway qua cổng WebSocket điều khiển đã được chuyển tiếp (mặc định 18789).
- Direct (ws/wss): Web Chat kết nối thẳng tới URL gateway đã cấu hình.
- Không còn máy chủ HTTP WebChat riêng biệt nữa.
Quyền
- The remote host needs the same TCC approvals as local (Automation, Accessibility, Screen Recording, Microphone, Speech Recognition, Notifications). Run onboarding on that machine to grant them once.
- Các node quảng bá trạng thái quyền của chúng qua
node.list/node.describeđể các agent biết những gì khả dụng.
Ghi chú bảo mật
- Ưu tiên bind loopback trên máy chủ từ xa và kết nối qua SSH hoặc Tailscale.
- Nếu bạn bind Gateway vào một interface không phải loopback, hãy yêu cầu xác thực bằng token/mật khẩu.
- Xem Security và Tailscale.
Luồng đăng nhập WhatsApp (từ xa)
- Run
openclaw channels login --verboseon the remote host. Scan the QR with WhatsApp on your phone. - Health check sẽ hiển thị các vấn đề về kết nối. Health check will surface link problems.
Xử lý sự cố
- exit 127 / not found:
openclawisn’t on PATH for non-login shells. Node IP hiển thị 127.0.0.1: điều này là mong đợi khi dùng SSH tunnel. - Health probe failed: kiểm tra khả năng kết nối SSH, PATH, và đảm bảo Baileys đã đăng nhập (
openclaw status --json). - Web Chat bị treo: xác nhận gateway đang chạy trên máy từ xa và cổng được chuyển tiếp khớp với cổng WS của gateway; UI yêu cầu kết nối WS ở trạng thái tốt.
- Chuyển Transport sang Direct (ws/wss) nếu bạn muốn gateway thấy IP thật của client. Switch Transport to Direct (ws/wss) if you want the gateway to see the real client IP.
- Voice Wake: các cụm kích hoạt được chuyển tiếp tự động trong chế độ remote; không cần forwarder riêng.
Âm thanh thông báo
Chọn âm thanh theo từng thông báo từ script vớiopenclaw và node.invoke, ví dụ: