Hướng Dẫn Setup OpenClaw Node (Tiếng Việt)
title: “Hướng dẫn cài đặt OpenClaw Node giữa 2 VPS (qua Tailscale)” description: “Bài học thực chiến khi kết nối VPS Master và VPS Node thông qua mạng Tailscale, xử lý các lỗi config và systemd cứng đầu.” author: “SensaKai Team” date: 2026-02-06 tags: [“openclaw”, “vps”, “tailscale”, “devops”, “troubleshooting”]
Bối cảnh
Chúng ta có 2 VPS:
- VPS 1 (Master): Đã cài OpenClaw Gateway, chạy trên WSL2.
- VPS 2 (Node/Slave): Ubuntu Server, cần cài OpenClaw Node để thực thi lệnh từ xa.
- Mạng: Cả 2 kết nối với nhau qua Tailscale VPN.
Kiến trúc triển khai
Để đảm bảo bảo mật và không cần mở port Public Internet, chúng ta sử dụng tính năng Tailscale Serve trên Master để tạo đường hầm HTTPS an toàn.
- Master (VPS 1): Chạy Gateway, bind vào loopback, dùng Tailscale Serve để expose ra mạng nội bộ Tailnet dưới dạng HTTPS.
- Node (VPS 2): Chạy OpenClaw Node Service, kết nối tới Master qua URL MagicDNS của Tailscale.
Phần 1: Cấu hình VPS Master (Gateway)
1. Cấu hình OpenClaw Gateway
Mở file ~/.openclaw/openclaw.json và cấu hình:
{
"gateway": {
"bind": "loopback", // Chỉ nghe ở 127.0.0.1 (An toàn)
"port": 18789,
"tailscale": {
"mode": "serve" // Tự động bật Tailscale Serve HTTPS
},
// ... các config khác
}
}
2. Khởi động và lấy URL
Restart Gateway:
openclaw gateway restart
Kiểm tra URL MagicDNS:
tailscale serve status
# Kết quả: https://vps1-name.tailnet-name.ts.net
(Ghi nhớ URL này để dùng cho VPS 2)
Phần 2: Cấu hình VPS Node (Slave)
Đây là phần “khó nhằn” nhất vì dễ gặp lỗi cache config hoặc systemd không nhận biến môi trường.
1. Cài đặt OpenClaw CLI
npm install -g openclaw
2. Xử lý lỗi “Kết nối lì lợm vào 127.0.0.1”
Trong thực tế, Node thường ưu tiên file config cũ hoặc mặc định kết nối về localhost. Giải pháp triệt để nhất là Hard-code tham số vào Systemd Service thay vì dùng file JSON.
Bước 1: Dừng service cũ (nếu có) và xóa file config rác:
systemctl --user stop openclaw-node.service
rm ~/.openclaw/node.json # Quan trọng: File này thường gây lỗi cache
rm ~/.openclaw/openclaw.json # Xóa luôn file config để tránh xung đột
Bước 2: Tạo file Systemd Service chuẩn “ép buộc” kết nối Remote:
Tạo file ~/.config/systemd/user/openclaw-node.service với nội dung sau:
[Unit]
Description=OpenClaw Node Host (Remote)
After=network-online.target
Wants=network-online.target
[Service]
# Quan trọng: Dùng tham số dòng lệnh để override mọi config
ExecStart=/usr/bin/node /usr/lib/node_modules/openclaw/dist/index.js node run --host "vps1-name.tailnet-name.ts.net" --port 443 --tls
# Các thiết lập môi trường bổ trợ
Environment=HOME=/home/username
Environment="PATH=/usr/bin:/usr/local/bin:/bin"
# Token bắt buộc phải truyền qua ENV (CLI không hỗ trợ cờ --token)
Environment="OPENCLAW_GATEWAY_TOKEN=YOUR_MASTER_TOKEN_HERE"
# Fix lỗi SSL nếu Node kén chứng chỉ Let's Encrypt của Tailscale
Environment="NODE_TLS_REJECT_UNAUTHORIZED=0"
Restart=always
RestartSec=5
KillMode=process
[Install]
WantedBy=default.target
(Thay vps1-name... và YOUR_MASTER_TOKEN_HERE bằng thông tin thật)
Bước 3: Kích hoạt và chạy Service
systemctl --user daemon-reload
systemctl --user enable openclaw-node.service
systemctl --user restart openclaw-node.service
Phần 3: Ghép đôi (Pairing)
Ngay sau khi Node chạy, nó sẽ gửi yêu cầu ghép đôi tới Master.
-
Trên VPS 1 (Master): Kiểm tra danh sách chờ.
openclaw devices listKết quả sẽ thấy một thiết bị Role: node đang ở trạng thái Pending.
-
Duyệt thiết bị:
openclaw devices approve <REQUEST_ID> -
Hoàn tất: Sau khi duyệt, VPS 2 sẽ tự động kết nối lại và chuyển sang trạng thái Connected. Kiểm tra lại trên Master:
openclaw nodes status
Bài học rút ra (Troubleshooting)
-
Lỗi
ECONNREFUSED 127.0.0.1dai dẳng:- Thường do file
~/.openclaw/node.jsoncũ còn sót lại -> Cần xóa ngay. - Do lệnh
openclaw node installban đầu tạo ra file service có fix cứng--host 127.0.0.1.
- Thường do file
-
Lỗi
unknown option '--token':- Lệnh
openclaw node runkhông hỗ trợ tham số--token. Phải dùng biến môi trườngOPENCLAW_GATEWAY_TOKEN.
- Lệnh
-
Lỗi kết nối SSL/TLS:
- Khi dùng Tailscale Serve, phải thêm cờ
--tlsvà port443. - Nếu gặp lỗi chứng chỉ, thêm
NODE_TLS_REJECT_UNAUTHORIZED=0.
- Khi dùng Tailscale Serve, phải thêm cờ
Ghi chép bởi SensaKai Team - 2026