NAS养虾(OpenClaw)对接本地大模型?极空间 Docker 跑通 Ollama 的 TaoToken 配置记录

发布时间:2026/10/12 17:47:23
NAS养虾(OpenClaw)对接本地大模型?极空间 Docker 跑通 Ollama 的 TaoToken 配置记录
1. 极空间 NAS 上 OpenClaw 对接 Ollama 的真实困境先说结论极空间 NAS 上用 Docker 跑 Ollama再让 OpenClaw 走本地大模型这条路是通的但坑集中在两个地方——服务发现和鉴权配置。我前后折腾了三个晚上把能踩的坑基本踩了一遍这篇记录就是给同样想在 NAS 上养虾又不想烧云端 token 的朋友一个可复制的路径。极空间的应用商店里其实已经集成了 Ollama 和 OpenClaw但商店版本的 OpenClaw 对 Ollama 的原生支持不够友好我试过直接在openclaw.json里手写模型地址容器起不来日志里也没给出明确原因。所以最终方案是Ollama 用商店版省事版本也够新OpenClaw 用 Docker 部署官方最新镜像两者通过 NAS 内网地址通信。这里有个关键认知NAS 上的 Ollama 容器和 OpenClaw 容器虽然都在同一台机器上但它们默认不在同一个 Docker 网络里容器名互相解析不了。所以 Base URL 不能写http://ollama:11434必须写 NAS 的局域网 IP 加映射端口。这一点如果没意识到会一直卡在连接超时上。另一个容易被忽略的是鉴权。Ollama 默认不校验 API Key但 OpenClaw 的配置向导里会要求填一个 Key随便填一个非空字符串即可留空反而可能触发校验失败。这个细节官方文档没写是我对着报错日志试出来的。适合谁看手里有极空间 Z423 或同级别 NAS至少 16GB 内存、能跑 7B 量化模型、已经装好 Docker、想让 OpenClaw 在本地模型和云端模型之间灵活切换的人。如果你只是想体验一下不想折腾 Docker 网络那商店版凑合用也行但功能会受限。2. TaoToken 前置准备让 OpenClaw 的模型调用有统一出口在正式配置之前需要先把 TaoToken 这一层准备好。它的作用不是替代 Ollama而是给 OpenClaw 提供一个统一的模型接入层——本地模型走 Ollama云端模型走 TaoToken两边在 OpenClaw 里用同一套配置格式管理切换的时候不用改底层代码。我试过直接在 OpenClaw 里硬编码 Ollama 地址能用但一旦想加云端模型做兜底配置就会变得很乱。TaoToken 的价值在于把模型来源抽象成 Base URL Key Model ID 三件套本地和云端只是这三件套的值不同。具体操作先到 TaoToken 官网注册账号然后进控制台创建 API Key。这个 Key 在后续配置 OpenClaw 的云端模型时会用到。如果你只打算用本地 Ollama这一步可以跳过但建议还是备着因为 OpenClaw 的某些 Agent 功能在本地模型上跑不动需要云端模型兜底。TaoToken 的 API 地址是https://taotoken.net/api这个地址在 OpenClaw 的配置里会作为云端模型的 Base URL。注意不要加多余的路径OpenClaw 会自己拼接/v1/chat/completions这类端点。模型 ID 方面TaoToken 支持主流云端模型具体列表可以在控制台查看。我常用的是 Claude 系列做复杂推理本地 Ollama 跑 qwen2.5:7b 做日常对话两者在 OpenClaw 里通过model命令切换。这里要提醒一点TaoToken 的 Key 不要写进 OpenClaw 的公开配置文件里尤其是如果你把 NAS 的 Web UI 暴露在公网。建议用环境变量或者 OpenClaw 的密钥管理功能。我自己的做法是在 Docker Compose 里通过env_file注入配置文件里只写变量名。另外TaoToken 的 Coding Plan 适合长期跑 Agent 任务的场景如果你打算让 OpenClaw 做代码生成或者自动化流程可以考虑。普通对话用按量计费就够了。3. 可复制配置Docker Compose 与 OpenClaw 模型设置这一节是核心直接给可复制的配置片段。先确认你的 Ollama 容器已经在运行并且端口映射到了 NAS 宿主机。极空间商店版 Ollama 默认端口是 11434但如果你改过以实际为准。在极空间的 Docker 管理里找到 Ollama 容器确认它的端口映射。然后在 OpenClaw 的 Docker Compose 文件里确保两个容器在同一个自定义网络下或者直接用 NAS 的局域网 IP 通信。我推荐后者简单直接。OpenClaw 的 Docker Compose 片段如下注意替换NAS_IP和OLLAMA_PORTversion: 3.8 services: openclaw: image: openclaw/openclaw:latest container_name: openclaw restart: unless-stopped ports: - 3000:3000 environment: - OPENCLAW_GATEWAY_MODElocal - TAOTOKEN_API_KEY${TAOTOKEN_API_KEY} volumes: - ./openclaw-data:/home/node/.openclaw extra_hosts: - host.docker.internal:host-gatewayextra_hosts这一行是关键它让容器内可以通过host.docker.internal访问宿主机也就是 NAS 本身。这样 Ollama 的 Base URL 就可以写成http://host.docker.internal:11434/v1不用硬编码 IP换网络环境也不用改。如果你更习惯用 IP把host.docker.internal换成 NAS 的局域网 IP 即可比如http://192.168.1.100:11434/v1。注意末尾的/v1不能少Ollama 的 OpenAI 兼容接口就在这个路径下。接下来是 OpenClaw 的模型配置。进入 OpenClaw 容器终端执行su node stty rows 40 cols 120 openclaw configure向导会依次问几个问题。网关位置选Local。配置项选Model。模型提供商选Ollama。然后Ollama Base URLhttp://host.docker.internal:11434/v1Ollama modeLocalModels in/model picker选ollama-local/qwen2.5:7b配置完成后选Continue然后执行openclaw gateway restart。如果你还想加 TaoToken 的云端模型作为兜底在同一个配置向导里选Custom或OpenAI Compatible填Base URLhttps://taotoken.net/apiAPI Key你的 TaoToken KeyModel ID比如claude-3-5-sonnet以控制台实际为准这样 OpenClaw 里就有两个模型可选用model命令切换。4. 验证请求curl 检查模型列表与对话连通性配置完别急着在 Web UI 里试先用 curl 确认 Ollama 的接口是通的。在 NAS 的 SSH 终端里执行curl http://localhost:11434/v1/models如果返回 JSON 列表包含qwen2.5:7b和llama3:latest说明 Ollama 的 OpenAI 兼容接口正常。如果返回 404检查端口和/v1路径。然后测试对话接口curl http://localhost:11434/v1/chat/completions \ -H Content-Type: application/json \ -d { model: qwen2.5:7b, messages: [{role: user, content: 你好用一句话介绍你自己}], stream: false }正常会返回一个 JSONchoices[0].message.content里就是模型的回答。如果返回model not found说明模型名写错了用ollama list确认实际名称。接下来验证 OpenClaw 容器内能否访问到 Ollama。进入 OpenClaw 容器终端docker exec -it openclaw bash curl http://host.docker.internal:11434/v1/models如果这一步不通说明extra_hosts没生效或者 NAS 的防火墙拦了。极空间的 Docker 网络有时候会有隔离检查一下容器是否在同一个 bridge 网络下。最后在 OpenClaw 的 Web UI 里发一条消息观察响应。如果模型显示为ollama-local/qwen2.5:7b但回答内容明显是云端模型的风格说明配置没生效需要重新跑openclaw configure并确认保存。实测下来qwen2.5:7b 在极空间 Z423 上的直连速度大约 4.7 tokens/s通过 OpenClaw 会降到 2-3 tokens/s因为多了一层代理开销。简单问答可以接受复杂任务建议切云端模型。5. 本篇常见错排查401、local proxy failed 与 reading choices这一节列几个我实际遇到的报错和解决方式。报错一401 Unauthorized如果你在 OpenClaw 里配了 TaoToken 的云端模型但 Key 填错或者过期会返回 401。检查TAOTOKEN_API_KEY环境变量是否注入成功在容器内执行echo $TAOTOKEN_API_KEY确认。如果为空检查 Docker Compose 的env_file路径。报错二local proxy failed这个报错通常出现在 OpenClaw 尝试连接 Ollama 但网络不通的时候。先确认host.docker.internal能否解析在容器内执行ping host.docker.internal。如果不通把 Base URL 换成 NAS 的局域网 IP。另外检查 Ollama 容器是否在运行端口是否被占用。报错三reading choices 时出错这个报错说明请求发出去了但返回的 JSON 结构不符合 OpenClaw 的预期。常见原因是 Ollama 的版本太旧OpenAI 兼容接口的返回格式有差异。极空间商店版 Ollama 是 0.18.3支持得比较好。如果你是自己拉的旧版镜像建议升级。报错四OAuth 相关错误如果你在 OpenClaw 里配置了需要 OAuth 的云端模型但没完成授权流程会卡在这里。TaoToken 的 API Key 模式不需要 OAuth直接填 Key 即可。如果用的是其他需要 OAuth 的服务按提示完成授权。报错五模型切换后不生效OpenClaw 的模型配置有时候会缓存改完配置后必须执行openclaw gateway restart。如果还不生效检查openclaw.json里是否有多个模型配置冲突。建议在配置向导里操作不要手改文件。另外如果你在 OpenClaw 里同时配了 Ollama 和 TaoToken切换模型用model ollama-local/qwen2.5:7b或model claude-3-5-sonnet。切换后发一条测试消息确认。6. 长期使用建议与 CTA本地模型跑日常对话云端模型做复杂任务这个组合在 NAS 上是最实用的。Ollama 的 qwen2.5:7b 中文能力够用但推理深度有限遇到需要多步思考的问题切到 TaoToken 的云端模型会顺畅很多。如果你打算长期跑 Agent 任务比如让 OpenClaw 自动处理文件或者定时执行脚本建议用 TaoToken 的 Coding Plan额度更划算。API Key 在控制台创建接入文档里有详细的 Base URL 和 Model ID 说明。模型对话功能可以在 TaoToken 的模型对话页面直接测试确认 Key 和模型 ID 没问题再写进 OpenClaw 配置。这样排错的时候能快速定位是 TaoToken 侧的问题还是 OpenClaw 侧的问题。最后提醒一点NAS 的散热和功耗要考虑。Ollama 跑推理时 CPU 占用会飙升极空间 Z423 的散热还行但长时间高负载建议加个风扇。如果只是偶尔用问题不大。