
将OpenClaw的安全性与易用性相结合!开箱即可运行基于Docker的安全沙箱化OpenClaw,支持本地或云环境部署。
运行安全的沙箱化预配置OpenClaw从未如此简单:
.env中写入配置变量npm starthttp://localhost:18789/目标受众:具备基本Docker知识的安全意识开发者。其他用户:请勿使用OpenClaw!
主要安全机制是严格隔离:AI运行在专用沙箱容器中,仅包含其工具和工作区——无主机秘密、无生产数据、无无关资源。
no-new-privileges、pids_limit: 256防止权限提升和fork炸弹networks.<network>.driver_opts.encrypted: "true",或添加服务网格)注意:如果网络既未隔离也未加密,代理可能在共享或未加密网络上嗅探秘密。因此网络隔离至关重要,生产环境强烈建议加密。
/var/secrets/secret-name,然后作为环境变量SECRET_NAME导出到OpenClaw。docker:dind),代理可在隔离环境中运行docker,与主机Docker隔离。注意代理可获取该隔离容器的root权限,但仅在隔离容器内。发生突破时重启容器即可恢复,无数据风险。tools.fs.workspaceOnly: true)——文件工具限制在沙箱工作区。workspaceOnly设置限制OpenClaw的文件工具到工作区。但exec/shell命令仍可读取容器系统文件(如/etc/passwd、/proc)。这是可接受的,因为沙箱是隔离容器——其中无主机秘密。loopDetection)——防止工具/代理循环的断路器。主要用于防止令牌过度消耗。strictHostKeyChecking: false在Docker管理DNS的受控内部Docker网络中可接受。生产环境强化可考虑固定主机密钥。
plantuml@startuml architecture actor User as user cloud docker { node "mwaeckerlin/openclaw:gateway" as gw { [Gateway] as ctrl storage "openclaw-config" as cfg ctrl - cfg } node "mwaeckerlin/openclaw-mcp-gateway" { [MCP OpenClaw Server] as mcp } node "mwaeckerlin/openclaw:sandbox" as sb { [Sandbox] as sshd storage "openclaw-workspace" as ws sshd -right- ws } node "openclaw-dind" as dind { [Docker] as dd storage "openclaw-docker" as dv dd -left- dv } node "mwaeckerlin/mcp-github" { [Github-Gateway] as gh } component "allow-write-access" as aw } user --> ctrl : "HTTP" ctrl --> sshd : "SSH" sshd --up--> mcp : openclaw\ncommands mcp --up--> ctrl : forward\ncommands sshd -left-> dd : docker aw .up.> cfg : chown sshd --> gh gh ----> [GitHib] @enduml
使用docker compose和.env文件进行本地测试。
最简单的用法是使用OpenAI令牌并存储在OPENAI_API_KEY中。其他秘密可随机生成:
bashssh-keygen -t ed25519 -f openclaw-key -N "" -C "openclaw-sandbox" cat > .env <<EOF OPENCLAW_GATEWAY_TOKEN=$(pwgen 40 1) OPENCLAW_SANDBOX_SSH_PUBLIC_KEY=$(cat openclaw-key.pub) OPENCLAW_SANDBOX_SSH_PRIVATE_KEY=$(sed -z 's/\n/\\n/g' openclaw-key) OPENAI_API_KEY=sk-...[在此处放置令牌] EOF rm openclaw-key openclaw-key.pub
如果使用MCP网关(默认启用),生成设备密钥对以实现安全的网关到MCP通信:
bashnode generate-device-pairing.mjs
这会将OPENCLAW_DEVICE_IDENTITY和OPENCLAW_DEVICE_PAIRING追加到.env。MCP网关使用私钥进行身份验证,OpenClaw网关预注册公钥,使设备在首次连接时受信任。
使用--stdout可打印值而非写入.env。
前台运行(实时查看日志):
bashnpm start
后台运行(守护进程模式):
bashnpm run start:daemon
控制UI:http://localhost:18789/
仅用于本地/可信网络。网关令牌未加密传输。不要在没有TLS反向代理的情况下将端口***暴露到互联网。
网关入口点遍历/run/secrets/中的所有文件,并将每个文件导出为环境变量。文件名转换为大写,破折号替换为下划线,例如:
| 环境变量 | 秘密名称 | 备选秘密名称 |
|---|---|---|
OPENAI_API_KEY | openai_api_key | openai-api-key |
OPENCLAW_SANDBOX_SSH_PRIVATE_KEY | openclaw_sandbox_ssh_private_key | openclaw-sandbox-ssh-private-key |
| … | … | … |
沙箱直接从/run/secrets/openai_api_key或备选的/run/secrets/openai-api-key读取公钥(当OPENAI_API_KEY未设置时,-和_可互换)。
这意味着任何Docker Secret自动作为环境变量可用——无需显式映射。秘密优先级高于环境变量。
| 变量 | 是否必填 | 描述 |
|---|---|---|
OPENCLAW_GATEWAY_TOKEN | 是 | 控制UI的共享秘密 |
OPENCLAW_SANDBOX_SSH_PUBLIC_KEY | 是 | 沙箱访问的SSH公钥(ed25519) |
OPENCLAW_SANDBOX_SSH_PRIVATE_KEY | 是 | SSH私钥,\n编码(网关→沙箱) |
| 变量 | 是否必填 | 描述 |
|---|---|---|
OPENAI_API_KEY | 否 | OpenAI API密钥;启用OpenAI提供程序、Whisper音频转录,如未设置LITELLM_MASTER_KEY则用作默认模型提供程序 |
OPENCLAW_WHISPER_API_KEY | 否 | Whisper API密钥覆盖;如未设置且OPENAI_API_KEY已设置,则从OPENAI_API_KEY派生 |
OVERWRITE_CONFIG | 否 | 如设置,每次启动时用内置默认值覆盖openclaw.json |
OPENCLAW_CONFIG_DIR | 否 | 配置的主机路径(默认:Docker卷) |
OPENCLAW_STATE_DIR | 否 | 网关容器内的OpenClaw状态目录路径(默认:~/.openclaw) |
OPENCLAW_GATEWAY_PORT | 否 | 网关端口(默认:***) |
OPENCLAW_ELEVENLABS_API_KEY | — | ElevenLabs API密钥;启用ElevenLabs TTS(否则使用Microsoft TTS) |
OPENCLAW_NOTION_API_KEY | — | Notion API密钥;启用Notion技能 |
OPENCLAW_GITHUB_TOKEN | — | GitHub个人访问令牌;通过ACPX启用GitHub MCP服务器(令牌保留在网关端,沙箱仅可见MCP工具) |
OPENCLAW_GITEA_HOST | — | ACPX MCP服务器设置的Gitea主机URL |
OPENCLAW_GITEA_TOKEN | — | Gitea个人访问令牌;通过ACPX启用Gitea MCP服务器 |
OPENCLAW_GITEA_INSECURE | — | 可选Gitea MCP设置(GITEA_INSECURE) |
OPENCLAW_TRELLO_API_KEY | — | Trello API密钥;启用Trello技能 |
OPENCLAW_TELEGRAM_BOT_TOKEN | — | 机器人令牌;启用通道 |
OPENCLAW_DISCORD_BOT_TOKEN | — | 机器人令牌;启用通道 |
OPENCLAW_SLACK_BOT_TOKEN | — | Slack机器人令牌;启用Slack通道 |
OPENCLAW_SLACK_APP_TOKEN | — | Slack套接字模式应用令牌(channels.slack.appToken) |
OPENCLAW_BRAVE_API_KEY | — | Brave搜索API密钥;启用Brave插件(否则使用DuckDuckGo) |
OPENCLAW_GOOGLECHAT_SERVICE_ACCOUNT_JSON | — | Google Chat服务账户JSON;启用Google Chat通道 |
OPENCLAW_GOOGLECHAT_SERVICE_ACCOUNT_FILE | — | Google Chat服务账户文件路径 |
OPENCLAW_MATTERMOST_BOT_TOKEN | — | Mattermost机器人令牌;启用Mattermost通道 |
OPENCLAW_MATTERMOST_BASE_URL | — | Mattermost基础URL |
OPENCLAW_MATRIX_HOMESERVER | — | Matrix homeserver URL |
OPENCLAW_MATRIX_ACCESS_TOKEN | — | Matrix访问令牌;启用Matrix通道 |
OPENCLAW_MSTEAMS_APP_ID | — | Microsoft Teams应用ID |
OPENCLAW_MSTEAMS_APP_PASSWORD | — | Microsoft Teams应用密码 |
OPENCLAW_MSTEAMS_TENANT_ID | — | Microsoft Teams租户ID |
OPENCLAW_BLUEBUBBLES_SERVER_URL | — | BlueBubbles服务器URL |
OPENCLAW_BLUEBUBBLES_PASSWORD | — | BlueBubbles密码 |
OPENCLAW_IRC_NICKSERV_PASSWORD | — | IRC NickServ密码 |
当设置LITELLM_MASTER_KEY时,LiteLLM启用为模型提供程序,默认模型切换为litellm/openrouter/anthropic/claude-sonnet-4。未设置时,直接使用OpenAI,默认模型为openai/gpt-4o。
| 变量 | 默认值 | 描述 |
|---|---|---|
LITELLM_MASTER_KEY | — | LiteLLM API认证的Bearer令牌;启用LiteLLM提供程序 |
LITELLM_URL | — | LiteLLM代理的基础URL,用于模型发现 |
LITELLM_BASE_URL | http://litellm:4000 | 连接到LiteLLM的基础URL |
配置后,模型列表从提供程序动态发现:
LITELLM_URL/v1/models → models.providers.litellm.models${OPENCLAW_OPENAI_BASE_URL:-https://api.openai.com/v1}/models → models.providers.openai.models(除非显式设置OPENCLAW_OPENAI_MODELS_JSON)| 变量 | 默认值 | 描述 |
|---|---|---|
OPENCLAW_PRIMARY_MODEL | (自动) | 默认LLM模型;如配置LiteLLM则自动选择litellm/openrouter/anthropic/claude-sonnet-4,否则为openai/gpt-4o |
OPENCLAW_HEARTBEAT_INTERVAL | 0s | 代理心跳持续时间(如30m、2h,0s=禁用) |
OPENCLAW_TIMEOUT_SECONDS | 300 | 代理执行超时(秒) |
OPENCLAW_MAX_CONCURRENT | 5 | 最大并发代理数 |
OPENCLAW_CRON_ENABLED | true | 启用定时任务调度支持 |
OPENCLAW_BASE_PATH | (空) | 控制UI的基础路径(如反向代理后的/openclaw) |
OPENCLAW_AGENT_SCOPE | agent | 代理会话的沙箱范围;允许值:session、agent、shared |
OPENCLAW_DM_SCOPE | main | 会话路由的DM范围;允许值:main、per-peer、per-channel-peer、per-account-channel-peer |
OPENCLAW_SESSION_VISIBILITY | agent | 工具的会话可见性;允许值:agent、global |
OPENCLAW_SESSION_TOOLS_VISIBILITY | all | 沙箱会话中可见的工具;允许值:all、none |
| 变量 | 默认值 | 描述 |
|---|---|---|
OPENCLAW_PLUGINS_JSON | — | 完整的plugins部分JSON |
OPENCLAW_PLUGIN_ENTRIES_JSON | — | 合并到生成配置中的额外plugins.entries对象 |
PLUGINS | — | 传递给openclaw plugins install的手动安装规范 |
示例:
bashOPENCLAW_PLUGIN_ENTRIES_JSON='{"matrix":{"enabled":true,"config":{"homeserver":"[***]","accessToken":"${OPENCLAW_MATRIX_ACCESS_TOKEN}"}}}' PLUG
以下是 mwaeckerlin/openclaw 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务