Render
使用仓库中的 render.yaml Blueprint 在 Render 上部署 OpenClaw。该 Blueprint 在一个文件中声明了服务、磁盘和环境变量。
前提条件¶
部署¶
这会根据 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。
自定义域名¶
- Dashboard → 你的服务 → Settings → Custom Domains
- 添加你的域名
- 按说明配置 DNS(CNAME 指向
*.onrender.com) - Render 会自动配置 TLS 证书
扩展¶
- 垂直扩展:更改套餐以获得更多 CPU/RAM。通常已足够 OpenClaw 使用。
- 水平扩展:增加实例数量(Standard 及以上套餐)。需要粘性会话(sticky sessions)或外部状态管理,因为 OpenClaw 将运行时状态保存在本地磁盘上。
备份与迁移¶
随时可以通过 Render Dashboard shell 导出状态、配置、认证档案和工作区:
恢复操作会验证并解压到一个全新的暂存目录;激活是一个单独的离线步骤。有关回滚警告和激活顺序,请参阅恢复完整归档。
故障排查¶
服务无法启动¶
请检查 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。
后续步骤¶
- 设置消息渠道:渠道
- 配置 Gateway:Gateway 配置
- 让 OpenClaw 保持最新:更新
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw