ARTICLE DETAIL

资讯详情

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

Docker 部署 OpenClaw 并接入第三方大模型 (MiniMax) 完整排坑指南:把 Base URL 改到 TaoToken

Docker 部署 OpenClaw 并接入第三方大模型 (MiniMax) 完整排坑指南:把 Base URL 改到 TaoToken 1. Docker 里跑 OpenClaw 接 MiniMax为什么总是连不上很多人第一次在 Docker 里部署 OpenClaw心里想的很简单不就是拉个镜像、配个环境变量、填个 API Key 吗结果容器起来了Web UI 也能打开一到发消息就报错——要么是Unknown model要么是401 Unauthorized要么干脆卡在local proxy failed不动了。我自己在 Ubuntu 3090 的机器上折腾了好几轮才把这条链路彻底跑通。OpenClaw 是一个封装度很高的开源 AI 代理框架它和普通 Web 服务最大的区别在于它的配置不靠环境变量驱动而是靠一个持久化的openclaw.json文件。这个文件默认放在容器内的/home/node/.openclaw/目录下。如果你启动容器时没有把这个目录挂载到宿主机那么每次容器重启你之前配好的模型、网关 Token 全部会被重置。这就是为什么很多人明明在docker run里加了-e参数重启后配置却“消失”了。另一个高频坑是 Base URL 的写法。MiniMax 这类第三方大模型服务兼容 OpenAI 格式的接口通常带/v1版本号但 OpenClaw 在拼接请求时对路径的处理有自己的逻辑。你填https://xxx.com和填https://xxx.com/v1最终发出的请求地址可能完全不同。填错了轻则 404重则鉴权失败。这篇内容面向的是已经在本地或云服务器上用 Docker 跑 OpenClaw、并且想接入 MiniMax 等第三方大模型的开发者。我会把容器网络、目录挂载、环境变量、Base URL、鉴权字段这几条链路逐项拆开给出可以直接复制的docker-compose片段、配置模板和验证命令。你不需要从头学 Docker但需要能看懂基本的容器操作。先说结论不要用传统 Docker 环境变量的思维去硬碰 OpenClaw。它的配置入口是自带的openclaw configure命令行向导顺着它的机制走比手动改 JSON 稳得多。下面从部署前的准备开始一步步把链路搭起来。2. 部署前的 TaoToken 接入准备与容器网络规划在动手改 OpenClaw 配置之前先把“模型从哪来”这件事定下来。你要接入的是 MiniMax 这类第三方大模型而 OpenClaw 本身只认 OpenAI 兼容格式的接口。所以中间需要一个稳定的 API 入口把请求转发到目标模型上。TaoToken 在这里扮演的就是这个入口角色——它提供 OpenAI 兼容的 Base URL 和 API Key你把它填进 OpenClaw 的自定义提供商配置里容器就能正常发起模型调用。先拿到两个关键信息API Base URL和API Key。Base URL 用https://taotoken.net/api注意这个地址不带任何多余路径OpenClaw 在 OpenAI-compatible 模式下会自动拼接后续的/v1/chat/completions等端点。API Key 在控制台的 API Keys 页面生成格式通常是sk-开头的一串字符。这两个值后面会填进配置向导里先复制到手边备用。接下来是容器网络规划。OpenClaw 的 Web UI 默认监听18789端口如果你用--network host模式启动容器直接共享宿主机网络访问http://127.0.0.1:18789就能打开。但 host 模式在部分云服务器上会和已有服务抢端口更稳妥的做法是用端口映射ports: - 18789:18789这样宿主机只暴露一个端口容器内部的服务互不干扰。如果你在云服务器上部署记得在安全组里放行18789的入站规则否则外网访问会被拦掉。目录挂载是另一个必须提前规划的点。OpenClaw 的配置和网关 Token 都存在/home/node/.openclaw/下你要把这个目录映射到宿主机的~/.openclaw这样配置才能持久化。同时建议把数据目录/app/data也挂出来方便后续排查日志和缓存问题。完整的目录映射关系如下容器内路径宿主机路径用途/home/node/.openclaw~/.openclaw配置文件、网关 Token/app/data~/openclaw/data运行数据、日志缓存这里有个细节宿主机上的~/.openclaw目录如果不存在Docker 会自动创建一个空目录挂进去但权限可能不对。建议先手动创建并确认当前用户有读写权限mkdir -p ~/.openclaw ~/openclaw/data chmod 755 ~/.openclaw ~/openclaw/data如果你之前已经跑过 OpenClaw 容器并且里面有过配置先把旧容器停掉删掉但不要删宿主机的~/.openclaw目录否则网关 Token 会重新生成之前登录过的 Web 会话全部失效。清理旧容器的命令docker stop openclaw docker rm openclaw到这里模型入口信息和容器网络、目录规划都清楚了。下一步进入实际配置环节我会给出完整的docker-compose.yml片段以及如何用 OpenClaw 自带的向导把 TaoToken 的 Base URL 和 Key 写进去。3. 可复制的 docker-compose 配置与 openclaw configure 向导实操这一节是整篇的核心我会把docker-compose.yml的完整片段和配置向导的每一步都写清楚。你直接复制改路径就能用。先看docker-compose.yml。我推荐用 compose 而不是docker run因为目录映射和端口配置写在一起后续维护更直观version: 3.8 services: openclaw: image: ghcr.nju.edu.cn/openclaw/openclaw:latest container_name: openclaw restart: always ports: - 18789:18789 volumes: - ~/.openclaw:/home/node/.openclaw - ~/openclaw/data:/app/data environment: - TZAsia/Shanghai注意这里没有写PROVIDER_OPENAI_KEY之类的环境变量。原因前面说过OpenClaw 不靠环境变量读模型配置写了也不生效反而容易让人误以为配好了。模型配置统一走openclaw configure向导写入openclaw.json。启动容器docker compose up -d确认容器状态是Updocker ps | grep openclaw如果状态是Restarting或者直接退出先看日志docker logs --tail 50 openclaw常见原因是宿主机~/.openclaw权限不对容器内 node 用户写不进去。把宿主机目录权限改成755或777再重启。容器稳定运行后进入配置向导docker exec -it openclaw openclaw configure向导是交互式的用上下键选择、回车确认。按顺序走第一步Select sections to configure选Model。第二步Model/auth provider选Custom Provider。这一步很关键不要选 OpenAI 或 Anthropic 预设因为你要接的是第三方兼容接口。第三步API Base URL填https://taotoken.net/api。注意不要在后面加/v1OpenClaw 在 OpenAI-compatible 模式下会自己拼路径。如果你填了/v1最终请求可能变成/v1/v1/chat/completions直接 404。第四步How do you want to provide this API key?选Paste API key now然后把你的sk-开头的 Key 粘进去。第五步Endpoint compatibility选OpenAI-compatible。第六步Model ID填你要调用的具体模型名称。比如 MiniMax 系列的模型 ID必须和官方文档里的一字不差。填错了会报Unknown model。第七步向导会自动测试连通性。如果看到Verification successful.说明 Base URL、Key、模型 ID 三者都对上了。如果报错先别急着往下走回到第五节对照报错排查。第八步Endpoint ID直接回车保持默认Model alias可以起个好记的别名比如minimax方便在 Web UI 里选模型。向导结束后配置会写入容器内的/home/node/.openclaw/openclaw.json因为目录已经挂载到宿主机你可以在宿主机直接查看cat ~/.openclaw/openclaw.json你会看到类似这样的结构{ gateway: { auth: { token: 33123c312b... } }, models: { providers: { custom: { baseUrl: https://taotoken.net/api, apiKey: sk-xxxxxx, models: [你的模型ID] } } } }这个gateway.auth.token就是后面登录 Web UI 要用的网关令牌先复制出来。到这里配置链路已经打通下一步是验证请求是否真的能跑通。4. 验证模型调用链路从容器内 curl 到 Web UI 对话配置写好了不代表链路通了必须实际发一次请求验证。我习惯分三层验证容器内网络连通性、API 端点可达性、Web UI 端到端对话。第一层确认容器能解析并访问 TaoToken 的 API 地址。进入容器docker exec -it openclaw sh在容器内执行curl -I https://taotoken.net/api如果返回HTTP/2 200或401说明网络是通的401 是因为没带 Key属于正常。如果卡住或报Could not resolve host说明容器 DNS 有问题检查宿主机的/etc/resolv.conf或者在 compose 里加dns: 8.8.8.8。第二层带 Key 发一次真实的 chat completions 请求。在容器内执行curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的Key \ -d { model: 你的模型ID, messages: [{role: user, content: 你好}] }如果返回 JSON 里带choices字段和模型回复内容说明 Base URL、Key、模型 ID 全部正确。如果返回401检查 Key 是否复制完整、有没有多余空格。如果返回404检查 Base URL 是不是多写了/v1。如果返回model not found检查模型 ID 拼写。第三层打开 Web UI 做端到端验证。在浏览器访问http://127.0.0.1:18789/__openclaw__/canvas/如果是云服务器把127.0.0.1换成公网 IP并确认安全组放行了18789。页面会弹出网关令牌输入框把前面从openclaw.json里复制的gateway.auth.token粘进去密码栏留空点连接。进入聊天界面后点顶部输入框的下拉菜单选中你刚才配置的模型别名或全称。发送一句“你好”如果几秒内收到回复整条链路就通了。这里有个容易忽略的点Web UI 里选的模型必须和openclaw.json里配置的模型 ID 对应。如果你在向导里配了别名下拉菜单里显示的是别名但底层调用的还是你填的 Model ID。如果发消息后报Unknown model回到向导重新确认 Model ID 是否和官方文档一致。三层验证都通过后建议把容器重启一次再发一条消息确认配置持久化生效docker restart openclaw重启后 Web UI 可能需要重新输入网关令牌但模型配置不应该丢失。如果重启后模型配置没了说明~/.openclaw挂载没生效回到第二节检查目录映射。5. 常见报错排查401、local proxy failed、Unknown model 逐项定位这一节把我在实际部署中遇到的报错和排查路径整理出来你对照着看。报错一401 Unauthorized这是最常见的鉴权失败。可能原因有三个Key 复制不完整、Key 前后有空格、Key 已经失效。先在容器内用 curl 直接测curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的Key \ -H Content-Type: application/json \ -d {model:你的模型ID,messages:[{role:user,content:test}]}如果 curl 也返回 401说明 Key 本身有问题去控制台重新生成一个。如果 curl 成功但 OpenClaw 报 401说明openclaw.json里的 Key 写错了重新跑openclaw configure覆盖。报错二local proxy failed这个报错通常出现在 OpenClaw 尝试通过本地代理转发请求时。原因是容器内的网络环境无法直连外部 API或者 OpenClaw 配置了错误的代理地址。检查两点一是容器内curl -I https://taotoken.net/api是否通二是openclaw.json里有没有残留的proxy字段。如果有删掉它OpenClaw 默认直连。报错三Unknown model模型 ID 不匹配。OpenClaw 会把你在向导里填的 Model ID 原样发给 API如果这个 ID 在服务端不存在就报这个错。解决办法去模型服务商的文档里确认准确的模型 ID注意大小写和连字符。比如MiniMax-M2.7-highspeed和minimax-m2.7-highspeed在某些服务端是两个不同的东西。报错四reading choices 相关错误这个报错说明请求发出去了但返回的 JSON 结构里没有choices字段。常见原因是 Base URL 填成了非 OpenAI 兼容的端点或者模型 ID 对应的接口不是 chat completions 格式。确认 Base URL 是https://taotoken.net/api并且 Endpoint compatibility 选的是OpenAI-compatible。报错五OAuth 相关错误如果你在向导里误选了 OAuth 认证方式OpenClaw 会尝试走浏览器授权流程但容器环境没有浏览器就会卡住或报错。解决办法重新跑openclaw configure在How do you want to provide this API key?这一步选Paste API key now不要选 OAuth。报错六容器重启后配置丢失这是目录挂载问题。检查docker-compose.yml里的 volumes 映射确认宿主机路径~/.openclaw存在且有写权限。用docker inspect openclaw查看 Mounts 字段确认映射生效。排查时有个通用技巧先看容器日志docker logs --tail 100 openclaw再进容器手动 curl最后检查openclaw.json内容。三层定位基本能覆盖 90% 的问题。6. 稳定运行后的模型切换与长期使用建议链路跑通之后你可能会想换模型或者加多个模型。OpenClaw 支持在openclaw.json里配置多个 provider但手动改 JSON 容易触发格式校验错误。更稳的做法是重新跑openclaw configure在向导里添加新的 Custom Provider填不同的 Base URL 和 Model ID。每个 provider 可以起不同的别名Web UI 的下拉菜单里会分别显示。如果你需要长期在编码或 Agent 场景里高频调用模型建议关注一下 Coding Plan 相关的额度方案比按次计费更适合持续使用。日常调试和验证模型连通性可以直接用模型对话页面快速发请求不用每次都开容器。最后说一个我踩过的坑OpenClaw 的openclaw.json对 JSON 格式要求很严多一个逗号、少一个引号都会导致容器启动失败。如果你手动改过这个文件改完先用python -m json.tool ~/.openclaw/openclaw.json校验一下格式再重启容器。这个习惯能帮你省掉很多“容器起不来但日志看不出原因”的时间。配置入口和文档都在接入文档里API Key 在 API Keys 页面管理。把 Base URL 改到 TaoToken 之后OpenClaw 的模型调用链路就和你本地直连一样稳定剩下的就是选个好用的模型 ID开始干活。
返回列表