Trên laptop, OpenClaw im bặt ngay khi gập màn hình: tin nhắn WhatsApp dồn lại, các tác vụ hẹn giờ chờ bạn quay lại. Trên máy chủ, nó vẫn tiếp tục trả lời. Vấn đề là gateway không phải một widget chat. Nó giữ thông tin đăng nhập của các kênh và, nếu bạn không bật sandbox, chạy công cụ thẳng trên host. Chuyển nó sang một máy luôn bật chỉ đáng làm khi mô hình bảo mật cũng được chuyển theo.
Hướng dẫn này làm việc đó trong khoảng 20 phút trên một VPS Ubuntu 24.04 mới.
Kiểm tra lần cuối ngày 2026-10-04 với OpenClaw 2026.9.8 (npm), Node 24.21 LTS và Ubuntu 24.04.
Bạn cần gì
- Một VPS Linux. Chúng tôi dùng gói AI-Agent: 4 vCPU, 4 GB RAM, ổ 40 GB, $10 mỗi tháng. Tài liệu OpenClaw có nhắc tới 6 GB RAM, nhưng đó là để build image Docker của họ từ mã nguồn; gói npm không cần build.
- Một API key từ nhà cung cấp mô hình và các tài khoản chat bạn muốn kết nối.
- Một SSH key trên laptop. Nếu chưa có: đăng nhập bằng SSH key.
Gói NAT dùng ở đây rất ổn, thậm chí có lẽ còn hợp hơn. Gateway không bao giờ cần một cổng vào đang mở: WhatsApp, Discord và Telegram (mặc định long polling) tự kết nối ra ngoài, và bạn vào bảng điều khiển qua SSH. Chỉ lấy IPv4 riêng nếu một kênh bạn cần gửi tin qua webhook hoặc bạn định đặt reverse proxy công khai phía trước.
1. Một user không phải root
OpenClaw chạy công cụ dưới quyền user sở hữu gateway. Nếu user đó là root, thì mọi lệnh mà một mô hình bị rối hoặc bị prompt injection quyết định chạy cũng chạy bằng root. Tài liệu OpenClaw gọi việc chạy gateway bằng root là không an toàn và không được hỗ trợ. Tạo một user riêng không có sudo:
# với quyền root
apt update && apt -y upgrade
adduser --disabled-password --gecos "" claw
install -d -m 700 -o claw -g claw /home/claw/.ssh
install -m 600 -o claw -g claw ~/.ssh/authorized_keys /home/claw/.ssh/authorized_keys # key bạn đã thêm khi đặt mua
loginctl enable-linger claw
Dòng cuối quan trọng hơn vẻ ngoài của nó. OpenClaw cài một dịch vụ systemd cấp user, và không có lingering thì dịch vụ đó dừng khi bạn đăng xuất. Đây là câu "hôm qua vẫn chạy mà" phổ biến nhất trên máy chủ.
2. Node 24 và OpenClaw
OpenClaw 2026.9.8 yêu cầu Node >=24.16.0 <25 hoặc >=26.1.0. Gói nodejs của Ubuntu cũ hơn, nên ta lấy bản 24 LTS từ NodeSource:
# với quyền root
curl -fsSL https://deb.nodesource.com/setup_24.x | bash -
apt install -y nodejs
node -v # v24.16.0 hoặc mới hơn
npm install -g openclaw@latest
openclaw --version
Lệnh chính thức một dòng (curl -fsSL https://openclaw.ai/install.sh | bash) cũng chạy được và tự cài Node cho bạn. Trên máy chủ, chúng tôi thích hai bước rõ ràng hơn: bạn thấy cái gì nằm ở đâu, và file thực thi nằm trong /usr/bin thay vì trong thư mục home mà agent có thể ghi vào.
3. Onboarding với user của agent
Đăng nhập bằng claw qua SSH, không dùng su. Chỉ một lần đăng nhập thật mới khởi động user manager của systemd mà dịch vụ cần:
# từ laptop (gói NAT: thêm -p <cổng SSH của bạn>)
ssh claw@<server>
openclaw onboard --install-daemon
openclaw gateway status
Trình hướng dẫn kiểm tra quyền truy cập mô hình, ghi ~/.openclaw/openclaw.json, tạo token gateway và cài dịch vụ. Nếu systemctl --user báo lỗi về bus, hãy đặt export XDG_RUNTIME_DIR=/run/user/$(id -u) rồi chạy lại.
Sau đó khóa các file lại. Khuyến nghị của chính OpenClaw là 700 cho thư mục trạng thái và 600 cho file cấu hình:
chmod 700 ~/.openclaw && chmod 600 ~/.openclaw/openclaw.json
openclaw security audit --deep
openclaw security audit --fix áp dụng phần sửa lỗi an toàn: quyền file chặt hơn và allowlist thay cho chính sách nhóm mở. Nó không đổi địa chỉ lắng nghe và không dựng tường lửa; việc phơi ra mạng vẫn là trách nhiệm của bạn.
4. Giữ gateway trên loopback
Gateway phục vụ API WebSocket và bảng điều khiển trên một cổng duy nhất, 18789, mặc định gắn với 127.0.0.1. Cứ để nguyên như vậy. Một cấu hình tối thiểu ghi rõ điều đó:
// ~/.openclaw/openclaw.json
{
gateway: {
mode: "local",
bind: "loopback",
port: 18789,
auth: { mode: "token", token: "paste-output-of-openssl-rand-hex-32" },
},
}
Tạo token bằng openssl rand -hex 32 hoặc openclaw doctor --generate-gateway-token. Gateway từ chối token rỗng và các giá trị mẫu, còn bản kiểm tra cảnh báo nếu token ngắn hơn 24 ký tự.
Điều không nên làm: đặt bind thành "lan" rồi mở cổng. Tài liệu nói thẳng: đừng bao giờ để gateway không xác thực trên 0.0.0.0, và đừng chuyển tiếp cổng rộng rãi kể cả khi có token. Ai lấy được token đó sẽ thành người điều khiển một tiến trình có thể chạy lệnh trên máy chủ của bạn.
Về tường lửa, chỉ cho phép SSH, không gì khác:
# với quyền root
ufw allow OpenSSH
ufw enable
ufw status verbose
Với các gói NAT của chúng tôi, bảng điều khiển hiển thị một cổng SSH bên ngoài, nhưng bên trong máy chủ sshd vẫn lắng nghe ở cổng 22. Hãy cho phép OpenSSH (cổng 22), không phải số cổng bên ngoài, nếu không ufw enable sẽ khóa bạn ở ngoài. Xem thêm trong hướng dẫn UFW.
5. Vào bảng điều khiển qua SSH
Từ laptop, mở một tunnel và để nó chạy:
ssh -N -L 18789:127.0.0.1:18789 claw@<server>
# gói NAT: ssh -N -p <cổng SSH của bạn> -L 18789:127.0.0.1:18789 claw@<host>
Mở http://127.0.0.1:18789/ và dán token gateway. sshd mặc định của Ubuntu cho phép chuyển tiếp cục bộ; nếu bạn đã siết chặt nó, AllowTcpForwarding local là thiết lập cho phép -L và chặn chuyển tiếp từ xa. Nếu tunnel báo lỗi administratively prohibited, đó chính là dòng cần kiểm tra.
Một tailnet cũng được: Tailscale Serve giữ gateway trên loopback và tự quản lý quyền truy cập. Cả hai đều ổn. Một cổng công khai thì không.
6. Pairing, sandbox và ai được nói chuyện với nó
Các kênh chat là lối vào thứ hai. Mặc định, các kênh có tin nhắn riêng bắt người gửi lạ phải pairing trước; bạn duyệt từ máy chủ:
openclaw pairing approve <channel> <code>
Trong nhóm, hãy yêu cầu nhắc tên để agent không trả lời mọi tin trong phòng. Cấu hình cơ sở đã siết chặt của OpenClaw dùng dmPolicy: "pairing" và groups: { "*": { requireMention: true } } cho từng kênh.
Hai lưu ý thẳng thắn. Thứ nhất: pairing quyết định ai được kích hoạt một lượt, chứ không quyết định thứ gì lọt vào ngữ cảnh của mô hình; một tin nhắn chuyển tiếp hay một trang web được tải về vẫn có thể lái một lượt do chính bạn kích hoạt. Thứ hai: công cụ của phiên chính chạy trên host cho tới khi bạn bật sandbox (agents.defaults.sandbox.mode: "non-main" cô lập mọi thứ trừ phiên chính của bạn). Sandbox tắt theo mặc định và backend mặc định của nó là Docker, nên hãy cài Docker trước khi bật: Docker trên VPS. Nếu những người bạn không tin tưởng dùng chung kênh với bot, hãy dùng một gateway riêng, tốt nhất trên một máy chủ riêng.
7. Cập nhật và sao lưu
openclaw update
openclaw gateway status
openclaw backup create --output ~/backups/openclaw --verify
~/.openclaw chứa cấu hình, thông tin đăng nhập các kênh (kể cả phiên WhatsApp), hồ sơ xác thực mô hình và bản ghi các phiên. Mất nó nghĩa là phải pairing lại mọi thứ; lộ nó nghĩa là người khác trở thành bạn trên WhatsApp. Hãy sao lưu và giữ bản sao ở ngoài máy chủ: tải về bằng scp hoặc dùng restic có mã hóa.
Danh sách kiểm tra
| Kiểm tra | Lệnh | Kết quả mong đợi |
|---|---|---|
| Gateway không chạy bằng root | ps -eo user,args | grep '[o]penclaw' | claw ở cột đầu tiên |
| Vẫn chạy sau khi đăng xuất | loginctl show-user claw -p Linger | Linger=yes |
| Chỉ lắng nghe trên loopback | ss -ltnp | grep 18789 | 127.0.0.1:18789 |
| Không có cổng công khai | ufw status | chỉ OpenSSH |
| Cấu hình không ai cũng đọc được | stat -c '%a' ~/.openclaw/openclaw.json | 600 |
| Kiểm tra sạch | openclaw security audit --deep | không có phát hiện nghiêm trọng |
EQVPS phù hợp ở đâu
Nhiều nhà cung cấp có thể chạy một tiến trình Node. Điều chúng tôi thêm vào là thanh toán bằng crypto không cần KYC, một gói NAT hợp với gateway chỉ lắng nghe trên loopback, và một máy chủ MCP mà agent của bạn có thể dùng để quản lý máy chủ của chính nó. Nếu bạn kết nối OpenClaw với nó, hãy đọc hàng rào an toàn MCP trước: một token có thể đặt mua máy chủ đáng được giữ cẩn thận như token gateway. Để có cái nhìn rộng hơn về agent trên VPS, xem hướng dẫn về AI agent.
Quan điểm của chúng tôi: 20 phút này là khác biệt giữa một trợ lý và một shell mở có giao diện chat. Dù bỏ qua phần còn lại, hãy làm ít nhất các bước 1, 4 và 5.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.