OpenClaw 的 AI 能力确实强大,但代价也很清楚:它需要访问你的文件、工具和 API 密钥。换句话说,安全性不是锦上添花,而是部署的前提条件。下面我们就围绕一个现成的 Docker Compose 配置,把部署步骤和安全机制拆开来看。
部署步骤
1. 克隆仓库与配置环境
先把部署配置仓库拉到本地:
git clone https://github.com/wangyucode/openclaw-docker-compose.git
cd openclaw-docker-compose
然后复制并编辑环境变量文件,填入你的 API 密钥和其他参数:
cp .env.example .env
vi .env
2. 执行初始化 (Onboarding)
启动网关前,需要先跑一次初始化命令,生成必要的配置:
docker compose run --rm openclaw-cli onboard
3. 启动 OpenClaw
一切就绪后,启动 Dcoker 容器:
docker compose up -d
关键配置解析
为什么我们看到的 docker-compose.yml 要写成那样?下面几个安全配置点才是真正值得关注的。
非 Root 用户运行
user: "1000:1000"
默认情况下,Docker 容器以 root 用户运行——一旦容器被攻破,攻击者可能直接拿到宿主机的 root 权限。通过指定 user: "1000:1000"(通常是宿主机的第一个普通用户),我们能最大限度地缩小权限范围。
禁用权限提升
security_opt:
- no-new-privileges:true
这条配置堵死了容器内进程通过 setuid 或 setgid 程序获得新权限的路径。即使攻击者在容器里找到了漏洞,也没法往上提权。
移除不必要的 Capability
cap_drop:
- ALL
Linux Capabilities 把 root 的特权切成了小颗粒。Docker 默认会保留一些常用权限,但这里直接 cap_drop: [ALL],把特权全去掉,只留最基础的运行环境。
持久化存储与权限
volumes:
- ./.openclaw:/home/node/.openclaw
把配置和工作区挂载到宿主机目录,方便备份和管理。注意宿主机目录的权限要跟 user 设置一致,比如 chown -R 1000:1000 .openclaw。
访问控制
OpenClaw 默认跑在 18789 端口。访问 Dashboard 需要 Token,获取方式很简单:
docker compose run --rm openclaw-cli dashboard --no-open
总结
用 Docker 部署 OpenClaw 不只是图环境配置方便,更关键的是借助容器化拿到了一层安全隔离。“最小权限原则”落到位后,AI 助手才能安心地为咱们干活。
