OpenClaw Docker 部署教程:集成飞书钉钉 QQ 机器人
介绍 OpenClaw-Docker-CN-IM 容器的部署流程。该方案集成了飞书、钉钉、QQ 及企业微信等主流 IM 平台插件,支持通过环境变量灵活配置。内容涵盖环境准备、镜像拉取、容器启动、详细配置(含 AI 模型、Gateway、IM 凭证)及常见问题排查。适用于构建多平台 AI 机器人网关的开发者。

介绍 OpenClaw-Docker-CN-IM 容器的部署流程。该方案集成了飞书、钉钉、QQ 及企业微信等主流 IM 平台插件,支持通过环境变量灵活配置。内容涵盖环境准备、镜像拉取、容器启动、详细配置(含 AI 模型、Gateway、IM 凭证)及常见问题排查。适用于构建多平台 AI 机器人网关的开发者。

OpenClaw-Docker-CN-IM(OpenClaw 中国 IM 平台整合 Docker 版本)是一款容器化应用,旨在提供集成中国主流 IM 平台的 AI 机器人网关解决方案。该镜像预装并配置了飞书、钉钉、QQ 机器人、企业微信等插件,支持通过环境变量灵活配置,实现快速部署与数据持久化。
同时集成了 OpenCode AI 代码助手、Playwright 浏览器自动化工具及中文 TTS 语音合成功能,适用于需要构建多平台 IM 机器人的开发者与科研用户。
本指南将详细介绍其 Docker 部署流程,包括环境准备、镜像拉取、容器配置、功能测试及生产环境优化建议,帮助用户快速实现服务部署与应用。
OpenClaw 中国 IM 插件整合版 Docker 镜像,预装并配置了飞书、钉钉、QQ 机器人、企业微信等主流中国 IM 平台插件,让您可以快速部署一个支持多个中国 IM 平台的 AI 机器人网关。
官方项目地址:https://github.com/justlovemaki/OpenClaw-Docker-CN-IM
部署 OpenClaw-Docker-CN-IM 前需确保 Docker 环境已正确安装。推荐使用官方推荐的一键安装脚本(适用于 Linux 系统):
curl -fsSL https://get.docker.com | bash -s docker
安装完成后,可通过以下命令验证 Docker 是否正常运行:
docker --version # 检查 Docker 版本
docker info # 查看 Docker 系统信息
使用以下命令拉取最新版本的 OpenClaw-Docker-CN-IM 镜像:
docker pull justlikemaki/openclaw-docker-cn-im:latest
拉取完成后,可通过以下命令验证镜像是否成功下载:
docker images | grep justlikemaki/openclaw-docker-cn-im
按照以下步骤,可快速启动 OpenClaw-Docker-CN-IM 服务,无需复杂配置。
无需下载配置文件,直接复制以下完整内容,分别创建 docker-compose.yml 和 .env.example 文件(两个文件需放在同一目录下):
version: '3.8'
services:
openclaw-gateway:
container_name: openclaw-gateway
image: ${OPENCLAW_IMAGE}
cap_add:
- CHOWN
- SETUID
- SETGID
- DAC_OVERRIDE
user: ${OPENCLAW_RUN_USER:-0:0}
environment:
TZ: Asia/Shanghai
HOME: /home/node
TERM: xterm-256color
SYNC_MODEL_CONFIG: ${SYNC_MODEL_CONFIG}
MODEL_ID: ${MODEL_ID}
IMAGE_MODEL_ID: ${IMAGE_MODEL_ID}
BASE_URL: ${BASE_URL}
API_KEY: ${API_KEY}
API_PROTOCOL: ${API_PROTOCOL}
CONTEXT_WINDOW: ${CONTEXT_WINDOW}
MAX_TOKENS: ${MAX_TOKENS}
TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}
FEISHU_APP_ID: ${FEISHU_APP_ID}
FEISHU_APP_SECRET: ${FEISHU_APP_SECRET}
DINGTALK_CLIENT_ID: ${DINGTALK_CLIENT_ID}
DINGTALK_CLIENT_SECRET: ${DINGTALK_CLIENT_SECRET}
# OpenClaw Docker 环境变量配置示例
# 复制此文件为 .env 并修改相应的值
# Docker 镜像配置
OPENCLAW_IMAGE=justlikemaki/openclaw-docker-cn-im:latest
# 模型配置
SYNC_MODEL_CONFIG=true
MODEL_ID=model id
IMAGE_MODEL_ID=
BASE_URL=http://xxxxx/v1
API_KEY=123456
API_PROTOCOL=openai-completions
CONTEXT_WINDOW=200000
MAX_TOKENS=8192
# Telegram 配置(可选)
TELEGRAM_BOT_TOKEN=
# 飞书配置(可选)
FEISHU_APP_ID=
FEISHU_APP_SECRET=
# 钉钉配置(可选)
DINGTALK_CLIENT_ID=
DINGTALK_CLIENT_SECRET=
DINGTALK_ROBOT_CODE=
DINGTALK_CORP_ID=
DINGTALK_AGENT_ID=
# QQ 机器人配置(可选)
QQBOT_APP_ID=
QQBOT_CLIENT_SECRET=
# NapCat (OneBot v11) 配置(可选)
NAPCAT_REVERSE_WS_PORT=
NAPCAT_HTTP_URL=
NAPCAT_ACCESS_TOKEN=
NAPCAT_ADMINS=
# 企业微信配置(可选)
WECOM_TOKEN=
WECOM_ENCODING_AES_KEY=
WECOM_BOTS_JSON=
# 工作空间配置
WORKSPACE=/home/node/.openclaw/workspace
# 挂载目录配置
OPENCLAW_DATA_DIR=~/.openclaw
# 容器启动用户 UID:GID
OPENCLAW_RUN_USER=0:0
# Gateway 配置
OPENCLAW_GATEWAY_TOKEN=123456
OPENCLAW_GATEWAY_BIND=lan
OPENCLAW_GATEWAY_PORT=18789
OPENCLAW_BRIDGE_PORT=18790
OPENCLAW_GATEWAY_MODE=local
OPENCLAW_GATEWAY_ALLOWED_ORIGINS=http://localhost
OPENCLAW_GATEWAY_ALLOW_INSECURE_AUTH=true
OPENCLAW_GATEWAY_DANGEROUSLY_DISABLE_DEVICE_AUTH=false
# 插件全局控制
OPENCLAW_PLUGINS_ENABLED=true
复制环境变量模板并编辑,至少配置 AI 模型相关参数:
cp .env.example .env
nano .env
| 环境变量 | 说明 | 示例值 |
|---|---|---|
| MODEL_ID | AI 模型名称 | gpt-4 |
| BASE_URL | AI 服务 API 地址 | https://api.openai.com/v1 |
| API_KEY | AI 服务 API 密钥 | sk-xxx… |
| OPENCLAW_IMAGE | 镜像地址 | justlikemaki/openclaw-docker-cn-im:latest |
提示:IM 平台配置为可选项,可以先启动服务,后续再配置需要的平台。
docker-compose up -d
docker-compose logs -f
docker-compose down
本项目支持 OpenAI 协议和 Claude 协议两种 API 格式。
推荐模型:推荐使用 gemini-3-flash-preview 模型,该模型具有超大上下文窗口(1M tokens)、快速响应速度和优秀的性价比。
| 参数 | 说明 | 默认值 |
|---|---|---|
| MODEL_ID | 模型名称 | model id |
| BASE_URL | Provider Base URL | http://xxxxx/v1 |
| API_KEY | Provider API Key | 123456 |
| API_PROTOCOL | API 协议类型 | openai-completions |
| CONTEXT_WINDOW | 模型上下文窗口大小 | 200000 |
| MAX_TOKENS | 模型最大输出 tokens | 8192 |
| 协议类型 | 适用模型 | Base URL 格式 | 特殊特性 |
|---|---|---|---|
| openai-completions | OpenAI、Gemini 等 | 需要 /v1 后缀 | - |
| anthropic-messages | Claude | 不需要 /v1 后缀 | Prompt Caching、Extended Thinking |
MODEL_ID=gemini-3-flash-preview
BASE_URL=http://localhost:3000/v1
API_KEY=your-api-key
API_PROTOCOL=openai-completions
CONTEXT_WINDOW=1000000
MAX_TOKENS=8192
MODEL_ID=claude-sonnet-4-5
BASE_URL=http://localhost:3000
API_KEY=your-api-key
API_PROTOCOL=anthropic-messages
CONTEXT_WINDOW=200000
MAX_TOKENS=8192
| 参数 | 说明 | 默认值 |
|---|---|---|
| OPENCLAW_GATEWAY_TOKEN | Gateway 访问令牌 | 123456 |
| OPENCLAW_GATEWAY_BIND | 绑定地址 | lan |
| OPENCLAW_GATEWAY_PORT | Gateway 端口 | 18789 |
| OPENCLAW_BRIDGE_PORT | Bridge 端口 | 18790 |
| 参数 | 说明 | 默认值 |
|---|---|---|
| WORKSPACE | 工作空间目录 | /home/node/.openclaw/workspace |
获取飞书机器人凭证
必需权限(租户级别)
| 权限 | 范围 | 说明 |
|---|---|---|
| im:message | 消息 | 发送和接收消息(核心权限) |
| im:message.p2p_msg:readonly | 私聊 | 读取发给机器人的私聊消息 |
| im:message.group_at_msg:readonly | 群聊 | 接收群内@机器人 的消息 |
| im:message:send_as_bot | 发送 | 以机器人身份发送消息 |
| im:resource | 媒体 | 上传和下载图片/文件 |
| im:chat.members:bot_access | 群成员 | 获取群成员信息 |
| im:chat.access_event.bot_p2p_chat:read | 聊天事件 | 读取机器人单聊事件 |
如果机器人能发消息但收不到消息,请检查此项。在飞书开放平台的应用后台,进入事件与回调页面:
| 事件 | 说明 |
|---|---|
| im.message.receive_v1 | 接收消息(必需) |
| im.message.message_read_v1 | 消息已读回执 |
| im.chat.member.bot.added_v1 | 机器人进群 |
| im.chat.member.bot.deleted_v1 | 机器人被移出群 |
FEISHU_APP_ID=your-app-id
FEISHU_APP_SECRET=your-app-secret
创建钉钉应用
获取凭证 从开发者后台获取:Client ID(AppKey)、Client Secret(AppSecret)、Robot Code、Corp ID、Agent ID
环境变量配置(在 .env 文件中添加)
DINGTALK_CLIENT_ID=your-dingtalk-client-id
DINGTALK_CLIENT_SECRET=your-dingtalk-client-secret
DINGTALK_ROBOT_CODE=your-dingtalk-robot-code
DINGTALK_CORP_ID=your-dingtalk-corp-id
DINGTALK_AGENT_ID=your-dingtalk-agent-id
获取 QQ 机器人凭证
环境变量配置(在 .env 文件中添加)
QQBOT_APP_ID=你的 AppID
QQBOT_CLIENT_SECRET=你的 AppSecret
获取企业微信凭证
环境变量配置(在 .env 文件中添加)
WECOM_TOKEN=your-token
WECOM_ENCODING_AES_KEY=your-aes-key
如果不使用 Docker Compose,可以直接使用 Docker 命令启动容器:
docker run -d \
--name openclaw-gateway \
--cap-add=CHOWN \
--cap-add=SETUID \
--cap-add=SETGID \
--cap-add=DAC_OVERRIDE \
-e MODEL_ID=model id \
-e BASE_URL=http://xxxxx/v1 \
-e API_KEY=123456 \
-e API_PROTOCOL=openai-completions \
-e CONTEXT_WINDOW=200000 \
-e MAX_TOKENS=8192 \
-e FEISHU_APP_ID=your-app-id \
-e FEISHU_APP_SECRET=your-app-secret \
-e DINGTALK_CLIENT_ID=your-dingtalk-client-id \
-e DINGTALK_CLIENT_SECRET=your-dingtalk-client-secret \
-e DINGTALK_ROBOT_CODE=your-dingtalk-robot-code \
-e DINGTALK_CORP_ID=your-dingtalk-corp-id \
-e DINGTALK_AGENT_ID=your-dingtalk-agent-id \
-e QQBOT_APP_ID=your-qqbot-app-id \
-e QQBOT_CLIENT_SECRET=your-qqbot-client-secret \
-e WECOM_TOKEN=your-token \
-e WECOM_ENCODING_AES_KEY=your-aes-key \
-e OPENCLAW_GATEWAY_TOKEN=123456 \
-e OPENCLAW_GATEWAY_BIND=lan \
-e OPENCLAW_GATEWAY_PORT=18789 \
-v ~/.openclaw:/home/node/.openclaw \
-v ~/.openclaw/workspace:/home/node/.openclaw/workspace \
-p 18789:18789 \
-p 18790:18790 \
--restart unless-stopped \
justlikemaki/openclaw-docker-cn-im:latest
容器使用以下卷进行数据持久化,确保配置和工作数据不丢失:
如果需要完全自定义配置文件,可按以下步骤操作:
Q: 修改了环境变量但配置没有生效?
容器启动时只有在配置文件不存在时才会生成新配置。如需重新生成配置,请删除现有配置文件:
rm ~/.openclaw/openclaw.json
docker-compose restart
或者直接删除整个数据目录重新开始:
rm -rf ~/.openclaw
docker-compose up -d
Q: 连接 AIClient-2-API 失败?
Q: 401 错误?
Q: 模型不可用?
docker-compose restartQ: 飞书机器人能发消息但收不到消息?
Q: Telegram 机器人如何配对?
如果需要启用 Telegram,必须提供有效的 TELEGRAM_BOT_TOKEN,启用后需要执行以下命令进行配对审批:
openclaw pairing approve telegram {token}
并且需要重启 Docker 服务使配置生效。
Q: 同样的启动命令,为什么有人报错 Permission denied?
这通常不是命令本身不稳定,而是运行上下文变化导致:宿主机挂载目录所有者(UID/GID)与容器内进程用户不一致。
为什么会'偶发'
同样是 docker compose up -d,但目录来源不同:
本镜像最终以 node 用户运行网关;若挂载目录归属不匹配,就可能无法写入。
快速排查
# 1) 看宿主机目录归属(Linux)
ls -ln ~/.openclaw
# 2) 看容器内运行用户
docker run --rm justlikemaki/openclaw-docker-cn-im:latest id
若容器用户是 uid=1000,而宿主机目录是 uid=0 且权限不足,就会报错。
解决方案(推荐顺序)
sudo chown -R 1000:1000 ~/.openclaw
在 .env 中设置:
OPENCLAW_RUN_USER=1000:1000
然后重启:
docker compose up -d
若权限看起来没问题但仍拒绝访问,请给挂载卷加 :Z 标签。
本项目已做的稳态处理:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online