跳转至

EasyRunner

EasyRunner 将 OpenClaw Gateway 作为其 Caddy 代理后面的一个小型容器化应用来托管。本指南假设 EasyRunner 主机运行 Podman 兼容的 Compose 应用,并通过 Caddy 终止 HTTPS。

开始之前

  • 一台已将域名解析到它的 EasyRunner 服务器。
  • 官方 OpenClaw 镜像(ghcr.io/openclaw/openclaw)或您自己构建的镜像。
  • 用于 /home/node/.openclaw 的持久化配置卷。
  • 用于 /home/node/.openclaw/workspace 的持久化工作区卷。
  • 强 Gateway 令牌或密码。

尽可能保持设备认证开启。如果您的反向代理无法正确传递设备身份,请先修复 trusted-proxy 设置(参见 Trusted proxy auth);仅在完全私有、由操作员控制的网络上使用危险的认证绕过方式。

Compose 应用

创建一个 EasyRunner 应用,其 Compose 文件格式如下:

services:
  openclaw:
    image: ghcr.io/openclaw/openclaw:latest
    restart: unless-stopped
    environment:
      OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN}
      OPENCLAW_HOME: /home/node
      OPENCLAW_STATE_DIR: /home/node/.openclaw
      OPENCLAW_CONFIG_PATH: /home/node/.openclaw/openclaw.json
      OPENCLAW_WORKSPACE_DIR: /home/node/.openclaw/workspace
    volumes:
      - openclaw-config:/home/node/.openclaw
      - openclaw-workspace:/home/node/.openclaw/workspace
    labels:
      caddy: openclaw.example.com
      caddy.reverse_proxy: "{{upstreams 1455}}"
    command: ["node", "openclaw.mjs", "gateway", "--bind", "lan", "--port", "1455"]

volumes:
  openclaw-config:
  openclaw-workspace:

将 openclaw.example.com 替换为您的 Gateway 主机名。将 OPENCLAW_GATEWAY_TOKEN 存储在 EasyRunner 的密钥/环境管理器中,而不是将其提交到应用定义中。该镜像默认绑定到回环地址,因此 command 中的显式 --bind lan --port 1455 是 Caddy 访问容器所必需的。

配置 OpenClaw

在持久化配置卷中,保持 Gateway 仅能通过代理访问并要求认证:

{
  gateway: {
    bind: "lan",
    port: 1455,
    auth: {
      token: "${OPENCLAW_GATEWAY_TOKEN}",
    },
  },
}

如果 Caddy 为 Gateway 终止 TLS,请为确切的代理路径配置 trusted-proxy 设置,而不是全局禁用认证检查。参见 Trusted proxy auth。

验证

在您的工作站上:

openclaw gateway probe --url https://openclaw.example.com --token <token>
openclaw gateway status --url https://openclaw.example.com --token <token>

在 EasyRunner 主机上,GET /healthz(存活)和 GET /readyz(就绪)无需认证,并为镜像内置的容器健康检查提供支持。同时检查应用日志,确认 Gateway 正在监听,且没有出现启动时的 SecretRef、插件或通道认证失败。

更新与备份

  • 拉取或构建新的 OpenClaw 镜像,然后重新部署 EasyRunner 应用。
  • 在更新前备份 openclaw-config 卷。其中包含 openclaw.json、state/openclaw.sqlite 中的共享认证、agents/<agentId>/agent/openclaw-agent.sqlite 中的代理本地配置文件,以及已安装的插件包状态。
  • 如果代理会在 openclaw-workspace 中写入持久化的项目数据,请备份该卷。
  • 重大更新后运行 openclaw doctor,以捕获配置迁移和服务警告。

故障排查

  • gateway probe 无法连接:确认 Caddy 主机名指向该应用,并且容器在 0.0.0.0:1455 上监听。
  • 认证失败:同时轮换 EasyRunner 密钥中的令牌和本地客户端命令中的令牌。
  • 恢复后文件归 root 所有:镜像以 node(uid 1000)身份运行;修复挂载的卷,使该用户能够写入 /home/node/.openclaw 和 /home/node/.openclaw/workspace。
  • 浏览器或通道插件失败:检查容器内是否具备所需的外部二进制文件、网络出口和挂载的凭据。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw