在群晖NAS上配置OpenClaw:一次踩坑后的保姆级教程(TaoToken修订版)

发布时间:2026/10/7 7:00:23

在群晖NAS上配置OpenClaw:一次踩坑后的保姆级教程(TaoToken修订版) 1. 群晖NAS上跑OpenClaw我踩过的第一个坑OpenClaw 是一个开源的 AI 编码助手网关能把你常用的模型能力统一封装成 OpenAI 兼容接口适合自托管用户把编码助手、Agent 工作流接到自己的硬件上。群晖 NAS 常年开机、功耗低、Docker 支持成熟是跑 OpenClaw 的理想载体。但如果你第一次在 DSM 里直接点“容器管理器”新建容器大概率会在端口映射和权限上卡住——我试过用默认 bridge 网络跑结果 Web UI 一直转圈日志里反复报permission denied和address already in use。这篇教程面向已经有一台群晖 NAS、但第一次接触 OpenClaw 的运维和自托管用户。我会交付一份可直接复制的 Docker Compose 配置、完整的环境变量清单、端口映射表以及三步验证动作容器日志检查、Web UI 连通性测试、API Key 调用回显。整个过程不需要你懂太多 Docker 底层只要会 SSH 登录 DSM 就行。先说清楚 OpenClaw 在群晖上的定位它本身不训练模型而是一个请求转发与协议适配层。你给它一个上游模型的 Base URL 和 Key它对外暴露标准的/v1/chat/completions接口。群晖的 CPU 型号比如 Intel Celeron J4125 或 AMD Ryzen R1600跑这个网关绰绰有余真正吃资源的是你调用的上游模型。所以别担心 NAS 性能不够瓶颈在网络和配置。我用的环境是 DSM 7.2、Container Manager 24.x、OpenClaw 镜像ghcr.io/openclaw/openclaw:latest。下面所有命令和配置都基于这个组合实测通过。如果你用的是 DSM 6.2Docker 版本较老Compose 语法需要把version字段保留为3.8其余基本一致。2. TaoToken 前置准备拿到 Base URL 和 API KeyOpenClaw 要能工作必须有一个上游模型服务。这里我用 TaoToken 作为上游因为它提供 OpenAI 兼容接口接入 OpenClaw 只需要改 Base URL 和 Key 两个值。你需要在 TaoToken 控制台创建一个 API Key并确认你的账户有可用额度。第一步打开 TaoToken 官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册或登录后进入控制台。控制台地址是https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite。在控制台左侧找到“API Keys”点击创建新 Key。建议给这个 Key 起名openclaw-nas方便后续在群晖里识别。创建后立刻复制页面刷新后就看不到完整 Key 了。第二步确认 Base URL。TaoToken 的 API 入口是https://taotoken.net/api注意这个地址不带任何查询参数。OpenClaw 配置里填的 Base URL 就是它后面 OpenClaw 会自动拼接/v1/chat/completions。如果你填成https://taotoken.net/api/v1会变成/api/v1/v1/chat/completions直接 404。这个坑我在第一次配置时踩过日志里报404 page not found排查了半小时才发现是路径重复。第三步确认你要用的 Model ID。TaoToken 支持多种模型具体可用列表在文档里查https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite。常见的有claude-sonnet-4-20250514、gpt-4o等。OpenClaw 的环境变量里需要指定默认模型填错会导致请求返回model not found。这里给一个对照表把三个核心参数列清楚参数名填写值说明Base URLhttps://taotoken.net/api不带末尾斜杠不带 /v1API Keysk-开头的一串字符控制台创建后立即复制Model ID如claude-sonnet-4-20250514以文档最新列表为准如果你后续要做长期编码或 Agent 工作流可以了解 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite。它适合高频调用场景这里先不展开先把基础接入跑通。拿到这三个值后先别急着关控制台。你可以顺手在“模型对话”页面发一条测试消息确认 Key 本身可用https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite。如果那边能正常回显说明 Key 和额度没问题接下来群晖里的问题就纯粹是容器配置了。3. 可复制配置Docker Compose 与环境变量清单群晖 DSM 7.2 的 Container Manager 支持直接粘贴 Compose 文件创建项目。我建议用 SSH 登录 NAS 后操作因为需要提前建目录和改权限。假设你的 DSM 管理员账号是adminNAS IP 是192.168.1.100。先通过 SSH 登录ssh admin192.168.1.100然后创建 OpenClaw 的数据目录。群晖的 Docker 数据默认在/volume1/docker我们在这里建一个openclaw文件夹sudo mkdir -p /volume1/docker/openclaw/data sudo chown -R 1026:100 /volume1/docker/openclaw这里的1026:100是群晖 Docker 容器内常用的用户和组 ID避免容器写入时权限不足。如果你不确定可以先设成1000:1000后面根据日志调整。接下来创建 Compose 文件。在/volume1/docker/openclaw下新建docker-compose.ymlversion: 3.8 services: openclaw: image: ghcr.io/openclaw/openclaw:latest container_name: openclaw restart: unless-stopped ports: - 18789:18789 environment: - OPENCLAW_HOST0.0.0.0 - OPENCLAW_PORT18789 - OPENCLAW_API_KEYsk-你的TaoToken密钥 - OPENCLAW_BASE_URLhttps://taotoken.net/api - OPENCLAW_DEFAULT_MODELclaude-sonnet-4-20250514 - OPENCLAW_LOG_LEVELinfo - OPENCLAW_DATA_DIR/app/data volumes: - /volume1/docker/openclaw/data:/app/data healthcheck: test: [CMD, curl, -f, http://localhost:18789/health] interval: 30s timeout: 10s retries: 3端口映射表如下方便你对照检查容器端口宿主机端口协议用途1878918789TCPWeb UI 与 API 入口环境变量清单再单独列一遍方便你复制到别处变量名必填示例值说明OPENCLAW_HOST是0.0.0.0监听所有网卡OPENCLAW_PORT是18789服务端口OPENCLAW_API_KEY是sk-xxxTaoToken 密钥OPENCLAW_BASE_URL是https://taotoken.net/api上游地址OPENCLAW_DEFAULT_MODEL是claude-sonnet-4-20250514默认模型OPENCLAW_LOG_LEVEL否info日志级别OPENCLAW_DATA_DIR否/app/data数据持久化目录把sk-你的TaoToken密钥替换成真实 Key 后保存。然后在同目录下执行sudo docker-compose up -d如果你用的是 Container Manager 图形界面进入“项目”-“新增”选择“创建 docker-compose.yml”把上面内容粘贴进去路径选/volume1/docker/openclaw点击完成即可。图形界面和命令行效果一样但命令行更容易看到实时输出。启动后别急着访问 Web UI先看日志。这一步很关键因为很多配置错误在启动阶段就会暴露。4. 三步验证日志、Web UI、API 回显4.1 容器日志检查执行sudo docker logs -f openclaw正常启动的日志会依次出现levelinfo msgstarting openclaw gateway levelinfo msglistening on 0.0.0.0:18789 levelinfo msgupstream base url: https://taotoken.net/api levelinfo msgdefault model: claude-sonnet-4-20250514 levelinfo msghealth endpoint ready如果你看到permission denied写/app/data说明目录权限不对回到第 3 节改chown。如果看到address already in use说明 18789 端口被占用执行sudo netstat -tlnp | grep 18789找到占用进程或者把宿主机端口改成18790:18789。4.2 Web UI 连通性测试在浏览器打开http://192.168.1.100:18789。如果页面能加载出 OpenClaw 的界面说明容器网络和端口映射都正常。如果转圈或拒绝连接先在 NAS 本机执行curl -v http://localhost:18789/health返回{status:ok}说明服务本身没问题问题在群晖防火墙。DSM 的“控制面板”-“安全性”-“防火墙”里需要放行 18789 端口。另外如果你开了 QuickConnect 或反向代理注意不要和这个端口冲突。4.3 API Key 调用回显最后一步用 curl 模拟一次真实请求确认 OpenClaw 能把请求转发到 TaoToken 并拿回结果curl -X POST http://192.168.1.100:18789/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 回复两个字通了}], max_tokens: 20 }如果返回类似{ id: chatcmpl-xxx, object: chat.completion, choices: [{message: {role: assistant, content: 通了}}] }说明整条链路打通群晖容器 - OpenClaw - TaoToken - 模型 - 回显。如果返回 401检查 Authorization 头里的 Key 是否和控制台一致如果返回 404检查 Base URL 是否多写了/v1如果返回model not found检查 Model ID 拼写。这三步做完你的 OpenClaw 就已经在群晖上稳定运行了。后续你可以把它接到 Cline、Continue 等编码工具里Base URL 填http://192.168.1.100:18789/v1Key 填你在 TaoToken 创建的那个。5. 本篇常见错排查401、local proxy failed、reading choices这一节把我遇到的和社区反馈最多的报错集中列出来对照日志定位。401 Unauthorized最常见。日志里会显示upstream returned 401。原因通常是三个Key 复制时多了空格、Key 已被删除、或者你在 OpenClaw 环境变量里填的 Key 和请求头里的 Key 不一致。注意 OpenClaw 本身不校验 Key它只是透传所以 401 一定来自上游。解决方法是重新在控制台创建一个 Key直接粘贴不要手动输入。local proxy failed日志里出现local proxy failed: dial tcp 127.0.0.1:7890: connect: connection refused。这是 OpenClaw 尝试走本地代理但代理没开。检查你的环境变量里有没有HTTP_PROXY或HTTPS_PROXY如果有就删掉。群晖容器默认不走代理除非你手动加了。另外检查 Compose 文件里有没有多余的network_mode: host这会导致端口冲突和代理继承。reading choices日志里报error reading choices: unexpected end of JSON input。这通常发生在流式响应被截断时。OpenClaw 默认开启流式转发如果你的上游返回了非标准 SSE 格式就会解析失败。解决方法是在环境变量里加OPENCLAW_STREAMfalse强制非流式。或者检查 Model ID 是否支持流式有些模型需要显式传stream: true。OAuth 相关报错如果你看到oauth token expired或invalid_grant说明你误用了 OAuth 类型的 Key。TaoToken 的 API Key 是静态的sk-开头不需要 OAuth 刷新流程。检查控制台里创建的是“API Key”而不是“OAuth 应用”。容器反复重启docker ps看到状态是Restarting。执行sudo docker logs --tail 50 openclaw看最后几行。多数是环境变量缺失导致启动失败比如没填OPENCLAW_API_KEY。OpenClaw 在启动时会校验必填项缺失就直接退出。如果你用的是 CC Switch 或 Cline MCP 来管理多个模型端点记住三件套必须写全Base URL 填https://taotoken.net/apiKey 填sk-开头那串Model ID 填文档里的准确名称。少任何一个都会在切换时失败。Codex 的auth.json里也是同样三个字段格式是{ base_url: https://taotoken.net/api, api_key: sk-你的密钥, model: claude-sonnet-4-20250514 }Claude Code 如果要接入在 settings 里配置ANTHROPIC_BASE_URL为https://taotoken.net/apiANTHROPIC_API_KEY填你的 Key。注意 Claude Code 走的是 Anthropic 协议OpenClaw 已经做了协议转换所以直接填就行。具体接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite。6. 跑通之后把 OpenClaw 接进你的编码工作流容器跑起来只是第一步。真正提升效率的是把它接到你每天用的工具里。我现在的用法是群晖上的 OpenClaw 作为统一入口家里几台电脑的 Cline、Continue、甚至手机上的快捷指令都指向http://192.168.1.100:18789/v1。这样我只需要在 TaoToken 控制台管理一个 Key换模型时改 OpenClaw 的环境变量重启即可不用每台设备都改配置。如果你要长期跑编码任务或 Agent 工作流建议看一下 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite。它针对高频调用做了额度优化比按量计费更适合每天跑几十次补全的场景。创建和管理 Key 仍然在 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite。最后分享一个实用技巧群晖的 Container Manager 支持“自动启动”在容器设置里勾选“启用自动重新启动”这样 NAS 断电恢复后 OpenClaw 会自己起来。另外把/volume1/docker/openclaw/data加入 Hyper Backup 的备份列表里面存的是会话日志和配置换 NAS 时直接恢复就行。端口方面如果你不想记 18789可以在 DSM 的反向代理里绑一个域名比如openclaw.yourdomain.com指向localhost:18789然后申请 Lets Encrypt 证书这样外网访问也是 HTTPS。不过反向代理的配置涉及群晖的 Web Station步骤较多这里先不展开等你把基础链路跑稳了再折腾。
延伸阅读

更多相关文章

2026/10/7 7:55:26

ESP32选型避坑指南:从SoC、模组到料号的完整链路解析

1. 从一次采购翻车说起:为什么“ESP32”这四个字远远不够前两年帮一个做智能硬件的团队做技术顾问,他们硬件负责人拿着BOM表跟我说:“这颗主控就用ESP32,便宜又好用。”结果采购按“ESP32”去下单,供应商发回来的是一盘…

2026/10/7 7:55:26

模型点三道菜,回喂被拒 400

「手写中文版 claude code」教学系列:codeAgent 是我从零手写的 claude code 复刻——不套壳不翻译,从界面到 Agent 主循环一行行实现,注释全是中文大白话,适合当 Agent 开发教材从头读到尾。 上一课治好了工具的"钱袋子&quo…

2026/10/7 7:55:26

常见组学技术笔记:从 DNA 基因组学到 Multi-omics

1. 前言 组学(Omics)技术——从 DNA、RNA、蛋白质乃至表观遗传等多个层面,全面揭示生命活动的分子机制。内容:系统梳理 DNA 基因组学、Chromatin、RNA 转录组学、蛋白质组学以及 Multi-omics 五大方向的核心概念、技术手段与应用场…

2026/10/7 7:55:26

Agent Skills 实战:从 npx 安装到 GKE 云端部署与避坑指南

1. 从“skills”这个标题说起:它到底指什么“skills”这个词单独拎出来,放在技术社区里,十有八九不是指人类技能,而是指Agent Skills——一套让 AI 智能体(Agent)具备可插拔能力的机制。我第一次看到这个标…

2026/10/7 7:50:25

运动营养代工怎么选?ODM 研发能力决定产品品质

国内运动营养市场持续扩容,大量品牌方选择代工模式推出蛋白粉、肌酸等运动补剂。很多品牌方与普通消费者在挑选代工工厂时,只关注报价和交付速度,忽略工厂的底层研发实力。市面上不少小型代工企业仅能做简单贴牌加工,没有独立配方…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

ESP32免重刷固件:浏览器直接修改NVS键值实现WiFi配置更新

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

SAP HANA查询结果导出CSV:避开乱码、性能与权限的实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

数字后端Placement阶段Density与Congestion控制实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑