部署与安全
OpenClaw 设计为自托管运行,以下是从本地到生产的部署思路和安全配置要点。
部署方式
本地前台运行
适合开发调试和快速测试。Gateway 日志直接输出到终端。
openclaw gateway --port 18789后台服务(推荐)
使用 openclaw onboard --install-daemon 安装为系统服务(macOS 用 launchd,Linux 用 systemd),支持开机自启和自动重启。适合 24/7 场景。
# 安装服务
openclaw onboard --install-daemon
# 检查状态
openclaw gateway status远程访问
推荐使用 Tailscale 或 SSH 隧道从外部安全访问 Gateway。
SSH 隧道
ssh -N -L 18789:127.0.0.1:18789 user@hostDocker 沙箱
OpenClaw 可将 Agent 的工具执行放入 Docker 容器中,隔离文件系统和进程访问。Gateway 本身运行在宿主机。
openclaw.json 沙箱配置
{
agents: {
defaults: {
sandbox: {
mode: "non-main", // off | non-main | all
scope: "session", // session | agent | shared
workspaceAccess: "none", // none | ro | rw
},
},
},
}访问控制
| 机制 | 说明 | 配置 |
|---|---|---|
| DM 策略 | 控制谁可以给 Bot 发私信 | dmPolicy: pairing / allowlist / open / disabled |
| allowFrom | 白名单限制允许的发送者 | channels.whatsapp.allowFrom: ["+86..."] |
| Pairing | 新设备需配对审批,Gateway 签发设备令牌 | dmPolicy: "pairing"(默认) |
| Gateway Token | WebSocket 连接需提供令牌 | gateway.auth.token 或 OPENCLAW_GATEWAY_TOKEN |
| Tool 策略 | 控制 Agent 可使用的工具 | agents.list[].tools.allow / deny |
安全实践
API Key 管理
存储在 ~/.openclaw/.env 或环境变量中,不要硬编码到配置文件或提交到代码仓库。服务模式下推荐使用 .env 文件。
最小权限 allowFrom
始终为 WhatsApp 等渠道设置 allowFrom 限制可发消息的号码。群聊设置 requireMention 避免误触发。
沙箱隔离
对不可信输入和高风险工具使用 Docker 沙箱。沙箱默认无网络,容器内工具执行不影响宿主机文件系统。
工具策略
通过 tools.allow/deny 限制 Agent 可用工具。只读场景不应开放 exec 权限。elevated 模式仅限授权发送者。
Skill 审查
第三方 Skill 应视为不受信代码,安装前请阅读 SKILL.md 内容。Skill 门控可限制加载条件。
远程访问
生产环境推荐 Tailscale 或 SSH 隧道,不要将 Gateway 端口直接暴露到公网。
环境变量
以自定义路径或服务帐号运行时可能用到:
| 变量 | 说明 |
|---|---|
| OPENCLAW_HOME | 设置 Home 目录,用于内部路径解析 |
| OPENCLAW_STATE_DIR | 覆盖状态目录(默认 ~/.openclaw) |
| OPENCLAW_CONFIG_PATH | 覆盖配置文件路径 |
风险提示
- 过度授权 — 只需读取文件的 Agent 不应拥有 exec 权限,使用 tools.deny 限制
- Prompt 注入 — 处理 Webhook 或不可信输入时,使用沙箱隔离 + 强模型 + 严格工具策略
- Token 超支 — 长时间运行的会话注意 compaction 配置,避免无限循环推理
- 数据泄露 — 限制 Agent 可访问的文件范围(workspaceAccess),审查 Skill 输出