Cài OpenClaw trên VPS Ubuntu: từ đầu tới lần chạy đầu tiên

SSH vào VPS Ubuntu mới, việc đầu tiên là làm sạch hệ thống và cài ngay cài OpenClaw VPS, công cụ tự động hoá trình duyệt mạnh mẽ. Bài này mình hướng dẫn từ bước cài Node.js, Chromium headless, cho tới chạy job đầu tiên và kiểm tra log. Mọi lệnh đều chạy trên Ubuntu 24.04 LTS với user sudo, không cần Docker.
Yêu cầu trước khi bắt đầu
- VPS Ubuntu 24.04, bạn có thể mua VPS có sẵn OpenClaw hoặc cài sạch từ đầu. Nếu chưa có, thuê VPS Linux bản Ubuntu là xong.
- User sudo non-root (mình dùng user
devops). - Cổng 22 mở trên firewall (mặc định).
- Ít nhất 2 GB RAM, khuyên dùng gói VPS 2GB RAM hoặc 4GB vì Chromium headless ngốn tầm 300-500 MB mỗi tab.
- Biết dùng SSH và terminal cơ bản.
Vì sao nên dùng OpenClaw thay Selenium hay Playwright?
OpenClaw là agent trình duyệt nhẹ, chạy theo sự kiện, không cần WebDriver. Nó dùng headless Chrome và JavaScript để tương tác: click, scroll, fill form, chờ phần tử xuất hiện. Khác với Selenium (nặng, cần WebDriver), OpenClaw gọi trực tiếp qua Puppeteer, nhẹ hơn và ít phức tạp hơn khi deploy lên VPS. Nếu bạn chỉ cần chạy automation theo kịch bản (không record), đây là lựa chọn gọn hơn đối thủ.
Bước 1, Cập nhật hệ thống và cài dependency chung
SSH vào VPS và chạy ngay:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git vim htop software-properties-common gcc g++ make
Verify: htop phải chạy được. Thoát htop bằng q.
Bước 2, Cài Node.js bản LTS hiện hành
OpenClaw yêu cầu Node.js 18+. Ubuntu 24.04 đi kèm 18.x, nhưng mình nâng lên 20 LTS cho chắc:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
Verify:
node -v # output >= 20.x
npm -v # output >= 10.x
Bước 3, Cài Chromium headless cho VPS không GPU
VPS thường không có GPU, cần Chromium chạy headless. Cài bằng lệnh sau:
sudo apt install -y chromium-browser chromium-codecs-ffmpeg
Kiểm tra Chromium có chạy headless không:
chromium-browser --headless --no-sandbox --disable-gpu --dump-dom https://google.com
Output sẽ in ra DOM của trang google.com. Nếu thấy <html> và không có lỗi, bạn đã sẵn sàng.
Lưu ý: Trên VPS RAM 2GB, đừng chạy nhiều tab Chromium cùng lúc. Mỗi instance ngốn 200-400 MB. Muốn tối ưu, set --disable-dev-shm-usage và --no-zygote. Gói VPS 4GB RAM sẽ thoải mái hơn.
Bước 4, Cài OpenClaw từ npm
Tạo thư mục làm việc và cài OpenClaw global (hoặc local, tuỳ bạn):
mkdir -p ~/openclaw-project && cd ~/openclaw-project
npm init -y
npm install openclaw puppeteer
Verify bằng cách xem phiên bản:
npx openclaw --version
Nếu lệnh này không ra version, OpenClaw cần cấu hình thêm. Một số phiên bản mới yêu cầu biến môi trường OPENCLAW_HEADLESS=true để ép chạy headless. Mình set luôn:
export OPENCLAW_HEADLESS=true
export PUPPETEER_CHROMIUM_REVISION=latest
Thêm vào ~/.bashrc để không cần export lại mỗi lần SSH:
echo 'export OPENCLAW_HEADLESS=true' >> ~/.bashrc
echo 'export PUPPETEER_CHROMIUM_REVISION=latest' >> ~/.bashrc
source ~/.bashrc
Bước 5, Tạo job đầu tiên và chạy thử
Tạo file test-job.js trong thư mục project:
touch test-job.js
nano test-job.js
Dán code sau:
const { OpenClaw } = require('openclaw');
(async () => {
const bot = new OpenClaw();
await bot.init({
headless: true,
args: ['--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage']
});
const page = await bot.goto('https://httpbin.org/get');
const json = await page.json();
console.log('Response:', JSON.stringify(json, null, 2));
await bot.close();
})();
Chạy:
node test-job.js
Output kỳ vọng, in ra JSON có key "url" = https://httpbin.org/get. Nếu có lỗi cannot find module 'openclaw', chạy npm install lại.
Cơ bản là bạn đã chạy được job. Giờ hãy kiểm tra thêm một job thực tế hơn, click vào nút:
const { OpenClaw } = require('openclaw');
(async () => {
const bot = new OpenClaw();
await bot.init({
headless: true,
args: ['--no-sandbox', '--disable-gpu']
});
const page = await bot.goto('https://example.com');
await page.click('a');
const title = await page.evaluate(() => document.title);
console.log('New tab title:', title);
await bot.close();
})();
Verify output: title phải là Example Domain (sau click vào link).
Bước 6, Kiểm tra log và debug
Khi chạy job, output thường đi ra console. Để ghi log ra file, chạy:
node test-job.js > job.log 2>&1
cat job.log
Nếu có lỗi Chromium crash, xem log trong /var/log/syslog:
grep -i chromium /var/log/syslog | tail -20
Hoặc dùng journalctl nếu chạy dưới systemd, nhưng với bài này, chỉ cần log file là đủ.
Mẹo: để chạy OpenClaw dưới systemd và log tự động, bạn làm thêm service, hướng dẫn chi tiết trong bài quản lý dịch vụ với systemd.
Bảng thông số cần nhớ cho OpenClaw trên Ubuntu
| Thành phần | Giá trị / Cấu hình |
|---|---|
| Node.js | 20.x LTS (có thể 22.x nếu bạn thích) |
| Chromium | headless, --no-sandbox --disable-gpu --disable-dev-shm-usage |
| RAM khuyến nghị | tối thiểu 2 GB, 4 GB hoặc hơn nếu chạy nhiều job đồng thời |
| Biến môi trường | OPENCLAW_HEADLESS=true, PUPPETEER_CHROMIUM_REVISION=latest |
| Port mở (UFW) | Không cần mở thêm nếu chỉ chạy headless; nếu có API HTTP thì mở port tuỳ chọn |
Xử lý lỗi thường gặp khi cài OpenClaw VPS
1. Lỗi cannot find module 'openclaw'
Nguyên nhân: npm install chưa chạy trong thư mục hiện tại, hoặc chạy global mà không set NODE_PATH. Giải pháp: cd vào thư mục project và chạy npm install openclaw.
2. Lỗi Failed to launch the browser process! / Chromium crashed
Nguyên nhân: thiếu dependency cho Chromium (libgtk-3, libnotify...), hoặc sandbox bị chặn. Giải pháp: cài toàn bộ dependency bằng sudo apt install -y chromium-browser --no-install-recommends và thêm flag --no-sandbox trong code.
3. Lỗi Cannot find file khi chạy với sandbox
Nguyên nhân: Chromium mặc định dùng sandbox user namespace. VPS thường không hỗ trợ (container, KVM không cấu hình). Giải pháp: set --no-sandbox hoặc chạy Chromium với --disable-setuid-sandbox.
Để kiểm tra lỗi chính xác hơn, chạy Chromium trực tiếp: chromium-browser --headless --no-sandbox --enable-logging=stderr https://google.com và xem stderr.
Câu hỏi thường gặp
Cài OpenClaw trên VPS Ubuntu có cần cài X server không?
Không. Chromium headless chạy hoàn toàn trên CPU, không cần GPU hay X server. Lệnh --headless xử lý tất cả trên backend.
Mình có thể chạy OpenClaw trên VPS 1 GB RAM không?
Khả quan nhưng rất căng. Chromium headless ngốn ít nhất 200 MB. Hệ điều hành Ubuntu + Node.js + OpenClaw đã 700-800 MB. Swap có thể giúp nhưng chậm. Khuyên dùng VPS 2 GB RAM trở lên, gói VNLite 1 vCPU / 2 GB là điểm khởi đầu hợp lý.
OpenClaw có hỗ trợ chạy job theo lịch không?
Có thể, nhưng không built-in. Bạn kết hợp với systemd timer (xem bài liên quan) hoặc cron. Hoặc dùng n8n để orchestrate, nếu muốn mọi thứ trong một GUI.
Có cần Docker để cài OpenClaw không?
Không bắt buộc. Cài trực tiếp trên VPS như hướng dẫn là nhanh nhất. Docker có ích nếu bạn muốn tách biệt hoặc chạy nhiều phiên bản Chromium riêng.
Sao job chạy lỗi cannot find chromium?
Puppeteer mặc định tự tải Chromium. Trên VPS Ubuntu 24.04, Chromium được cài qua apt nên Puppeteer không nhận. Giải pháp: set PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser trong code hoặc export PUPPETEER_SKIP_DOWNLOAD=true rồi cài thủ công.
OpenClaw có thể bị phát hiện khi automation không?
Ở mức độ cơ bản, nó giống người dùng thật. Nhưng các site chống bot mạnh (Cloudflare, Distil) có thể phát hiện. Đây là bài viết kỹ thuật cho automation hợp pháp trên hệ thống của bạn, không hướng dẫn né phát hiện hay cào dữ liệu bên thứ ba.
Bài viết liên quan
- OpenClaw là gì và chạy trên VPS cần cấu hình bao nhiêu
- VPS cho người mới: dựng website đầu tiên trên Ubuntu 24.04
- Tự dùng AI chatbot riêng với Ollama và Open WebUI trên VPS


