OpenClaw trên GCP Compute Engine (Docker, Hướng dẫn Production VPS)
Mục tiêu
Chạy OpenClaw Gateway bền vững trên GCP Compute Engine VM bằng Docker, với dữ liệu lưu trữ lâu dài, binaries được tích hợp sẵn và hành vi khởi động lại an toàn.
Nếu các bạn muốn “OpenClaw chạy 24/7 với chi phí khoảng $5-12/tháng”, đây là cách setup đáng tin cậy trên Google Cloud. Giá cả thay đổi tùy loại máy và khu vực; các bạn chọn VM nhỏ nhất phù hợp với khối lượng công việc và nâng cấp nếu gặp tình trạng hết RAM.
Mình sẽ làm gì (giải thích đơn giản)?
- Tạo GCP project và bật billing
- Tạo Compute Engine VM
- Cài Docker (môi trường chạy ứng dụng độc lập)
- Khởi động OpenClaw Gateway trong Docker
- Lưu trữ
~/.openclaw+~/.openclaw/workspacetrên host (tồn tại qua các lần restart/rebuild) - Truy cập Control UI từ laptop của các bạn qua SSH tunnel
Gateway có thể được truy cập qua:
- SSH port forwarding từ laptop của các bạn
- Mở port trực tiếp nếu các bạn tự quản lý firewall và tokens
Hướng dẫn này sử dụng Debian trên GCP Compute Engine. Ubuntu cũng hoạt động tốt; các bạn điều chỉnh packages tương ứng. Để xem quy trình Docker tổng quát, xem Docker.
Các bước nhanh (dành cho người có kinh nghiệm)
- Tạo GCP project + bật Compute Engine API
- Tạo Compute Engine VM (e2-small, Debian 12, 20GB)
- SSH vào VM
- Cài Docker
- Clone OpenClaw repository
- Tạo thư mục lưu trữ bền vững trên host
- Cấu hình
.envvàdocker-compose.yml - Tích hợp binaries cần thiết, build và khởi chạy
Các bạn cần chuẩn bị gì
- Tài khoản GCP (e2-micro đủ điều kiện dùng free tier)
- gcloud CLI đã cài đặt (hoặc dùng Cloud Console)
- Truy cập SSH từ laptop
- Biết cơ bản về SSH + copy/paste
- Khoảng 20-30 phút
- Docker và Docker Compose
- Thông tin xác thực model
- Thông tin xác thực provider tùy chọn
- WhatsApp QR
- Telegram bot token
- Gmail OAuth
1) Cài gcloud CLI (hoặc dùng Console)
Tùy chọn A: gcloud CLI (khuyên dùng cho tự động hóa)
Cài đặt từ https://cloud.google.com/sdk/docs/install
Khởi tạo và xác thực:
gcloud init
gcloud auth login
Tùy chọn B: Cloud Console
Tất cả các bước có thể thực hiện qua giao diện web tại https://console.cloud.google.com
2) Tạo GCP project
CLI:
gcloud projects create my-openclaw-project --name="OpenClaw Gateway"
gcloud config set project my-openclaw-project
Bật billing tại https://console.cloud.google.com/billing (bắt buộc cho Compute Engine).
Bật Compute Engine API:
gcloud services enable compute.googleapis.com
Console:
- Vào IAM & Admin > Create Project
- Đặt tên và tạo
- Bật billing cho project
- Vào APIs & Services > Enable APIs > tìm “Compute Engine API” > Enable
3) Tạo VM
Các loại máy:
| Loại | Cấu hình | Chi phí | Ghi chú |
|---|---|---|---|
| e2-small | 2 vCPU, 2GB RAM | ~$12/tháng | Khuyên dùng |
| e2-micro | 2 vCPU (shared), 1GB RAM | Đủ điều kiện miễn phí | Có thể hết RAM khi tải cao |
CLI:
gcloud compute instances create openclaw-gateway \
--zone=us-central1-a \
--machine-type=e2-small \
--boot-disk-size=20GB \
--image-family=debian-12 \
--image-project=debian-cloud
Console:
- Vào Compute Engine > VM instances > Create instance
- Name:
openclaw-gateway - Region:
us-central1, Zone:us-central1-a - Machine type:
e2-small - Boot disk: Debian 12, 20GB
- Create
4) SSH vào VM
CLI:
gcloud compute ssh openclaw-gateway --zone=us-central1-a
Console:
Click nút “SSH” bên cạnh VM của các bạn trong Compute Engine dashboard.
Lưu ý: SSH key propagation có thể mất 1-2 phút sau khi tạo VM. Nếu kết nối bị từ chối, đợi và thử lại.
5) Cài Docker (trên VM)
sudo apt-get update
sudo apt-get install -y git curl ca-certificates
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
Đăng xuất và đăng nhập lại để thay đổi group có hiệu lực:
exit
Sau đó SSH lại vào:
gcloud compute ssh openclaw-gateway --zone=us-central1-a
Kiểm tra:
docker --version
docker compose version
6) Clone OpenClaw repository
git clone https://github.com/openclaw/openclaw.git
cd openclaw
Hướng dẫn này giả định các bạn sẽ build custom image để đảm bảo binary persistence.
7) Tạo thư mục lưu trữ bền vững trên host
Docker containers là tạm thời. Tất cả dữ liệu lâu dài phải được lưu trên host.
mkdir -p ~/.openclaw
mkdir -p ~/.openclaw/workspace
8) Cấu hình biến môi trường
Tạo file .env trong thư mục gốc của repository.
OPENCLAW_IMAGE=openclaw:latest
OPENCLAW_GATEWAY_TOKEN=change-me-now
OPENCLAW_GATEWAY_BIND=lan
OPENCLAW_GATEWAY_PORT=18789
OPENCLAW_CONFIG_DIR=/home/$USER/.openclaw
OPENCLAW_WORKSPACE_DIR=/home/$USER/.openclaw/workspace
GOG_KEYRING_PASSWORD=change-me-now
XDG_CONFIG_HOME=/home/node/.openclaw
Tạo secrets mạnh:
openssl rand -hex 32
Không commit file này.
9) Cấu hình Docker Compose
Tạo hoặc cập nhật docker-compose.yml.
services:
openclaw-gateway:
image: ${OPENCLAW_IMAGE}
build: .
restart: unless-stopped
env_file:
- .env
environment:
- HOME=/home/node
- NODE_ENV=production
- TERM=xterm-256color
- OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND}
- OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT}
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
- GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}
- XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
- PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
volumes:
- ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
- ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
ports:
# Khuyên dùng: giữ Gateway chỉ ở loopback trên VM; truy cập qua SSH tunnel.
# Để mở ra công khai, xóa prefix `127.0.0.1:` và cấu hình firewall phù hợp.
- "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"
# Tùy chọn: chỉ khi các bạn chạy iOS/Android nodes với VM này và cần Canvas host.
# Nếu mở ra công khai, đọc /gateway/security và cấu hình firewall phù hợp.
# - "18793:18793"
command:
[
"node",
"dist/index.js",
"gateway",
"--bind",
"${OPENCLAW_GATEWAY_BIND}",
"--port",
"${OPENCLAW_GATEWAY_PORT}",
]
10) Tích hợp binaries cần thiết vào image (quan trọng)
Cài binaries bên trong container đang chạy là một cái bẫy. Bất cứ thứ gì được cài ở runtime sẽ bị mất khi restart.
Tất cả binaries bên ngoài mà skills cần phải được cài ở thời điểm build image.
Các ví dụ dưới đây chỉ hiển thị ba binaries phổ biến:
gogcho truy cập Gmailgoplacescho Google Placeswaclicho WhatsApp
Đây chỉ là ví dụ, không phải danh sách đầy đủ. Các bạn có thể cài nhiều binaries tùy thích theo cùng một pattern.
Nếu các bạn thêm skills mới sau này cần thêm binaries, các bạn phải:
- Cập nhật Dockerfile
- Rebuild image
- Restart containers
Ví dụ Dockerfile
FROM node:22-bookworm
RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*
# Ví dụ binary 1: Gmail CLI
RUN curl -L https://github.com/steipete/gog/releases/latest/download/gog_Linux_x86_64.tar.gz \
| tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/gog
# Ví dụ binary 2: Google Places CLI
RUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_Linux_x86_64.tar.gz \
| tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/goplaces
# Ví dụ binary 3: WhatsApp CLI
RUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli_Linux_x86_64.tar.gz \
| tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/wacli
# Thêm binaries khác bên dưới theo cùng pattern
WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY ui/package.json ./ui/package.json
COPY scripts ./scripts
RUN corepack enable
RUN pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
RUN pnpm ui:install
RUN pnpm ui:build
ENV NODE_ENV=production
CMD ["node","dist/index.js"]
11) Build và khởi chạy
docker compose build
docker compose up -d openclaw-gateway
Kiểm tra binaries:
docker compose exec openclaw-gateway which gog
docker compose exec openclaw-gateway which goplaces
docker compose exec openclaw-gateway which wacli
Kết quả mong đợi:
/usr/local/bin/gog
/usr/local/bin/goplaces
/usr/local/bin/wacli
12) Kiểm tra Gateway
docker compose logs -f openclaw-gateway
Thành công:
[gateway] listening on ws://0.0.0.0:18789
13) Truy cập từ laptop
Tạo SSH tunnel để forward Gateway port:
gcloud compute ssh openclaw-gateway --zone=us-central1-a -- -L 18789:127.0.0.1:18789
Mở trong trình duyệt:
http://127.0.0.1:18789/
Dán gateway token của các bạn vào.
Dữ liệu được lưu ở đâu (nguồn chân lý)
OpenClaw chạy trong Docker, nhưng Docker không phải nguồn chân lý. Tất cả dữ liệu lâu dài phải tồn tại qua các lần restart, rebuild và reboot.
| Thành phần | Vị trí | Cơ chế lưu trữ | Ghi chú |
|---|---|---|---|
| Gateway config | /home/node/.openclaw/ | Host volume mount | Bao gồm openclaw.json, tokens |
| Model auth profiles | /home/node/.openclaw/ | Host volume mount | OAuth tokens, API keys |
| Skill configs | /home/node/.openclaw/skills/ | Host volume mount | Trạng thái cấp độ skill |
| Agent workspace | /home/node/.openclaw/workspace/ | Host volume mount | Code và artifacts của agent |
| WhatsApp session | /home/node/.openclaw/ | Host volume mount | Giữ đăng nhập QR |
| Gmail keyring | /home/node/.openclaw/ | Host volume + password | Cần GOG_KEYRING_PASSWORD |
| External binaries | /usr/local/bin/ | Docker image | Phải được tích hợp lúc build |
| Node runtime | Container filesystem | Docker image | Rebuild mỗi lần build image |
| OS packages | Container filesystem | Docker image | Không cài ở runtime |
| Docker container | Ephemeral | Restartable | An toàn khi xóa |
Cập nhật
Để cập nhật OpenClaw trên VM:
cd ~/openclaw
git pull
docker compose build
docker compose up -d
Troubleshooting
SSH connection refused
SSH key propagation có thể mất 1-2 phút sau khi tạo VM. Đợi và thử lại.
Vấn đề OS Login
Kiểm tra OS Login profile của các bạn:
gcloud compute os-login describe-profile
Đảm bảo tài khoản của các bạn có quyền IAM cần thiết (Compute OS Login hoặc Compute OS Admin Login).
Hết bộ nhớ (OOM)
Nếu dùng e2-micro và gặp OOM, nâng cấp lên e2-small hoặc e2-medium:
# Dừng VM trước
gcloud compute instances stop openclaw-gateway --zone=us-central1-a
# Đổi loại máy
gcloud compute instances set-machine-type openclaw-gateway \
--zone=us-central1-a \
--machine-type=e2-small
# Khởi động VM
gcloud compute instances start openclaw-gateway --zone=us-central1-a
Service accounts (best practice về bảo mật)
Để sử dụng cá nhân, tài khoản user mặc định của các bạn hoạt động tốt.
Để tự động hóa hoặc CI/CD pipelines, tạo service account riêng với quyền tối thiểu:
-
Tạo service account:
gcloud iam service-accounts create openclaw-deploy \ --display-name="OpenClaw Deployment" -
Cấp role Compute Instance Admin (hoặc custom role hẹp hơn):
gcloud projects add-iam-policy-binding my-openclaw-project \ --member="serviceAccount:[email protected]" \ --role="roles/compute.instanceAdmin.v1"
Tránh dùng role Owner cho tự động hóa. Sử dụng nguyên tắc quyền tối thiểu.
Xem https://cloud.google.com/iam/docs/understanding-roles để biết chi tiết về IAM roles.
Các bước tiếp theo
- Thiết lập messaging channels: Channels
- Ghép nối thiết bị local làm nodes: Nodes
- Cấu hình Gateway: Gateway configuration