openclaw node
Chạy một máy chủ Node không giao diện kết nối với WebSocket của Gateway và cung cấp
system.run / system.which trên máy này.
Trên macOS, ứng dụng thanh menu đã nhúng runtime máy chủ Node này vào kết nối
Node riêng và bổ sung các khả năng gốc của máy Mac. Chỉ sử dụng openclaw node run trên
máy Mac khi bạn chủ ý muốn có một Node không giao diện mà không dùng ứng dụng. Chạy
cả hai sẽ tạo hai danh tính Node cho cùng một máy.
Tại sao nên sử dụng máy chủ Node?
Sử dụng máy chủ Node khi bạn muốn các agent chạy lệnh trên những máy khác trong mạng mà không cần cài đặt ứng dụng đồng hành macOS đầy đủ trên đó. Các trường hợp sử dụng phổ biến:- Chạy lệnh trên các máy Linux/Windows từ xa (máy chủ build, máy trong phòng lab, NAS).
- Giữ exec trong sandbox trên Gateway, nhưng ủy quyền các lượt chạy đã phê duyệt cho máy chủ khác.
- Cung cấp đích thực thi nhẹ, không giao diện cho hoạt động tự động hóa hoặc các Node CI.
openclaw node run có thể công bố các công cụ dựa trên Plugin hoặc MCP sau khi kết nối.
Theo mặc định, Gateway tin cậy các bộ mô tả từ Node đã ghép nối, đồng thời yêu cầu
lệnh của mỗi bộ mô tả phải nằm trong bề mặt lệnh đã được phê duyệt của Node. Agent
thấy mỗi bộ mô tả được chấp nhận như một công cụ Plugin thông thường, nhưng việc thực thi vẫn
đi qua node.invoke, vì vậy việc ngắt kết nối Node sẽ loại bỏ công cụ khỏi các lượt chạy
agent mới. Người vận hành Gateway có thể tắt việc công bố bằng
gateway.nodes.pluginTools.enabled: false.
Đối với các công cụ MCP khai báo, hãy thêm cấu trúc máy chủ MCP thông thường trong
nodeHost.mcp.servers tại openclaw.json trên máy Node, sau đó khởi động lại
máy chủ Node. Node khai báo họ lệnh mcp.tools.call.v1 được kiểm soát bằng phê duyệt
và công bố các công cụ được liệt kê sau khi kết nối; việc thay đổi danh sách máy chủ
sau đó không yêu cầu ghép nối lại. Xem
Máy chủ MCP do Node lưu trữ.
Proxy trình duyệt (không cần cấu hình)
Máy chủ Node tự động quảng bá proxy trình duyệt nếubrowser.enabled không bị
tắt trên Node. Điều này cho phép agent sử dụng tính năng tự động hóa trình duyệt trên Node đó
mà không cần cấu hình bổ sung.
Theo mặc định, proxy cung cấp bề mặt hồ sơ trình duyệt thông thường của Node. Nếu bạn
đặt nodeHost.browserProxy.allowProfiles, proxy sẽ trở nên hạn chế:
việc nhắm đến hồ sơ không có trong danh sách cho phép sẽ bị từ chối và các tuyến tạo/xóa
hồ sơ cố định sẽ bị chặn qua proxy.
Tắt tính năng này trên Node nếu cần:
Chạy (tiền cảnh)
--host <host>: Máy chủ WebSocket của Gateway (mặc định:127.0.0.1)--port <port>: Cổng WebSocket của Gateway (mặc định:18789)--context-path <path>: Đường dẫn ngữ cảnh WebSocket của Gateway (ví dụ:/openclaw-gw). Được nối thêm vào URL WebSocket.--tls: Sử dụng TLS cho kết nối Gateway--no-tls: Buộc dùng kết nối Gateway văn bản thuần ngay cả khi cấu hình Gateway cục bộ bật TLS--tls-fingerprint <sha256>: Dấu vân tay chứng chỉ TLS dự kiến (sha256)--node-id <id>: Ghi đè ID phiên bản máy khách được lưu trong trạng thái SQLite dùng chung (không đặt lại ghép nối)--display-name <name>: Ghi đè tên hiển thị của Node
Xác thực Gateway cho máy chủ Node
openclaw node run và openclaw node install phân giải xác thực Gateway từ cấu hình/biến môi trường (không có cờ --token/--password trên các lệnh Node):
OPENCLAW_GATEWAY_TOKEN/OPENCLAW_GATEWAY_PASSWORDđược kiểm tra trước.- Sau đó dùng cấu hình cục bộ làm phương án dự phòng:
gateway.auth.token/gateway.auth.password. - Trong chế độ cục bộ, máy chủ Node chủ ý không kế thừa
gateway.remote.token/gateway.remote.password. - Nếu
gateway.auth.token/gateway.auth.passwordđược cấu hình rõ ràng qua SecretRef nhưng không phân giải được, quá trình phân giải xác thực Node sẽ đóng khi lỗi (không có phương án dự phòng từ xa che khuất lỗi). - Trong
gateway.mode=remote, các trường máy khách từ xa (gateway.remote.token/gateway.remote.password) cũng đủ điều kiện theo quy tắc ưu tiên từ xa. - Quá trình phân giải xác thực máy chủ Node chỉ chấp nhận các biến môi trường
OPENCLAW_GATEWAY_*.
ws:// dùng văn bản thuần, địa chỉ loopback, các
địa chỉ IP riêng dạng literal, .local và các máy chủ Tailnet *.ts.net đều được chấp nhận. Đối với các
tên DNS riêng đáng tin cậy khác, hãy đặt OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1; nếu không
có, Node sẽ đóng khi lỗi lúc khởi động và yêu cầu bạn sử dụng wss://, đường hầm SSH hoặc
Tailscale. Đây là tùy chọn tham gia qua môi trường tiến trình, không phải khóa cấu hình
openclaw.json.
openclaw node install duy trì tùy chọn này trong dịch vụ Node được giám sát khi nó
có mặt trong môi trường của lệnh cài đặt.
Dịch vụ (nền)
Cài đặt máy chủ Node không giao diện dưới dạng dịch vụ người dùng (launchd trên macOS, systemd trên Linux, Windows Task Scheduler trên Windows).--host <host>: Máy chủ WebSocket của Gateway (mặc định:127.0.0.1)--port <port>: Cổng WebSocket của Gateway (mặc định:18789)--context-path <path>: Đường dẫn ngữ cảnh WebSocket của Gateway (ví dụ:/openclaw-gw). Được nối thêm vào URL WebSocket.--tls: Sử dụng TLS cho kết nối Gateway--tls-fingerprint <sha256>: Dấu vân tay chứng chỉ TLS dự kiến (sha256)--node-id <id>: Ghi đè ID phiên bản máy khách được lưu trong trạng thái SQLite dùng chung (không đặt lại ghép nối)--display-name <name>: Ghi đè tên hiển thị của Node--runtime <runtime>: Runtime dịch vụ (node)--force: Cài đặt lại/ghi đè nếu đã được cài đặt
openclaw node run cho máy chủ Node chạy ở tiền cảnh (không có dịch vụ).
Các lệnh dịch vụ chấp nhận --json để xuất dữ liệu có thể đọc bằng máy.
Máy chủ Node tự thử lại trong cùng tiến trình khi Gateway khởi động lại hoặc kết nối mạng đóng. Nếu
Gateway báo trạng thái tạm dừng xác thực bằng token/mật khẩu/bootstrap có tính kết thúc, máy chủ Node
ghi nhật ký chi tiết đóng và thoát với mã khác 0 để launchd/systemd/Task Scheduler có thể
khởi động lại bằng cấu hình và thông tin xác thực mới. Các trạng thái tạm dừng do yêu cầu ghép nối vẫn nằm trong
luồng tiền cảnh để yêu cầu đang chờ có thể được phê duyệt.
Ghép nối
Kết nối đầu tiên tạo một yêu cầu ghép nối thiết bị đang chờ xử lý (role: node) trên Gateway.
Khi máy chủ Gateway có thể SSH đến máy chủ Node theo cách không tương tác (cùng người dùng,
khóa máy chủ đáng tin cậy), yêu cầu đang chờ sẽ được phê duyệt tự động: Gateway
chạy openclaw node identity --json trên máy chủ Node qua SSH và phê duyệt khi
khóa thiết bị khớp chính xác. Tính năng này được bật theo mặc định; xem
Tự động phê duyệt thiết bị được xác minh bằng SSH
để biết yêu cầu và cách tắt tính năng này (gateway.nodes.pairing.sshVerify: false).
Nếu không, hãy phê duyệt thủ công bằng:
primary trong
state/openclaw.sqlite và không bao giờ tạo cơ sở dữ liệu hoặc danh tính mới.
Trên các mạng Node được kiểm soát chặt chẽ, người vận hành Gateway có thể chủ động chọn
tự động phê duyệt lần ghép nối Node đầu tiên từ các CIDR đáng tin cậy:
autoApproveCidrs chưa được đặt). Nó chỉ áp dụng cho
lần ghép nối role: node mới không có phạm vi được yêu cầu, từ địa chỉ IP máy khách mà
Gateway tin cậy. Máy khách người vận hành/trình duyệt, Control UI, WebChat và các nâng cấp về vai trò,
phạm vi, siêu dữ liệu hoặc khóa công khai vẫn cần được phê duyệt thủ công.
Nếu Node thử lại việc ghép nối với chi tiết xác thực đã thay đổi (vai trò/phạm vi/khóa công khai),
yêu cầu đang chờ trước đó sẽ bị thay thế và một requestId mới được tạo.
Chạy lại openclaw devices list trước khi phê duyệt.
Trạng thái danh tính và ghép nối
Node không giao diện tách ID phiên bản máy khách khỏi danh tính thiết bị đã ký mà Gateway sử dụng để ghép nối và định tuyến. Trạng thái này nằm trong thư mục trạng thái OpenClaw (~/.openclaw theo mặc định hoặc $OPENCLAW_STATE_DIR
khi được đặt):
--node-id chỉ thay đổi ID phiên bản máy khách trong trạng thái SQLite dùng chung. Nó
không thay đổi ID thiết bị mật mã hoặc xóa xác thực ghép nối. Việc di chuyển một
node.json đã ngừng sử dụng bằng openclaw doctor --fix cũng không đặt lại ghép nối. Để
thu hồi và ghép nối lại một Node:
- Trên Gateway, chạy
openclaw nodes remove --node <id|name|ip>. - Trên Node, khởi động lại dịch vụ đã cài đặt bằng
openclaw node restart, hoặc dừng và chạy lại lệnh tiền cảnhopenclaw node run. Thao tác này khởi động luồng ghép nối thiết bị. Nếuopenclaw devices listkhông hiển thị yêu cầu và Node báoAUTH_DEVICE_TOKEN_MISMATCH, hãy khởi động lại hoặc chạy lại thêm một lần nữa. Lần thử bị từ chối sẽ xóa token cục bộ hiện đã bị thu hồi; lần thử tiếp theo có thể yêu cầu ghép nối. - Trên Gateway, chạy
openclaw devices list, sau đóopenclaw devices approve <deviceRequestId>. - Khởi động lại hoặc chạy lại Node lần nữa. Máy khách bị tạm dừng để ghép nối không tự động tiếp tục sau khi được phê duyệt; lần kết nối lại này tạo yêu cầu bề mặt lệnh riêng biệt.
- Trên Gateway, chạy
openclaw nodes pending, sau đóopenclaw nodes approve <nodeRequestId>.
node.json và danh tính
đã ký trong identity/device.json. Dừng máy chủ Node và chạy
openclaw doctor --fix một lần; Doctor tiếp quản từng nguồn đã ngừng sử dụng, xác thực nguồn đó,
nhập và xác minh hàng SQLite chuẩn, rồi xóa tệp cũ. Các lệnh Node thông thường
đóng khi lỗi kèm hướng dẫn sửa chữa này trong khi vẫn còn tệp đã ngừng sử dụng
hoặc yêu cầu Doctor bị gián đoạn. Giữ riêng tư state/openclaw.sqlite và
identity/device-auth.json; chúng chứa cặp khóa thiết bị và các token
xác thực. Xác thực thiết bị vẫn nằm trong kho lưu trữ riêng và không được ghi lại bởi quá trình
di chuyển danh tính.
Phê duyệt exec
system.run được kiểm soát bằng phê duyệt exec cục bộ:
$OPENCLAW_STATE_DIR/exec-approvals.json, hoặc~/.openclaw/exec-approvals.jsonkhi biến chưa được đặt- Phê duyệt exec
openclaw approvals --node <id|name|ip>(chỉnh sửa từ Gateway)
systemRunPlan
chuẩn trước khi nhắc phê duyệt. Lượt chuyển tiếp system.run đã được phê duyệt sau đó sẽ tái sử dụng kế hoạch
đã lưu này, vì vậy các chỉnh sửa đối với trường lệnh/cwd/phiên sau khi yêu cầu phê duyệt
được tạo sẽ bị từ chối thay vì thay đổi nội dung Node thực thi.