GCP
在 GCP Compute Engine VM (Docker) 上 24/7 运行 OpenClaw Gateway,具有持久化状态
目标
在 GCP Compute Engine VM 上使用 Docker 运行持久化的 OpenClaw Gateway,具有持久化状态、内置二进制文件和安全的重启行为。
如果您想要 "OpenClaw 24/7,约 $5-12/月",这是 Google Cloud 上的可靠设置。
定价因机器类型和区域而异;选择适合您工作负载的最小 VM,如果遇到 OOM 则升级。
我们要做什么(简单术语)?
- 创建 GCP 项目并启用计费
- 创建 Compute Engine VM
- 安装 Docker(隔离的应用运行时)
- 在 Docker 中启动 OpenClaw Gateway
- 在主机上持久化 ''~/.openclaw'' + ''~/.openclaw/workspace''(在重启/重建后保留)
- 通过 SSH 隧道从笔记本电脑访问控制 UI
Gateway 可以通过以下方式访问:
- 从笔记本电脑进行 SSH 端口转发
- 如果您自己管理防火墙和令牌,则直接暴露端口
本指南在 GCP Compute Engine 上使用 Debian。
Ubuntu 也可以;相应地映射软件包。
对于通用 Docker 流程,请参阅 ''Docker''。
您需要什么
- GCP 账户(e2-micro 符合免费套餐条件)
- 已安装 gcloud CLI(或使用 Cloud Console)
- 从笔记本电脑进行 SSH 访问
- 基本的 SSH + 复制/粘贴操作
- 约 20-30 分钟
- Docker 和 Docker Compose
- 模型认证凭据
- 可选的提供商凭据
- WhatsApp QR
- Telegram 机器人令牌
- Gmail OAuth
2)创建 GCP 项目
CLI:
gcloud projects create my-openclaw-project --name="OpenClaw Gateway" gcloud config set project my-openclaw-project
在 https://console.cloud.google.com/billing 启用计费(Compute Engine 必需)。
启用 Compute Engine API:
gcloud services enable compute.googleapis.com
Console:
1. 转到 IAM & Admin > 创建项目
2. 命名并创建
3. 为项目启用计费
4. 导航到 API 和服务 > 启用 API > 搜索 "Compute Engine API" > 启用
4)SSH 进入 VM
CLI:
gcloud compute ssh openclaw-gateway --zone=us-central1-a
Console:
在 Compute Engine 仪表板中点击 VM 旁边的 "SSH" 按钮。
注意:VM 创建后,SSH 密钥传播可能需要 1-2 分钟。如果连接被拒绝,请等待并重试。
6)克隆 OpenClaw 仓库
git clone https://github.com/openclaw/openclaw.git cd openclaw
本指南假设您将构建自定义镜像以确保二进制文件持久化。
8)配置环境变量
在仓库根目录中创建 ''.env''。
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
生成强密钥:
openssl rand -hex 32
不要提交此文件。
10)将所需二进制文件烘焙到镜像中(关键)
在运行中的容器内安装二进制文件是一个陷阱。
运行时安装的任何内容都会在重启时丢失。
技能所需的所有外部二进制文件必须在镜像构建时安装。
以下示例仅显示三个常见二进制文件:
- ''gog'' 用于 Gmail 访问
- ''goplaces'' 用于 Google Places
- ''wacli'' 用于 WhatsApp
这些是示例,不是完整列表。
您可以使用相同的模式安装所需的任意数量的二进制文件。
如果您稍后添加依赖于其他二进制文件的新技能,您必须:
1. 更新 Dockerfile
2. 重新构建镜像
3. 重启容器
示例 Dockerfile
FROM node:22-bookworm RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/* 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 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 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 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"]
12)验证 Gateway
docker compose logs -f openclaw-gateway
成功:
[gateway] listening on ws://0.0.0.0:18789
什么在哪里持久化(事实来源)
OpenClaw 在 Docker 中运行,但 Docker 不是事实来源。
所有长期状态必须在重启、重建和重新启动后保留。
| 组件 | 位置 | 持久化机制 | 备注 |
| Gateway 配置 | ''/home/node/.openclaw/'' | 主机卷挂载 | 包括 ''openclaw.json''、令牌 |
| 模型认证配置文件 | ''/home/node/.openclaw/'' | 主机卷挂载 | OAuth 令牌、API 密钥 |
| 技能配置 | ''/home/node/.openclaw/skills/'' | 主机卷挂载 | 技能级状态 |
| 代理工作区 | ''/home/node/.openclaw/workspace/'' | 主机卷挂载 | 代码和代理制品 |
| WhatsApp 会话 | ''/home/node/.openclaw/'' | 主机卷挂载 | 保留 QR 登录 |
| Gmail 密钥环 | ''/home/node/.openclaw/'' | 主机卷 + 密码 | 需要 ''GOG_KEYRING_PASSWORD'' |
| 外部二进制文件 | ''/usr/local/bin/'' | Docker 镜像 | 必须在构建时烘焙 |
| Node 运行时 | 容器文件系统 | Docker 镜像 | 每次镜像构建时重建 |
| 操作系统软件包 | 容器文件系统 | Docker 镜像 | 不要在运行时安装 |
| Docker 容器 | 临时 | 可重启 | 可以安全销毁 |
故障排除
SSH 连接被拒绝
VM 创建后,SSH 密钥传播可能需要 1-2 分钟。请等待并重试。
OS 登录问题
检查您的 OS 登录配置文件:
gcloud compute os-login describe-profile
确保您的帐户具有所需的 IAM 权限(Compute OS Login 或 Compute OS Admin Login)。
内存不足 (OOM)
如果使用 e2-micro 并遇到 OOM,请升级到 e2-small 或 e2-medium:
gcloud compute instances stop openclaw-gateway --zone=us-central1-a gcloud compute instances set-machine-type openclaw-gateway \ --zone=us-central1-a \ --machine-type=e2-small gcloud compute instances start openclaw-gateway --zone=us-central1-a