# 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/`，特权配置仍可能被官方包重置。
