diff --git a/docs/reports/implementation/2026-03-26-openclaw-privileged-mode-implementation.md b/docs/reports/implementation/2026-03-26-openclaw-privileged-mode-implementation.md new file mode 100644 index 00000000..c8578cea --- /dev/null +++ b/docs/reports/implementation/2026-03-26-openclaw-privileged-mode-implementation.md @@ -0,0 +1,39 @@ +# OpenClaw 特权模式实施记录 + +**日期**: 2026-03-26 + +## 变更目标 + +为 `116.62.17.81` 上的 OpenClaw 容器开启 Docker 特权模式,并同步修改应用包模板,尽量保留到后续重启或重新生成编排。 + +## 计划变更点 + +- 备份 `/volume1/@appstore/com.ugreen.docker.openclaw/docker-compose.yaml` +- 备份 `/volume1/@appstore/com.ugreen.docker.openclaw/docker-compose.tmpl` +- 在两个文件的 `gateway` 服务下增加 `privileged: true` +- 重建 `openclaw-gateway-1` +- 校验 `docker inspect` 中的 `Privileged` 状态 + +## 验证方式 + +- 查看 Compose 文件内容 +- 查看模板文件内容 +- 执行 `docker inspect openclaw-gateway-1` + +## 实际实施结果 + +- 已修改 `/volume1/@appstore/com.ugreen.docker.openclaw/docker-compose.yaml` +- 已修改 `/volume1/@appstore/com.ugreen.docker.openclaw/docker-compose.tmpl` +- 两个文件均已新增 `privileged: true` +- 已生成备份: + - `docker-compose.yaml.bak.20260326094712` + - `docker-compose.tmpl.bak.20260326094712` +- 发现旧容器 `openclaw-gateway-1` 仍占用 `18799` 端口,导致新容器首次无法接管 +- 已停止旧容器,并通过应用包 Compose 重建新容器 `comugreendockeropenclaw-gateway-1` + +## 最终验证结果 + +- `comugreendockeropenclaw-gateway-1` 状态为 `Up ... (healthy)` +- `docker inspect` 显示 `Privileged=true` +- `18799` 端口监听已切换到新容器进程 +- 旧容器 `openclaw-gateway-1` 当前为 `Exited (0)` diff --git a/docs/superpowers/specs/2026-03-26-openclaw-privileged-mode-design.md b/docs/superpowers/specs/2026-03-26-openclaw-privileged-mode-design.md new file mode 100644 index 00000000..6ae6a51d --- /dev/null +++ b/docs/superpowers/specs/2026-03-26-openclaw-privileged-mode-design.md @@ -0,0 +1,75 @@ +# 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.yaml` 与 `docker-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` 下增加: + +```yaml +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.yaml` 含 `privileged: true` +- `docker-compose.tmpl` 含 `privileged: true` + +## 风险说明 + +本方案已覆盖当前运行编排和当前模板,但若厂商升级时整体覆盖 `/volume1/@appstore/com.ugreen.docker.openclaw/`,特权配置仍可能被官方包重置。