资讯动态

OpenClaw 从零部署 + 飞书机器人完整接入:RockyLinux Docker 实操与 TaoToken 统一 Key 配置

发布时间:2026/10/18 11:16:17 来源:尧图企业网站定制
1. 为什么要在 RockyLinux 上用 Docker 跑 OpenClaw 并接入飞书OpenClaw 是一个可以执行 Shell 命令、读写服务器文件、对接大模型完成自动化运维任务的 AI Agent 框架。它本身不是一个聊天工具而是一个“能动手干活”的机器人内核——你给它发一条消息它可以帮你查日志、跑脚本、分析报错甚至根据你的描述生成一段 Nginx 配置。适合谁用运维工程师、后端开发、个人站长以及任何想让 AI 帮自己盯着服务器的人。但 OpenClaw 原生自带的 Web UI 体验比较简陋而且默认只允许本机访问远程调试还得配 SSH 隧道日常用起来并不顺手。飞书机器人恰好补上了这块短板手机、电脑、平板都能直接对话消息卡片展示清晰企业内网也能稳定长连接。所以这套组合的核心思路就是——OpenClaw 在 RockyLinux 上以 Docker 方式常驻运行飞书作为前端交互入口模型请求统一走 TaoToken 的 Key省去多平台反复配置的麻烦。我试过在 RockyLinux 9 上从零走一遍完整链路踩过的坑主要集中在三块Node.js 版本不够导致 npm 安装失败、GitHub 拉取插件超时、飞书事件订阅没配对导致机器人“已读不回”。下面把每一步都拆开写清楚命令可以直接复制配置片段按路径对应改就行。整篇围绕 RockyLinux Docker 部署 OpenClaw 接入飞书机器人这条主线把环境准备、容器编排、回调验证、模型 Key 统一配置全部串起来。2. 前置准备TaoToken 统一 Key 与飞书应用创建2.1 为什么用 TaoToken 统一管理模型 KeyOpenClaw 支持多种模型供应商但如果你同时用 Claude 写方案、用 Qwen 跑脚本、用 DeepSeek 做日志分析每个平台都要单独申请 Key、单独配 endpoint配置文件会变得很乱。TaoToken 提供统一的 API 入口一个 Key 就能调用多个主流模型Base URL 固定为https://taotoken.net/apiOpenClaw 的 settings 里只需要改一处 endpoint 和一处 Key切换模型时只改 Model ID 即可。具体操作访问官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后进入控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsole 创建 API Key。建议给 OpenClaw 单独建一个 Key方便后续按项目排查用量。创建完成后在 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keys 复制 Key 字符串格式通常是sk-开头的一长串。注意Key 只显示一次复制后先存到密码管理器或临时文件后面写进 OpenClaw 配置时要用。2.2 飞书自建应用创建与权限开通登录飞书开放平台进入开发者后台点击“创建企业自建应用”名称填OpenClaw_Bot上传图标后确认。创建完成后在左侧“凭证与基础信息”里拿到App ID和App Secret这两个值后面配置 OpenClaw 飞书插件时要用。权限管理是重点。在“权限管理”搜索并勾选以下权限权限标识用途im:message接收与发送单聊消息im:chat读取群组信息、发送群聊消息contact:user.base:readonly获取用户基本信息im:message:send_as_bot以机器人身份发送消息im:chat:readonly读取群聊信息im:chat:read查看群信息contact:user.employee_id:readonly获取用户 IDim:resource处理图片/文件建议开启im:message.p2p_msg:readonly这个权限在应用未发布前可能无法勾选提示“此权限暂时不添加”先跳过等 OpenClaw 配置成功后再回来补。接着在“应用能力”里添加“机器人”能力否则应用无法在对话框里聊天。然后进入“版本管理与发布”创建版本详情描述填“初始版本”可用范围选“所有人”或仅自己保存后申请线上发布。企业管理员直接通过普通员工需等审批。最后配置事件订阅左侧“事件与回调” → “事件配置”订阅方式选“使用长连接接收事件”保存后添加事件im.message.receive_v1确认开通权限。添加事件后需要再次创建版本并发布否则事件不生效。3. RockyLinux Docker 部署 OpenClaw 可复制配置3.1 系统基础配置与 Node.js 环境RockyLinux 默认的软件源在国内访问较慢先换成阿里云镜像sed -e s|^mirrorlist|#mirrorlist|g \ -e s|^#baseurlhttp://dl.rockylinux.org/$contentdir|baseurlhttps://mirrors.aliyun.com/rockylinux|g \ -i.bak /etc/yum.repos.d/rocky*.repo dnf makecacheSELinux 和防火墙按需处理。如果是内网测试环境可以临时关闭grubby --update-kernel ALL --args selinux0 systemctl stop firewalld.service systemctl disable firewalld.service rebootNode.js 版本必须 ≥ 22。官方 rpm 源在国内可能超时直接用阿里云二进制包cd /usr/local/src wget https://mirrors.aliyun.com/nodejs-release/v24.1.0/node-v24.1.0-linux-x64.tar.xz tar -xJvf node-v24.1.0-linux-x64.tar.xz -C /usr/local --strip-components1 node -v # 应输出 v24.1.0 npm -v # 应输出 10.x 以上--strip-components1的作用是去掉最外层目录把bin、lib直接放到/usr/local下这样node命令全局可用。3.2 Docker 与 docker-compose 安装dnf install -y dnf-plugins-core dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin systemctl enable --now docker docker --version docker compose version3.3 获取 OpenClaw 初始化配置先创建目录结构再从临时容器里拷贝默认配置mkdir -p ~/openclaw/nginx/{conf,cert} cd ~/openclaw docker run -itd --name openclaw-temp ghcr.nju.edu.cn/openclaw/openclaw:latest docker cp openclaw-temp:/home/node/.openclaw ./ chmod 777 -R .openclaw/ docker stop openclaw-temp docker rm openclaw-temp3.4 自签 HTTPS 证书与 Nginx 配置OpenClaw UI 要求 HTTPS先生成自签证书cd ~/openclaw/nginx/cert openssl req -x509 -newkey rsa:2048 \ -keyout example.key -out example.crt \ -days 365 -nodes -subj /CNexample.com创建~/openclaw/nginx/conf/nginx.confworker_processes auto; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; client_max_body_size 1024m; server_tokens off; server { listen 443 ssl http2; server_name localhost; ssl_certificate /etc/nginx/cert/example.crt; ssl_certificate_key /etc/nginx/cert/example.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; location / { proxy_pass http://openclaw-gateway:18789; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 7d; proxy_send_timeout 7d; proxy_read_timeout 7d; } } }3.5 docker-compose.yaml 完整片段创建~/openclaw/docker-compose.yamlservices: openclaw-gateway: image: ghcr.nju.edu.cn/openclaw/openclaw:latest container_name: openclaw restart: unless-stopped volumes: - ./.openclaw:/home/node/.openclaw environment: - TZAsia/Shanghai mem_limit: 6g logging: driver: json-file options: max-size: 10m max-file: 3 openclaw-nginx: image: nginx:1.23.4 container_name: openclaw-nginx restart: always ports: - 443:443 volumes: - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf - ./nginx/cert:/etc/nginx/cert privileged: true depends_on: - openclaw-gateway启动cd ~/openclaw docker compose up -d3.6 初始化 OpenClaw 并修改 settings 指向 TaoToken进入容器执行 onboarddocker exec -it openclaw /bin/bash openclaw onboard按提示选择 QuickStart模型供应商先随便选一个后面手动改配置API Key 随便填渠道选 Skip for now搜索选 Skip技能选 NoHooks 选 Skip最后选 Do this later。退出容器。编辑~/openclaw/.openclaw/openclaw.json找到 gateway 部分把 bind 改为lan并添加 allowedOriginsgateway: { port: 18789, mode: local, bind: lan, controlUi: { allowedOrigins: [ http://localhost:18789, http://127.0.0.1:18789, https://你的宿主机IP ] }, auth: { mode: token, token: 你的token } }然后把模型 endpoint 和 Key 改成 TaoToken。在openclaw.json的 models 或 providers 段不同版本字段名略有差异以实际文件为准写入providers: { taotoken: { baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoTokenKey, api: openai-completions, models: [ { id: claude-3-5-sonnet-latest, name: Claude 3.5 Sonnet }, { id: deepseek-chat, name: DeepSeek Chat } ] } }重启容器docker compose restart3.7 设备授权与 Web UI 登录浏览器访问https://宿主机IP输入 token如果提示pairing required进入容器执行docker exec -it openclaw /bin/bash openclaw devices list openclaw devices approve Request ID再次点击连接即可进入 Web UI。4. 飞书机器人接入与消息收发验证4.1 在 OpenClaw 中配置飞书渠道进入容器执行docker exec -it openclaw /bin/bash openclaw channels add选择 Feishu/Lark插件安装方式选Use local plugin path然后依次输入App ID飞书后台“凭证与基础信息”里的 App IDApp Secret同上Verification Token飞书后台“事件与回调”里的 Verification Token连接模式选WebSocket内网服务器无需公网 IP域名选国内版feishu.cn群聊响应策略选Open - respond in all groups (requires mention)搜索插件Skip for now技能选 Yes安装 clawhub包管理器选 npm其他 API Key全部选 NoHooks空格选中command-logger和session-memory回车确认完成后会提示Configuration saved to /root/.openclaw/openclaw.json。4.2 飞书后台事件订阅与权限补全回到飞书开放平台进入应用后台“事件与回调” → “事件配置”订阅方式选“使用长连接接收事件”添加事件im.message.receive_v1。“权限管理”里补上im:message.p2p_msg:readonly。“版本管理与发布”创建新版本并发布。4.3 配对码授权与消息联调打开飞书电脑端搜索应用名称进入对话窗口发送一条消息。此时机器人不会直接回复而是返回一个配对码例如Pairing code: 9MMEH7Y8。回到服务器终端执行openclaw pairing approve feishu 9MMEH7Y8显示配置保存成功后再次在飞书发送消息机器人正常回复即表示链路打通。查看当前模型/model status输出示例Current: taotoken/claude-3-5-sonnet-latest Default: taotoken/claude-3-5-sonnet-latest Auth file: ~/.openclaw/agents/main/agent/auth-profiles.json [taotoken] endpoint: https://taotoken.net/api api: openai-completions4.4 验证请求是否走通 TaoToken在飞书里发一条需要调用模型的消息比如“帮我写一个查看磁盘占用的 shell 命令”。如果机器人返回了合理内容说明模型请求已经通过 TaoToken 的 endpoint 发出并成功返回。你也可以在 TaoToken 控制台的用量页面看到对应的调用记录确认 Key 和 endpoint 配置正确。5. 常见报错排查401、local proxy failed、reading choices、OAuth5.1 401 Unauthorized现象飞书机器人回复“模型请求失败”容器日志出现401 Unauthorized。原因TaoToken Key 填错、Key 已过期、或者openclaw.json里apiKey字段没写对。排查docker exec -it openclaw /bin/bash cat /home/node/.openclaw/openclaw.json | grep -A5 taotoken确认baseUrl是https://taotoken.net/apiapiKey是sk-开头的完整字符串。如果 Key 没问题去 TaoToken 控制台检查该 Key 是否被禁用或额度耗尽。5.2 local proxy failed现象容器日志出现local proxy failed或connection refused。原因OpenClaw 容器内无法访问外部网络或者 DNS 解析失败。排查docker exec -it openclaw /bin/bash curl -I https://taotoken.net/api如果 curl 不通检查宿主机 DNScat /etc/resolv.conf建议改成223.5.5.5或119.29.29.29然后重启 Dockersystemctl restart docker docker compose restart5.3 reading choices 报错现象日志出现error reading choices或invalid response format。原因模型返回格式与 OpenClaw 预期不一致通常是api字段配置错误。TaoToken 兼容 OpenAI 格式所以api应设为openai-completions。排查检查openclaw.json中 provider 的api字段确保不是anthropic-messages或其他格式。如果用的是 Claude 模型TaoToken 已经做了格式转换统一用openai-completions即可。5.4 OAuth 相关报错现象日志出现OAuth token expired或refresh failed。原因如果你之前配置过 Qwen 的 OAuth 登录auth-profiles.json 里可能残留了过期的 OAuth 凭证OpenClaw 优先读取了旧配置。排查docker exec -it openclaw /bin/bash cat /home/node/.openclaw/agents/main/agent/auth-profiles.json如果里面有qwen-portal的 OAuth 记录手动删除该段或者直接清空文件后重新用 TaoToken 的 Key 配置echo {} /home/node/.openclaw/agents/main/agent/auth-profiles.json然后重启容器重新在飞书发消息测试。5.5 飞书机器人无响应现象飞书发消息后机器人完全没反应也没有配对码返回。原因事件订阅没配好或者应用版本没发布。排查确认飞书后台“事件与回调”里订阅方式是“使用长连接接收事件”。确认im.message.receive_v1已添加。确认应用版本已发布且可用范围包含你。查看容器日志docker logs -f openclaw如果日志里没有飞书相关输出说明 WebSocket 没连上检查 App ID 和 App Secret 是否填错。6. 接入文档与模型验证入口整套链路跑通后日常使用中最常做的两件事一是验证模型是否正常返回二是排查 Key 和 endpoint 配置。模型对话入口可以直接在浏览器里测试 TaoToken 的连通性https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchat 输入一段 prompt看是否正常返回内容。如果这里不通OpenClaw 里肯定也不通先解决这一层。接入文档里对 Base URL、Key 格式、Model ID 列表有详细说明https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc 。遇到reading choices或401时对照文档检查api字段和 Key 权限。如果你打算长期跑编码类任务或 Agent 自动化Coding Plan 提供了更稳定的调用配额https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-plan 。OpenClaw 的command-logger和session-memory两个 Hook 开启后对话上下文会保留较长时间配合 Coding Plan 的额度更适合持续运维场景。最后提醒一点飞书机器人的配对码机制是保护服务器安全的第一道门。任何未授权的用户发消息只会拿到配对码不会执行任何命令。如果机器人被拉进群只有 它才会响应且群聊响应策略可以在openclaw.json里改成白名单模式只允许特定群使用。这些配置在openclaw channels add时已经设好后续需要调整可以直接编辑配置文件后重启容器。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑