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/workspace trê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)

  1. Tạo GCP project + bật Compute Engine API
  2. Tạo Compute Engine VM (e2-small, Debian 12, 20GB)
  3. SSH vào VM
  4. Cài Docker
  5. Clone OpenClaw repository
  6. Tạo thư mục lưu trữ bền vững trên host
  7. Cấu hình .envdocker-compose.yml
  8. 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:

  1. Vào IAM & Admin > Create Project
  2. Đặt tên và tạo
  3. Bật billing cho project
  4. Vào APIs & Services > Enable APIs > tìm “Compute Engine API” > Enable

3) Tạo VM

Các loại máy:

LoạiCấu hìnhChi phíGhi chú
e2-small2 vCPU, 2GB RAM~$12/thángKhuyên dùng
e2-micro2 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:

  1. Vào Compute Engine > VM instances > Create instance
  2. Name: openclaw-gateway
  3. Region: us-central1, Zone: us-central1-a
  4. Machine type: e2-small
  5. Boot disk: Debian 12, 20GB
  6. 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:

  • gog cho truy cập Gmail
  • goplaces cho Google Places
  • wacli cho 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:

  1. Cập nhật Dockerfile
  2. Rebuild image
  3. 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ầnVị tríCơ chế lưu trữGhi chú
Gateway config/home/node/.openclaw/Host volume mountBao gồm openclaw.json, tokens
Model auth profiles/home/node/.openclaw/Host volume mountOAuth tokens, API keys
Skill configs/home/node/.openclaw/skills/Host volume mountTrạng thái cấp độ skill
Agent workspace/home/node/.openclaw/workspace/Host volume mountCode và artifacts của agent
WhatsApp session/home/node/.openclaw/Host volume mountGiữ đăng nhập QR
Gmail keyring/home/node/.openclaw/Host volume + passwordCần GOG_KEYRING_PASSWORD
External binaries/usr/local/bin/Docker imagePhải được tích hợp lúc build
Node runtimeContainer filesystemDocker imageRebuild mỗi lần build image
OS packagesContainer filesystemDocker imageKhông cài ở runtime
Docker containerEphemeralRestartableAn 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:

  1. Tạo service account:

    gcloud iam service-accounts create openclaw-deploy \
      --display-name="OpenClaw Deployment"
  2. 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