Web interfaces
Web
Gateway phục vụ một Giao diện điều khiển trên trình duyệt nhỏ (Vite + Lit) từ cùng cổng với Gateway WebSocket:
- mặc định:
http://<host>:18789/ - với
gateway.tls.enabled: true:https://<host>:18789/ - tiền tố tùy chọn: đặt
gateway.controlUi.basePath(ví dụ:/openclaw)
Các khả năng nằm trong Giao diện điều khiển. Phần còn lại của trang này tập trung vào các chế độ bind, bảo mật và các bề mặt hướng web.
Webhook
Khi hooks.enabled=true, Gateway cũng để lộ một endpoint webhook nhỏ trên cùng máy chủ HTTP.
Xem Cấu hình Gateway → hooks để biết xác thực + payload.
Admin HTTP RPC
Admin HTTP RPC để lộ các phương thức control-plane Gateway được chọn tại POST /api/v1/admin/rpc.
Tính năng này tắt theo mặc định và chỉ được đăng ký khi plugin admin-http-rpc được bật.
Xem Admin HTTP RPC để biết mô hình xác thực, các phương thức được phép và so sánh với WebSocket.
Cấu hình (bật mặc định)
Giao diện điều khiển được bật theo mặc định khi có tài nguyên (dist/control-ui).
Bạn có thể điều khiển nó qua cấu hình:
{ gateway: { controlUi: { enabled: true, basePath: "/openclaw" }, // basePath optional },}Truy cập Tailscale
Serve tích hợp (khuyến nghị)
Giữ Gateway trên loopback và để Tailscale Serve proxy nó:
{ gateway: { bind: "loopback", tailscale: { mode: "serve" }, },}Sau đó khởi động gateway:
openclaw gatewayMở:
https://<magicdns>/(hoặcgateway.controlUi.basePathbạn đã cấu hình)
Bind Tailnet + token
{ gateway: { bind: "tailnet", controlUi: { enabled: true }, auth: { mode: "token", token: "your-token" }, },}Sau đó khởi động gateway (ví dụ không dùng loopback này sử dụng xác thực token shared-secret):
openclaw gatewayMở:
http://<tailscale-ip>:18789/(hoặcgateway.controlUi.basePathbạn đã cấu hình)
Internet công khai (Funnel)
{ gateway: { bind: "loopback", tailscale: { mode: "funnel" }, auth: { mode: "password" }, // or OPENCLAW_GATEWAY_PASSWORD },}Ghi chú bảo mật
- Xác thực Gateway là bắt buộc theo mặc định (token, mật khẩu, trusted-proxy, hoặc header danh tính Tailscale Serve khi được bật).
- Các bind không phải loopback vẫn yêu cầu xác thực gateway. Trên thực tế, điều đó có nghĩa là xác thực token/mật khẩu hoặc một reverse proxy nhận biết danh tính với
gateway.auth.mode: "trusted-proxy". - Trình hướng dẫn tạo xác thực shared-secret theo mặc định và thường tạo một gateway token (ngay cả trên loopback).
- Ở chế độ shared-secret, UI gửi
connect.params.auth.tokenhoặcconnect.params.auth.password. - Khi
gateway.tls.enabled: true, dashboard cục bộ và các helper trạng thái hiển thị URL dashboardhttps://và URL WebSocketwss://. - Trong các chế độ mang danh tính như Tailscale Serve hoặc
trusted-proxy, kiểm tra xác thực WebSocket thay vào đó được thỏa mãn từ header yêu cầu. - Với các triển khai Giao diện điều khiển công khai không dùng loopback, hãy đặt
gateway.controlUi.allowedOriginsmột cách rõ ràng (origin đầy đủ). Các lượt tải LAN/Tailnet riêng tư cùng origin được chấp nhận cho loopback, RFC1918/link-local,.local,.ts.net, và host Tailscale CGNAT. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=truebật chế độ fallback origin theo Host-header, nhưng đây là một hạ cấp bảo mật nguy hiểm.- Với Serve, header danh tính Tailscale có thể thỏa mãn xác thực Giao diện điều khiển/WebSocket
khi
gateway.auth.allowTailscalelàtrue(không cần token/mật khẩu). Các endpoint HTTP API không dùng các header danh tính Tailscale đó; thay vào đó chúng tuân theo chế độ xác thực HTTP bình thường của gateway. Đặtgateway.auth.allowTailscale: falseđể yêu cầu thông tin xác thực rõ ràng. Xem Tailscale và Bảo mật. Luồng không token này giả định host gateway là đáng tin cậy. gateway.tailscale.mode: "funnel"yêu cầugateway.auth.mode: "password"(mật khẩu dùng chung).
Xây dựng UI
Gateway phục vụ tệp tĩnh từ dist/control-ui. Xây dựng chúng bằng:
pnpm ui:build