拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

安全养虾:[Windows]Docker部署OpenClaw详细过程记录——TaoToken统一Key接入飞书机器人

安全养虾:[Windows]Docker部署OpenClaw详细过程记录——TaoToken统一Key接入飞书机器人 1. 为什么要在 Windows 上用 Docker 跑 OpenClaw 并接入飞书OpenClaw 是一个可以自己部署的个人 AI 助手能接飞书、Discord、Telegram 等聊天通道也能挂各种模型和工具。它适合想在自己电脑上养一只“私人助理虾”的人数据留在本地、通道自己控、模型自己选。但如果你直接在 Windows 裸机上跑Node 版本、Python 依赖、端口占用、权限问题会一层层叠上来卸载时还容易留一堆残留。我这次的目标很明确在 Windows 上用 Docker Desktop 把 OpenClaw 跑起来聊天通道接飞书机器人模型侧不再到处散落 Key而是统一走 TaoToken 的 Key 接入。这样做的直接好处是——模型供应商换起来只改一处配置飞书那边只认 OpenClaw 的网关不用每接一个模型就重新配一遍飞书凭证。整篇按“能跟着做”的节奏走先确认 Docker 环境再写docker-compose.yml然后给出一份config.toml骨架和 TaoToken 统一 Key 的配置片段接着验证飞书回调、看容器日志排障。你不需要提前懂 OpenClaw 的全部概念照着命令敲、对着日志看就行。2. TaoToken 前置把分散的模型 Key 收拢成一个入口OpenClaw 支持很多模型供应商QuickStart 里会让你一个个选Anthropic、OpenAI、Qwen、DeepSeek、Moonshot……每选一个就要填一次 Base URL 和 API Key。养虾场景里通常不止用一个模型日常对话可能用便宜快的写代码换一个长文本再换一个。如果每个都单独配 Key配置文件会越来越乱换机器时还得把一堆密钥搬来搬去。TaoToken 在这里扮演的是“统一入口”的角色。你可以在 TaoToken 拿到一个 Key然后在 OpenClaw 里把它当成一个 OpenAI 兼容的自定义供应商来配。模型切换时改的是请求里的模型名而不是重新填一套凭证。对 Docker 部署来说这点很关键环境变量和配置文件里只出现一个 Key容器重建、迁移、备份都简单。具体要准备的东西一个 TaoToken 的 API Key在控制台的 API Keys 页面创建OpenClaw 的 Base URL 指向 TaoToken 的 API 地址https://taotoken.net/api模型名按 TaoToken 文档里支持的写法填OpenClaw 侧选 OpenAI-compatible 协议。注意TaoToken 的 API 地址是https://taotoken.net/api不要在后面随手加/v1之外的路径OpenClaw 的 OpenAI 兼容模式会自己拼/chat/completions。如果你在别的工具里习惯写完整路径这里要按 OpenClaw 的约定来。如果你还没创建 Key可以先到 TaoToken API Keys 生成一个后面配置里会用到。想先确认模型能不能通可以用 模型对话 页面直接发一条测试消息确认 Key 和模型名都对再进 Docker 配置能省掉不少“到底是容器问题还是 Key 问题”的排查时间。3. 可复制配置docker-compose.yml 与 config.toml 骨架3.1 环境验证与目录准备先在 PowerShell 里确认 Docker 和 Compose 版本。Docker 建议 20.10 以上Compose 建议 v2.0.0 以上docker --version docker compose version然后建一个专门养虾的目录避免和别的项目混在一起mkdir D:\openclaw cd D:\openclaw把 OpenClaw 的代码拉下来。国内拉 GitHub 偶尔会断遇到RPC failed; curl 56这类连接重置重试几次通常能过git clone https://github.com/openclaw/openclaw.git cd openclaw3.2 docker-compose.yml下面这份docker-compose.yml放在项目根目录。它做了几件事用官方镜像、映射网关端口、挂载配置和数据目录、把 TaoToken 的 Key 通过环境变量注入。你可以直接复制改掉TAOTOKEN_API_KEY那一行即可。services: openclaw-gateway: image: ghcr.io/openclaw/openclaw:latest container_name: openclaw-gateway restart: unless-stopped ports: - 18789:18789 environment: - OPENCLAW_GATEWAY_BINDlan - OPENCLAW_GATEWAY_PORT18789 - TAOTOKEN_API_KEYsk-你的TaoTokenKey - TAOTOKEN_BASE_URLhttps://taotoken.net/api volumes: - ./data:/app/data - ./config:/app/config healthcheck: test: [CMD, curl, -f, http://localhost:18789/healthz] interval: 30s timeout: 5s retries: 3几个参数说明参数作用建议值OPENCLAW_GATEWAY_BIND网关绑定范围lan局域网可访问仅本机用可改localOPENCLAW_GATEWAY_PORT网关端口默认18789被占用再改TAOTOKEN_API_KEY统一模型 Key从 TaoToken 控制台复制TAOTOKEN_BASE_URL模型 API 入口https://taotoken.net/api./data会话与运行数据挂出来容器重建不丢./config配置文件目录挂出来方便改config.toml注意TAOTOKEN_API_KEY写在 compose 文件里方便演示实际长期使用建议放到.env文件compose 里用${TAOTOKEN_API_KEY}引用避免密钥进 Git。3.3 config.toml 骨架OpenClaw 的配置可以走交互式向导生成也可以直接写config.toml。下面是一份最小骨架重点是[[providers]]这一段——把 TaoToken 作为 OpenAI 兼容供应商接进来模型名按你实际要用的填。[gateway] bind lan port 18789 [[providers]] id taotoken type openai-compatible base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY default_model 你的模型名 [channels.feishu] enabled true app_id cli_你的AppID app_secret 你的AppSecret connection_mode websocket domain feishu.cn [security] dm_policy pairing group_policy disabled这里api_key_env指向环境变量名而不是把 Key 明文写进 TOML配合 compose 里的TAOTOKEN_API_KEY使用。connection_mode websocket是飞书推荐的长连接模式不需要公网 IP家里单机部署最省事。group_policy disabled表示群聊不响应只走私聊安全边界更清楚。3.4 启动容器配置就位后启动docker compose up -d docker compose ps预期看到openclaw-gateway状态为Up。如果第一次拉镜像慢属于正常现象镜像层拉完后续启动会快很多。4. 验证请求健康检查、飞书回调与容器日志4.1 网关健康检查先确认网关本身活着curl http://localhost:18789/healthz返回 200 或类似ok的响应说明网关进程正常。如果这里就失败先看日志不要急着去配飞书。4.2 看容器日志日志是排障的主入口。启动后先盯一会儿docker compose logs -f openclaw-gateway重点看三类信息网关是否监听端口、飞书通道是否建立 WebSocket 连接、模型供应商是否加载成功。如果飞书凭证填错日志里会出现鉴权失败或连接被拒的提示如果 TaoToken 的 Key 或 Base URL 有问题日志里会在模型调用时抛出 401 或连接错误。4.3 飞书回调验证飞书这边用 WebSocket 长连接模式时不需要你配公网回调 URL但要在飞书开放平台把事件订阅开起来并订阅消息接收事件如im.message.receive_v1。配置路径大致是开发者后台 → 事件与回调 → 订阅方式选长连接 → 添加事件。配完后在飞书里给机器人发一条私聊消息。预期行为首次私聊会触发配对流程生成配对码在容器里批准配对后再发消息就能收到 AI 回复回复内容由 TaoToken 背后的模型生成。批准配对的命令在网关容器内执行docker exec -it openclaw-gateway sh cd /app node openclaw.mjs devices list node openclaw.mjs devices approve 请求IDdevices list会列出 Pending 和 Paired 两类设备。把 Pending 里的 Request ID 填进approve命令配对完成后该请求会移到 Paired 列表。这一步是 OpenClaw 的安全设计默认只信任一个操作者未知私聊必须显式批准。4.4 确认模型侧通了飞书能收到回复说明链路已经通了。如果想单独确认 TaoToken 这一侧可以在 模型对话 里用同一个 Key 发一条消息对比返回是否正常。两边都通说明 Key、Base URL、模型名三者一致。5. 本篇常见错排查5.1 容器起来了但飞书没反应先看日志里飞书通道有没有报鉴权错误。常见原因是 App ID 或 App Secret 复制时带了空格或者飞书后台的事件订阅没开、事件类型没加。WebSocket 模式下还要确认飞书应用已经发布版本未发布的改动不会生效。5.2 模型调用返回 401 或 404401 通常是 Key 不对或没传进去。检查 compose 里的TAOTOKEN_API_KEY是否和 TaoToken 控制台一致容器内可以用env | grep TAOTOKEN确认环境变量存在。404 多半是 Base URL 写错确认是https://taotoken.net/api不要多拼或少拼路径。5.3 端口 18789 被占用docker compose up报端口绑定失败时改 compose 里的映射比如18790:18789同时把OPENCLAW_GATEWAY_PORT保持容器内不变。改完docker compose up -d重建即可。5.4 配对请求一直 Pendingdevices approve要在网关容器内的/app目录执行且请求 ID 要完整复制。如果node openclaw.mjs devices list报找不到入口文件先pwd确认在/app再ls | grep openclaw看入口是否存在。容器内路径和宿主机不一样别在 PowerShell 里直接跑这条命令。5.5 容器重建后配置丢了检查volumes是否把./config和./data挂出来了。没挂载的话容器一删配置就没了。挂载后重建容器配置和会话数据都会保留。6. 后续怎么用统一 Key 与长期编码场景跑通之后日常维护其实很轻模型侧要换模型改config.toml里的default_model或请求里的模型名要加通道在[channels]下加一段要调安全策略改[security]。TaoToken 的 Key 始终只有一处不用跟着模型供应商到处改。如果你后面要把 OpenClaw 用在长期编码、Agent 任务这类高频场景可以考虑 Coding Plan把编码类请求和日常对话分开管理配额和模型选择更清晰。接入过程中遇到鉴权、Base URL、模型名对不上的问题直接翻 接入文档 对照参数需要新建或轮换 Key在 API Keys 页面操作就行。最后留一个我踩过的坑飞书通道配好后如果改了config.toml记得docker compose restart openclaw-gateway让配置重新加载光改文件不重启容器里跑的还是旧配置。
返回列表