Chế độ
gateway.tailscale.mode:
Đầu ra trạng thái và kiểm tra sử dụng mức phơi bày qua Tailscale cho chế độ Serve/Funnel này của OpenClaw.
off có nghĩa là OpenClaw không quản lý Serve hoặc Funnel; điều đó không có nghĩa là trình nền Tailscale cục bộ đã dừng hoặc đăng xuất.
Ví dụ cấu hình
Chỉ tailnet (Serve)
https://<magicdns>/ (hoặc gateway.controlUi.basePath mà bạn đã cấu hình)
Để cung cấp Control UI qua một Tailscale Service được đặt tên thay vì tên máy chủ của thiết bị, hãy đặt gateway.tailscale.serviceName thành tên Service:
https://openclaw.<tailnet-name>.ts.net/ thay vì tên máy chủ của thiết bị. Tailscale Services yêu cầu máy chủ phải là một Node được gắn thẻ và phê duyệt trong tailnet của bạn — hãy cấu hình thẻ và phê duyệt Service trong Tailscale trước khi bật tính năng này, nếu không tailscale serve --service=... sẽ thất bại trong quá trình khởi động gateway.
Chỉ tailnet (liên kết với IP Tailnet)
Dùng cách này để gateway lắng nghe trực tiếp trên IP Tailnet mà không có Serve/Funnel:- Control UI:
http://<tailscale-ip>:18789/ - WebSocket:
ws://<tailscale-ip>:18789
Khi có địa chỉ IPv4 Tailnet có thể liên kết, Gateway cũng yêu cầu
http://127.0.0.1:18789 cho các máy khách được xác thực trên cùng máy chủ. Nếu không có địa chỉ Tailnet khi khởi động, hệ thống chỉ chuyển về local loopback; hãy khởi động lại sau khi Tailscale khả dụng để thêm quyền truy cập trực tiếp qua Tailnet. Cả hai đường dẫn đều không làm tăng mức phơi bày ra mạng LAN hoặc công khai.Internet công khai (Funnel + mật khẩu dùng chung)
OPENCLAW_GATEWAY_PASSWORD thay vì lưu mật khẩu vào đĩa cùng mã nguồn.
Ví dụ CLI
Xác thực
gateway.auth.mode kiểm soát quá trình bắt tay:
Tiêu đề danh tính Tailscale (chỉ Serve)
Khitailscale.mode: "serve" và gateway.auth.allowTailscale là true, quá trình xác thực Control UI/WebSocket có thể dùng các tiêu đề danh tính Tailscale (tailscale-user-login) thay cho mã thông báo/mật khẩu. Trước khi chấp nhận, OpenClaw xác minh tiêu đề bằng cách phân giải địa chỉ x-forwarded-for của yêu cầu qua trình nền Tailscale cục bộ (tailscale whois) và đối chiếu với thông tin đăng nhập trong tiêu đề. Một yêu cầu chỉ đủ điều kiện sử dụng đường dẫn này khi đến từ local loopback và mang các tiêu đề x-forwarded-for, x-forwarded-proto và x-forwarded-host của Tailscale.
Luồng không dùng mã thông báo này giả định máy chủ gateway là đáng tin cậy. Nếu mã cục bộ không đáng tin cậy có thể chạy trên cùng máy chủ, hãy đặt gateway.auth.allowTailscale: false và yêu cầu xác thực bằng mã thông báo/mật khẩu.
Phạm vi bỏ qua:
- Chỉ áp dụng cho bề mặt xác thực WebSocket của Control UI. Các điểm cuối API HTTP (
/v1/*,/tools/invoke,/api/channels/*, v.v.) không bao giờ dùng xác thực bằng tiêu đề danh tính Tailscale; chúng luôn tuân theo chế độ xác thực HTTP thông thường của gateway. - Đối với các phiên vận hành Control UI đã mang danh tính thiết bị trình duyệt, danh tính Tailscale đã xác minh sẽ bỏ qua vòng ghép nối bằng mã thông báo khởi tạo/mã QR.
- Điều này không bỏ qua chính danh tính thiết bị: các máy khách không có danh tính thiết bị vẫn bị từ chối và các kết nối theo vai trò Node vẫn phải trải qua quy trình ghép nối và kiểm tra xác thực thông thường.
Lưu ý
- Tailscale Serve/Funnel yêu cầu CLI
tailscaleđã được cài đặt và đăng nhập. tailscale.mode: "funnel"từ chối khởi động nếu chế độ xác thực không phải làpassword, nhằm tránh phơi bày công khai.gateway.tailscale.serviceNamechỉ áp dụng cho chế độ Serve và được truyền đếntailscale serve --service=<name>. Giá trị phải sử dụng định dạngsvc:<dns-label>của Tailscale, ví dụsvc:openclaw. Tailscale yêu cầu máy chủ Service phải là Node được gắn thẻ và Service có thể cần được phê duyệt trong bảng điều khiển quản trị trước khi Serve có thể công bố Service.gateway.tailscale.resetOnExithoàn tác cấu hìnhtailscale serve/tailscale funnelkhi tắt.gateway.tailscale.preserveFunnel: trueduy trì hoạt động của tuyếntailscale funnelđược cấu hình bên ngoài qua các lần khởi động lại gateway. Vớimode: "serve", OpenClaw kiểm tratailscale funnel statustrước khi áp dụng lại Serve và bỏ qua thao tác đó khi một tuyến Funnel đã bao phủ cổng gateway. Chính sách chỉ dùng mật khẩu cho Funnel do OpenClaw quản lý vẫn không thay đổi.gateway.bind: "tailnet"sử dụng liên kết trực tiếp với Tailnet (không HTTPS, không Serve/Funnel), đồng thời yêu cầu địa chỉ cục bộ127.0.0.1khi có IPv4 Tailnet; nếu không, hệ thống chỉ chuyển về local loopback.gateway.bind: "auto"ưu tiên local loopback; dùngtailnetđể giới hạn mức phơi bày mạng trong Tailnet trong khi vẫn giữ quyền truy cập local loopback trên cùng máy chủ.- Serve/Funnel chỉ cung cấp Control UI + WS của Gateway. Các Node kết nối qua cùng điểm cuối WS của Gateway, vì vậy Serve cũng hỗ trợ quyền truy cập Node.
Điều kiện tiên quyết và giới hạn của Tailscale
- Serve yêu cầu bật HTTPS cho tailnet của bạn; CLI sẽ nhắc nếu chưa bật.
- Serve chèn các tiêu đề danh tính Tailscale; Funnel thì không.
- Funnel yêu cầu Tailscale v1.38.3 trở lên, MagicDNS, HTTPS đã bật và thuộc tính Node Funnel.
- Funnel chỉ hỗ trợ các cổng
443,8443và10000qua TLS. - Funnel trên macOS yêu cầu biến thể ứng dụng Tailscale mã nguồn mở.
Điều khiển trình duyệt (Gateway từ xa + trình duyệt cục bộ)
Để chạy Gateway trên một máy nhưng điều khiển trình duyệt trên máy khác, hãy chạy một máy chủ Node trên máy có trình duyệt và giữ cả hai trong cùng một tailnet. Gateway chuyển tiếp các thao tác trình duyệt đến Node; không cần máy chủ điều khiển riêng hoặc URL Serve. Tránh dùng Funnel để điều khiển trình duyệt; hãy xem việc ghép nối Node tương tự như quyền truy cập của người vận hành.Tìm hiểu thêm
- Tổng quan về Tailscale Serve: https://tailscale.com/kb/1312/serve
- Lệnh
tailscale serve: https://tailscale.com/kb/1242/tailscale-serve - Tổng quan về Tailscale Funnel: https://tailscale.com/kb/1223/tailscale-funnel
- Lệnh
tailscale funnel: https://tailscale.com/kb/1311/tailscale-funnel