跳转至

Render

使用仓库中的 render.yaml Blueprint 在 Render 上部署 OpenClaw。该 Blueprint 在一个文件中声明了服务、磁盘和环境变量。

前提条件

部署

部署到 Render

这会根据 render.yaml 创建一个 Render 服务,构建 Docker 镜像,并完成部署。你的服务 URL 形如 https://<service-name>.onrender.com。

Blueprint

services:
  - type: web
    name: openclaw
    runtime: docker
    plan: starter
    dockerCommand: node openclaw.mjs gateway --allow-unconfigured
    healthCheckPath: /startupz
    envVars:
      - key: OPENCLAW_GATEWAY_PORT
        value: "8080"
      - key: OPENCLAW_STATE_DIR
        value: /data/.openclaw
      - key: OPENCLAW_WORKSPACE_DIR
        value: /data/workspace
      - key: OPENCLAW_GATEWAY_TOKEN
        generateValue: true # auto-generates a secure token
    disk:
      name: openclaw-data
      mountPath: /data
      sizeGB: 1
特性 用途
runtime: docker 根据仓库的 Dockerfile 构建
healthCheckPath 当 /startupz 报告启动完成后,Render 才允许流量进入
generateValue: true 自动生成加密安全的值
disk 在重新部署后依然保留的持久化存储

选择套餐

套餐 休眠 磁盘 适用场景
Free 空闲 15 分钟后 不可用 测试、演示
Starter 从不 1GB+ 个人使用、小型团队
Standard+ 从不 1GB+ 生产环境、多通道

Blueprint 默认使用 starter 套餐。要使用免费套餐,请在你 fork 的 render.yaml 中将 plan 改为 free,并删除 disk: 块;Render 会拒绝将持久化磁盘附加到免费实例的 Blueprint。如果没有该磁盘,OpenClaw 的状态将在每次部署时重置。

部署后

访问控制界面

Web 仪表盘可通过 https://<your-service>.onrender.com/ 访问。使用共享密钥连接:自动生成的 OPENCLAW_GATEWAY_TOKEN(可在 Dashboard → 你的服务 → Environment 中找到),或者如果你切换到了密码认证,也可以使用你的密码。

日志

Dashboard → 你的服务 → Logs 显示构建日志(Docker 镜像创建)、部署日志(服务启动)和运行时日志(应用输出)。

Shell 访问

Dashboard → 你的服务 → Shell 会打开一个 shell 会话。持久化磁盘挂载在 /data。

环境变量

在 Dashboard → 你的服务 → Environment 中编辑变量。更改会触发自动重新部署。

自动部署

当关联仓库的分支收到新提交时,Render 会自动重新部署。如果你是直接从 openclaw/openclaw 部署的,而不是从你自己的 fork 部署的,你将没有推送权限来触发该操作,因此可以通过在 Dashboard 中运行手动 Blueprint 同步来更新,或者将服务指向你自己的 fork。

自定义域名

  1. Dashboard → 你的服务 → Settings → Custom Domains
  2. 添加你的域名
  3. 按说明配置 DNS(CNAME 指向 *.onrender.com)
  4. Render 会自动配置 TLS 证书

扩展

  • 垂直扩展:更改套餐以获得更多 CPU/RAM。通常已足够 OpenClaw 使用。
  • 水平扩展:增加实例数量(Standard 及以上套餐)。需要粘性会话(sticky sessions)或外部状态管理,因为 OpenClaw 将运行时状态保存在本地磁盘上。

备份与迁移

随时可以通过 Render Dashboard shell 导出状态、配置、认证档案和工作区:

openclaw backup create
openclaw backup restore <archive.tar.gz> --target <fresh-directory>

恢复操作会验证并解压到一个全新的暂存目录;激活是一个单独的离线步骤。有关回滚警告和激活顺序,请参阅恢复完整归档。

故障排查

服务无法启动

请检查 Render Dashboard 中的部署日志。常见问题:

  • 缺少 OPENCLAW_GATEWAY_TOKEN — 确认它已在 Dashboard → Environment 中设置
  • 端口不匹配 — 确保 OPENCLAW_GATEWAY_PORT=8080,以便网关绑定到 Render 所期望的端口

冷启动缓慢(免费套餐)

免费套餐的服务在空闲 15 分钟后休眠;休眠后的第一个请求需要几秒钟时间,因为容器正在启动。升级到 Starter 套餐可实现始终在线(always-on)运行。

重新部署后数据丢失

这种情况发生在免费套餐上(没有持久化磁盘)。升级到付费套餐,或定期通过 Render shell 使用 openclaw backup create 导出备份。

健康检查失败

如果构建成功但部署失败,可能是服务启动时间过长,或者 /startupz 无法访问。请检查:

  • 构建日志中是否有错误
  • 容器是否能在本地使用 Render 所用的相同镜像和命令运行

从仓库检出(checkout)的代码在本地重现 Render 容器:

docker build -t openclaw:local -f Dockerfile .
docker run --rm -p 8080:8080 \
  -e OPENCLAW_GATEWAY_PORT=8080 \
  -e OPENCLAW_GATEWAY_TOKEN="$(openssl rand -hex 32)" \
  openclaw:local node openclaw.mjs gateway --allow-unconfigured

Token 是必需的,不是可选的:在容器中,Gateway 会选择自动绑定模式,如果没有共享密钥,它会拒绝绑定非回环(loopback)地址。--allow-unconfigured 免除的是配置前置要求,而不是这重防护。Render 通过 Blueprint 的 generateValue: true 提供该值;在本地使用一个临时 Token 即可。

在此处让 OPENCLAW_STATE_DIR 和 OPENCLAW_WORKSPACE_DIR 保持未设置状态。Render 会将它们设置为挂载磁盘上的路径,但镜像只准备了其自身由 node 拥有的目录,并以该用户身份运行,因此将它们指向未挂载的 /data 会导致 Gateway 创建其锁目录时失败。状态会落在镜像默认路径下,并随容器一起丢弃,这正是健康检查复现时所需要的效果。

完整的本地容器工作流程请参阅 Docker。

后续步骤

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