ARTICLE DETAIL

资讯详情

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

OpenClaw AI 助手 Docker Compose 一键部署文档(可下载)|TaoToken 统一 Key 接入配置

OpenClaw AI 助手 Docker Compose 一键部署文档(可下载)|TaoToken 统一 Key 接入配置 1. 为什么我要把 OpenClaw 塞进 Docker ComposeOpenClaw AI 助手是一个可以私有化部署的智能体框架能接 Telegram、Web 聊天界面还能挂载网页浏览、文件操作这类技能。它本身能做什么简单说就是给你一个自己掌控的 AI 助手入口聊天记录、技能调用、模型选择都在你手里。适合谁适合想快速搭一个私有 AI 助手、又不想被某个平台绑死的开发者尤其是手里已经有服务器、熟悉 Docker 的人。但真上手你会发现OpenClaw 的部署文档里配置项散落在好几个文件模型 Key、网关 Token、端口映射各管各的。我第一次部署时光是把核心服务和网关服务的通信调通就折腾了半小时——网关先起来了核心还没就绪日志里全是连接拒绝。后来用 Docker Compose 把依赖顺序、网络隔离、数据卷一次性写清楚才算真正“一键”。这篇就交付三样东西一份可直接复制的docker-compose.yml骨架、TaoToken 统一 Key 的config.toml配置片段、以及容器起来后验证 API 连通性的具体命令和预期输出。你照着做本地或服务器上都能拉起一个可用的 OpenClaw 服务。模型接入这块我用 TaoToken 的统一 Key 来收口一个 Key 走多个模型省得在配置文件里来回换 base_url。2. TaoToken 前置统一 Key 怎么拿、怎么理解TaoToken 在这里扮演的角色是“模型调用的统一入口”。OpenClaw 的config.toml里需要填模型提供商的 API Key 和 base_url如果你同时想用 Claude、GPT 或者国产模型传统做法是每个都配一套 Key、改一次地址。TaoToken 把这些收成一个 Keybase_url 指向同一个网关模型名换一下就行。你需要先拿到这个统一 Key。访问官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后进控制台创建 API Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 在 API Keys 页面点新建复制那串sk-开头的字符串。这个 Key 就是后面config.toml里api_key的值。有一点要提前说清楚TaoToken 的 API 端点是 https://taotoken.net/api 注意这个地址不带任何查询参数配置里直接写它。模型对话的入口在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 你可以先在那里确认自己要用哪个模型名比如claude-sonnet-4-5或者gpt-4o-mini名字要和配置里保持一致。如果你后面打算长期跑编码类 Agent可以了解下 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 它针对高频编码场景做了额度优化。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 遇到参数疑问可以对照查。3. 可复制配置docker-compose.yml 与 config.toml3.1 目录结构先摆好在服务器或本地建一个目录比如openclaw-deploy里面放这几个文件openclaw-deploy/ ├── docker-compose.yml ├── config.toml ├── gateway-config.yaml └── data/ # 容器启动后自动生成不用手动建data/目录用来持久化日志和会话数据容器删了数据还在重新部署不用从零开始。3.2 docker-compose.yml 骨架这份 Compose 文件定义了两个服务openclaw-core负责推理和技能调度openclaw-gateway负责对外聊天接口。两者在同一个自定义 bridge 网络里网关通过容器名openclaw-core找到核心服务不依赖宿主机 IP。version: 3.8 networks: openclaw-net: driver: bridge ipam: config: - subnet: 172.28.0.0/16 volumes: openclaw-data: services: openclaw-core: image: openclaw/core:latest container_name: openclaw-core restart: always environment: - TZAsia/Shanghai - PYTHONUNBUFFERED1 volumes: - ./config.toml:/app/config.toml:ro - openclaw-data:/app/data networks: - openclaw-net deploy: resources: limits: cpus: 1 memory: 2G openclaw-gateway: image: openclaw/gateway:latest container_name: openclaw-gateway restart: always ports: - 8080:8080 environment: - TZAsia/Shanghai - CORE_SERVICE_HOSTopenclaw-core volumes: - ./gateway-config.yaml:/app/gateway-config.yaml:ro - openclaw-data:/app/data networks: - openclaw-net depends_on: - openclaw-core deploy: resources: limits: cpus: 0.5 memory: 1G几个关键点depends_on保证网关在核心服务之后启动避免连接拒绝subnet自定义成172.28.0.0/16减少和其他容器网络撞段的概率config.toml用只读挂载防止容器内误改。3.3 config.toml 里接 TaoToken 统一 KeyOpenClaw 的核心配置用 TOML 格式。下面这段是模型接入部分重点是base_url指向 TaoToken 的 API 端点api_key填你刚才复制的统一 Key。[llm] provider openai-compatible api_key sk-你的TaoToken统一Key base_url https://taotoken.net/api model claude-sonnet-4-5 max_tokens 2000 temperature 0.7 [service] host 0.0.0.0 port 8000 log_level INFO log_file /app/data/openclaw-core.log [skills] web_browser true file_system true search false automation falseprovider写openai-compatible是因为 TaoToken 的接口兼容 OpenAI 的调用格式这样 OpenClaw 不用改代码就能对接。model换成你在模型对话页面看到的任意模型名即可。max_tokens和temperature按需调新手建议先保持默认。3.4 gateway-config.yaml 最小配置网关配置里先只开 Web 聊天Telegram 等 Web 验证通过再加减少变量。gateways: webchat: enabled: true host: 0.0.0.0 port: 8080 telegram: enabled: false core: host: openclaw-core port: 8000 timeout: 30core.host写容器名openclaw-coreDocker 内部 DNS 会自动解析不用写 IP。4. 启动与验证命令、预期输出、连通性检查4.1 拉起服务进入部署目录执行cd openclaw-deploy docker compose up -d首次启动会拉镜像视网络情况等 2 到 5 分钟。完成后看容器状态docker compose ps预期输出里两个容器的STATUS都应该是Up类似NAME IMAGE STATUS openclaw-core openclaw/core:latest Up 2 minutes openclaw-gateway openclaw/gateway:latest Up 1 minute如果openclaw-gateway显示Restarting多半是核心服务还没就绪等十几秒再看。4.2 看核心服务日志确认模型接入docker compose logs -f openclaw-core正常启动会看到类似OpenClaw AI Core started successfully LLM provider: openai-compatible Base URL: https://taotoken.net/api Model loaded: claude-sonnet-4-5如果出现401 Unauthorized说明api_key填错了或者 Key 没生效回控制台重新复制。如果出现Connection refused或超时检查base_url是不是写成了带路径的地址正确写法就是https://taotoken.net/api后面不要加/v1之类。4.3 直接验证 API 连通性在宿主机上跑一条 curl绕过 OpenClaw 直接测 TaoToken 端点通不通curl -s -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoToken统一Key \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: 回复ok}], max_tokens: 10 }预期返回一段 JSONchoices[0].message.content里有模型回复。这一步通了说明 Key 和网络都没问题问题就只可能在 OpenClaw 配置侧。4.4 Web 聊天界面验证浏览器打开http://localhost:8080服务器上换成公网 IP。页面加载出聊天框后发一句“你好”能收到模型回复就说明整条链路通了Web 网关 → 核心服务 → TaoToken → 模型。如果页面打不开先确认 8080 端口没被占用ss -tlnp | grep 8080被占用了就改docker-compose.yml里的端口映射比如8082:8080然后docker compose up -d重建。5. 本篇常见错排查5.1 容器起来又挂日志里全是 Key 相关报错最常见的是config.toml里api_key还留着占位符或者复制时带了空格。TOML 对字符串敏感api_key sk-xxx前面多个空格都会导致鉴权失败。用docker compose logs openclaw-core | grep -i auth快速定位。5.2 网关连不上核心connection refused检查gateway-config.yaml里core.host是不是写成了localhost或127.0.0.1。在容器里localhost指向网关自己不是核心服务。必须写容器名openclaw-core并且两个服务在同一个networks下。用docker compose exec openclaw-gateway ping openclaw-core能通就说明网络没问题。5.3 模型名报错model not foundTaoToken 的模型名和官方可能略有差异比如你写gpt-4但实际可用的是gpt-4o。去模型对话页面 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 复制准确的模型名粘贴到config.toml的model字段。改完执行docker compose restart openclaw-core生效。5.4 改了配置不生效config.toml是只读挂载改宿主机文件后容器内不会自动重载。必须重启对应服务docker compose restart openclaw-core只改网关配置就重启openclaw-gateway。两个都改了就直接docker compose restart。5.5 数据卷权限问题如果日志里出现Permission denied写/app/data检查宿主机上data/目录的属主。容器内进程通常以非 root 用户跑可以临时chmod 777 data验证生产环境建议改成对应 UID。6. 接下来怎么走Web 聊天跑通之后你可以把 Telegram 打开在gateway-config.yaml里把telegram.enabled改成true填上 Bot Token重启网关。Bot Token 找 BotFather 发/newbot就能拿到。如果你打算把这个 OpenClaw 当成日常编码助手长期用建议把 Key 换成 Coding Plan 的额度入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 高频调用下更划算。接入过程中遇到参数对不上翻一下接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面把 base_url、鉴权头、模型名映射都列清楚了。最后提醒一句config.toml和gateway-config.yaml里都有密钥别把这两个文件提交到公开仓库。用.gitignore排除掉或者用环境变量注入的方式管理。
返回列表