Files
ccdi/docs/superpowers/specs/2026-03-26-openclaw-privileged-mode-design.md

2.5 KiB

OpenClaw 特权模式设计

日期: 2026-03-26

目标

为运行在 116.62.17.81 上的 OpenClaw Docker 容器开启特权模式,并尽量保证应用重启或基于模板重生成编排后仍保留该配置。

现状

  • 实际运行容器为 openclaw-gateway-1
  • 容器由应用包 Compose 管理,而非当前仓库部署脚本管理
  • 运行编排文件位于 /volume1/@appstore/com.ugreen.docker.openclaw/docker-compose.yaml
  • 模板文件位于 /volume1/@appstore/com.ugreen.docker.openclaw/docker-compose.tmpl
  • 当前 docker inspect 显示 HostConfig.Privileged=false

方案对比

方案一:仅修改运行中的 Compose 文件

只修改 docker-compose.yaml 并重建容器。

  • 优点:生效最快
  • 缺点:若应用按模板重新生成编排,配置容易丢失

方案二:同时修改 Compose 文件与模板

同时修改 docker-compose.yamldocker-compose.tmpl,在 gateway 服务下新增 privileged: true

  • 优点:当前容器立刻生效,后续应用重启或重新生成编排时也更可能保留
  • 缺点:若后续官方升级直接覆盖整个应用包目录,仍可能被重置

方案三:脱离 Compose 手工重建容器

绕过应用包编排,直接手工 docker run --privileged 或其他方式重建容器。

  • 优点:理论上可实现
  • 缺点:容易与现有应用包管理冲突,不符合最短路径

最终方案

采用方案二。

变更范围

只修改以下两个服务器文件:

  • /volume1/@appstore/com.ugreen.docker.openclaw/docker-compose.yaml
  • /volume1/@appstore/com.ugreen.docker.openclaw/docker-compose.tmpl

改动内容保持最小化,仅在 services.gateway 下增加:

privileged: true

不调整挂载、网络模式、环境变量或业务配置。

实施步骤

  1. 备份当前 Compose 文件与模板文件
  2. 在两个文件的 gateway 服务下增加 privileged: true
  3. 使用该 Compose 文件重建 openclaw-gateway-1
  4. 使用 docker inspect 校验 Privileged=true
  5. 再次读取模板文件,确认持久化来源也已同步更新

验证标准

  • docker inspect openclaw-gateway-1 显示 HostConfig.Privileged=true
  • docker-compose.yamlprivileged: true
  • docker-compose.tmplprivileged: true

风险说明

本方案已覆盖当前运行编排和当前模板,但若厂商升级时整体覆盖 /volume1/@appstore/com.ugreen.docker.openclaw/,特权配置仍可能被官方包重置。