ARTICLE · 1284235
AI智能体 · NAS 常驻服务 · 端到端实践 飞牛NAS部署Hermes Agent全攻略|DeepSeek接入、微信对话与安全远程访问
AI智能体 · NAS 常驻服务 · 端到端实践

飞牛NAS部署Hermes Agent全攻略|DeepSeek接入、微信对话与安全远程访问
把一台常开的 NAS,从“文件存储设备”升级为可持续运行的智能助手:容器化部署、模型连接、微信私聊、远程管理、访问鉴权与故障恢复,沿着一条可以复核的工程链路逐项完成。
◆ 阅读路径 建议先完成本地 CLI 对话,再启用微信消息网关;公网管理入口最后开通。
01 / 导读
开篇先看结果:这次究竟能得到什么?
关键词标签: #飞牛NAS #HermesAgent #AI智能体 #DeepSeek #Docker #微信机器人 #fnOS #内网穿透 #公网访问 #运维安全
摘要
飞牛 NAS 也能成为 24 小时在线的 AI 助手。本文以 Hermes Agent 官方 Docker 镜像为主线,串起 SSH 与 Docker 检查、持久化部署、DeepSeek API 接入、CLI 对话验证、微信 iLink 扫码配对、Dashboard 认证,以及 cpolar 固定 HTTPS 公网入口。针对 ARM64 兼容、模型名变化、微信普通群聊限制、新版鉴权机制等易错点,给出操作命令、网络架构图、身份保护方案、备份升级步骤和故障定位清单。全文按环境、模型、消息、远程、运维逐层验收,帮助读者把 NAS 上的 Hermes 从启动状态真正变成可管理、可恢复的长期服务。
读完后应当具备的五个能力
里程碑 | 可检查的结果 | 失败时优先看什么 |
环境通过 | Docker 和 Compose 能正常响应 | 架构、权限、空间 |
模型通过 | Hermes CLI 能完成真实问答 | API Key、模型名、网络 |
消息通过 | 微信向 iLink 机器人私聊有响应 | 配对、网关、账号 |
界面通过 | 9119 页面要求正确登录 | 监听、映射、认证 |
远程通过 | 外部 HTTPS 入口完成双重鉴权 | 域名、隧道、回调 |
◆ 先讲清一个误区 图中出现“预期结果”的地方均属于操作验收指引,不代表作者已经在你的设备上执行或测得同样结果。
02 / 全貌
从 NAS 到手机:拆开一条完整的数据链路
Hermes 在 NAS 上运行;DeepSeek 负责推理;微信与 Web 管理界面是两个独立入口。

图 1|本教程采用的服务关系示意:模型 API、消息网关和控制台职责彼此分离。
为什么必须把四个层次分开?
如果容器正在运行,只能证明进程启动;如果 CLI 能回答问题,才能证明模型通道可用;如果微信出现回复,才意味着消息适配器和访问策略生效;如果公网地址能打开登录页,也不代表真实身份已经得到校验。排障时逐层定位,比反复重装容器更高效。
组成 | 运行位置 | 职责 |
Hermes Gateway | NAS 容器 | 接收消息、调用 Agent、执行任务 |
DeepSeek | 远程模型服务 | 生成与推理,按实际调用计费 |
微信 iLink | 外部消息通道 | 私聊消息的接收和回传 |
Web Dashboard | NAS:9119 | 配置、会话、状态与凭据管理 |
03 / 环境
先检查机器是否真的适合跑 Hermes
两分钟检查比两小时返工更划算。

图 2|部署前的四项最低核验:以真实命令输出为准。
项目 | 建议检查方式 | 判断标准 |
系统架构 | uname -m | x86_64 或 aarch64 对应官方 amd64/arm64 |
容器服务 | docker version | 客户端与服务端都可用 |
编排命令 | docker compose version | Compose V2 可正常调用 |
存储 | df -h;df -i | 数据盘有足够空间与 inode |
时间 / DNS | date;getent hosts api.deepseek.com | 时钟正常、域名能解析 |
Hermes 的官方稳定镜像构建覆盖 amd64 与arm64,但“存在目标架构镜像”不等于“低配设备任意工具都能流畅运行”。模型推理走 API,浏览器自动化、代码执行和多并发任务仍需要本机 CPU、内存和可写空间。
◆ 低配设备提示 建议从纯文本问答、微信私聊和轻量工具开始,暂不启用浏览器自动化及高并发任务。
04 / 路线
官方镜像还是 fnOS原生包?先做选择

图 3|可维护性优先:本文从官方 Docker 镜像出发。
对比项 | 官方 Docker | 社区原生应用包 |
镜像 / 应用来源 | Nous Research 官方镜像 | 不同社区维护项目 |
维护方式 | Compose 文件 + 数据目录 | 应用中心 / 包管理界面 |
迁移与备份 | 挂载目录直接备份 | 需确认各项目数据位置 |
变更透明度 | 命令与环境变量可审计 | 取决于实际项目实现 |
适合对象 | 希望长期可控的 NAS 用户 | 希望图形化体验的用户 |
社区已有面向 fnOS 的原生 Hermes 应用包,部分项目增加了快捷面板与多平台管理。由于它们的内部目录、更新行为和内置组件可能与官方 Docker 镜像不同,以下所有命令只对“官方镜像 + 本文目录结构”成立。不要把两条路线的配置文件混用。
本文采用的统一约定
部署目录设为 ~/apps/hermes,数据持久化目录设为 ~/apps/hermes/data,容器名固定为 hermes,Dashboard 在 NAS 本机监听并映射到 127.0.0.1:9119。示例中的用户、局域网 IP、域名均需替换为自己的真实值。
05 / 准备
在飞牛 NAS 启用 SSH 与 Docker
第一步:打开 SSH,确认有访问权限
进入飞牛设置界面,在“SSH”中启用服务。首位管理员通常有 SSH 权限;其他管理员需检查自己的授权。把 SSH 当作维护入口,不要为了方便把它映射至公网。
在电脑终端连接 NAS,示例参数请替换
ssh <NAS用户名>@<NAS局域网IP> |
第二步:检查Docker 与存储
以下命令都在 NAS 的 SSH 会话执行
docker version |
看到 docker version 只有Client 而没有 Server,通常不是“安装成功”,而是 Docker 引擎未启动或当前用户无操作权限。应先回到应用管理界面检查 Docker 状态,不要通过修改 docker.sock 为 666 来绕过权限。
第三步:记录基线
字段 | 记录方式 |
NAS 架构 / 系统版本 | uname -m;系统设置页面 |
Docker / Compose | docker version;docker compose version |
NAS 内网 IP | 从系统或路由器查看 |
数据卷位置 | 确认部署所在存储空间和备份位置 |
06 / 持久化
先放好数据,再运行容器
Hermes 的官方镜像使用 /opt/data 作为持久化目录。API Key、会话、技能、日志和消息平台凭据必须随宿主目录保留;删除容器不应等于删除身份和历史记录。
下载前先确认镜像来自官方仓库
mkdir -p "$HOME/apps/hermes/data" |

图 4|密钥生命周期:不要把真实值复制进文章、截图或共享配置。
目录结构建议
示意目录:实际路径以部署账号为准
~/apps/hermes/ |
07 / DeepSeek
让 Hermes 真正调用模型,而不只是容器运行
第一步:准备独立的模型密钥
进入 DeepSeek 平台的 API Key管理页面,为 NAS 服务创建单独密钥。建议独立命名、设置用量提醒,并避免将密钥与个人脚本混在一起。密钥属于服务凭证,不要写入公开教程、Compose 源文件或截图。
平台地址:https://platform.deepseek.com/api_keys
第二步:运行官方交互式初始化
首次配置:按向导选择 DeepSeek 并录入密钥
cd "$HOME/apps/hermes" | |||
向导字段 | 应填写内容 | 注意点 | |
Provider | DeepSeek | 选择官方提供商 | |
Base URL | https://api.deepseek.com | 不要加多余路径 | |
API Key | 刚创建的专用密钥 | 终端输入,不截图 | |
模型名称 | 以当前控制台 / 文档为准 | 官方示例为 deepseek-v4-pro | |
截至本文核对时,DeepSeek 的Hermes 集成页示例使用 deepseek-v4-pro。旧教程中常见的 deepseek-chat 可能与新的模型列表、映射或账号可用范围不同;最终以向导展示与平台文档为准,不要把某个旧名称当成永久不变的标准。
◆ 关键验证 若向导因网络、余额或模型名中断,应优先解决这些具体问题,暂时不要配置微信。
08 / 首次对话
模型是否真的成功?用可复核的测试回答
用同一个数据卷启动交互式 Hermes
cd "$HOME/apps/hermes" |
建议发送三条最小测试,而不是马上要求自动操作文件。①“用两句话介绍自己”;②“把 8 个苹果分给 4 人,每人几个?”;③“列出执行一个 NAS 自动化任务前应确认的三项权限”。如果出现模型回答,并且没有认证错误、配额错误或工具调用异常,就完成了模型层验证。

图 5|从容器运行到微信回复,按“每一层有独立信号”的方式验收。
◆ 不要误判 AI 回答“我使用了某个模型”并不能证明实际模型路由。真实路由要从 Hermes 配置和模型提供商调用记录交叉确认。
09 / Compose
把手工配置固化成可维护服务
前面已经跑通 CLI,下面再启动常驻Gateway 与 Web Dashboard。为避免误暴露,9119先仅绑定宿主机回环地址,再通过 SSH 转发访问。
生成本地访问使用的密码与会话签名密钥
cd "$HOME/apps/hermes" |
保存为 ~/apps/hermes/compose.yaml
services: |
检查语法并启动:不要在公开场合打印展开后的 compose 配置
docker compose config --quiet |
10 / Dashboard
在本地访问 9119,同时理解新版鉴权机制
通过 SSH 隧道访问管理界面
因为 Compose 使用127.0.0.1:9119 映射,局域网电脑直接访问 NAS-IP:9119 可能被拒绝,这是我们刻意设置的安全边界。保持 NAS SSH 会话可用,在自己的电脑上另开终端执行:
该命令运行在访问者电脑,而不是 NAS
ssh -L 9119:127.0.0.1:9119 \ |
然后在同一台电脑打开 http://127.0.0.1:9119 。页面应要求登录;用户名为 nasadmin,密码在 NAS 部署目录 .env 中。切勿把整个 .env 的内容粘贴到聊天窗口。
为什么一些旧教程的参数已经失效?
新版 Hermes 在非回环地址启动Dashboard 时,会强制启用身份认证;旧式 HERMES_DASHBOARD_INSECURE 参数不再负责绕过安全门禁。若没有有效认证提供方,服务可能拒绝启动。此时正确做法是配置认证,而不是反复尝试关闭它。
访问方式 | 适用场景 | 推荐保护 |
SSH 本机转发 | 个人维护 | 本地密码或默认回环 |
私有组网访问 | 多设备远程 | 强登录 + 最小设备授权 |
公开 HTTPS 域名 | 确需公网入口 | OAuth / OIDC + 隧道限制 |
11 / 微信接入
开启 Weixin 通道:先扫码,再验证私聊

图 6|扫码建立 iLink 机器人身份,私聊与配对必须单独验证。
Hermes 的 Weixin 适配器使用 iLink Bot API,以长轮询方式收消息,因此微信消息回传本身不要求公网端口,也不需要自行搭建回调 Webhook。扫码连接的是 iLink 机器人身份,不能简单理解为“把个人微信账号变成可被脚本完全控制的账号”。
步骤一:暂停当前网关,运行微信配置向导
在配置向导中选择 Weixin / 微信
cd "$HOME/apps/hermes" |
手机扫码并确认授权后,向导会自动保存账号信息及连接凭据。由于安装版本不同,界面文案可能变化,应以实际出现的 Weixin 入口为准。若镜像缺少相关依赖,应按该版本官方 Weixin 指南补全,避免在容器中随意安装未核实的第三方补丁。
步骤二:重启网关并观察状态
先确认连接状态和待审批用户
docker compose up -d |
12 / 消息权限
配对审批才是防止陌生人调用智能体的关键
为什么建议从私聊 + 配对模式开始?
Hermes 能执行工具与访问工作区,不应默认允许任意消息发送者调用。最稳妥的顺序是先扫码建立机器人身份,再让自己的微信账号向机器人私聊,收到一次性配对提示后,由 NAS 管理员在容器内审批。 如果配置向导没有提供策略选项,可在部署目录data/.env 中设置 WEIXIN_DM_POLICY=pairing 与 WEIXIN_GROUP_POLICY=disabled,重启网关后再验收;注意data/.env 是 Hermes 的凭据文件,区别于Compose 文件旁用于变量替换的 .env。
配对码是动态生成的,不能使用示例值
docker exec hermes hermes pairing list | |||
微信设置 | 建议状态 | 原因 | |
私聊策略 | pairing 或明确 allowlist | 未知用户不能直接调用 | |
群聊策略 | disabled | 大多数 iLink 身份不稳定支持普通群消息 | |
批准的用户 | 仅所需账号 | 降低无关消息和滥用风险 | |
连接凭据 | 保存在数据卷 | 重建容器后无需重复配置 | |
普通微信群中的 @ 提醒能否投递,取决于iLink 身份与消息能力。官方明确提醒:很多 iLink 机器人不会收到普通群消息。即使选项中存在“开启群聊”,也不能据此承诺群聊可用;优先把私聊链路验证透彻。
◆ 重要说明 微信连接状态、账号绑定以及平台可用能力都可能随服务端变化;遇到群聊失效,先核对 iLink 能否下发群事件。
13 / 应用场景
从“你好”到任务:三类适合常驻的低风险工作
场景一:信息整理
微信发送:“把下面四段文字整理成一份分点摘要,保留关键数据和待办事项;不确定的地方请单独列出。”优先在消息正文中提供测试材料,避免第一次接入就授予整个共享盘的读写权限。
场景二:日常计划
发送:“根据这份清单整理明天三项优先任务,并说明每项的完成条件。”这是最适合检验多轮上下文、输出格式和消息长度的任务之一。
场景三:运行状态问答
先通过只读工具或明确可访问的数据目录提供状态信息,再发送:“请解释这段日志中最值得关注的三个异常”。没有真实日志时,模型只能给一般建议,不能把推测当作机器现状。

图 7|用同一套四层验收方法复测:应用场景不应绕过基本连通性检查。
验证目标 | 可观察的判据 | 不通过时 |
连续两轮对话 | 第二轮理解前文上下文 | 检查会话与消息限制 |
结构化输出 | 能返回清晰分点或表格 | 缩短请求并减少工具 |
权限边界 | 未授权任务被拒绝 | 检查权限与工作目录 |
14 / 公网访问
为什么远程可用之前必须先做认证设计?

图 8|公开访问至少包含 HTTPS、身份验证、应用鉴权和最小暴露。
Dashboard 是高权限管理界面,能够查看与修改配置,可能触及 API Key、历史消息和工具行为。隧道平台提供“可达路径”,不等于提供了完整的账号权限控制。新版 Hermes 官方对公开部署明确建议 OAuth 或自建 OIDC;单一用户名密码方式主要适用于可信局域网或 VPN。
方案 | 外部地址 | 适合程度 | 认证建议 |
SSH 转发 / 私有组网 | 非公开入口 | 首选个人管理 | 设备授权 + 应用登录 |
cpolar HTTP 隧道 | 公开 HTTPS 地址 | 有公开入口需求时 | Hermes OAuth/OIDC |
Cloudflare Tunnel + Access | 公开 HTTPS 地址 | 需要更细的准入策略 | Access + Hermes OAuth/OIDC |
如果只是自己偶尔在外面管理,优先选私有组网而不是发布公开入口。如果确实需要固定公网域名,应先完成身份提供方的配置和回调验证,再开启隧道。
15 / cpolar
让固定 HTTPS 地址指向本机的 9119 端口

图 9|公网请求经隧道抵达 NAS 本机端口,应用自身仍必须完成登录。
安装前确认
根据 cpolar 官方安装说明,Linux 客户端提供系统服务与 9200 管理界面。应从其官网选择与你的 CPU 架构及系统兼容的发布包,阅读安装脚本内容并确认来源后再执行;脚本细节与可用套餐可能发生变化。
官方说明:https://www.cpolar.com/docs
客户端已安装后核查版本和服务状态
cpolar version |
创建隧道:只映射需要的Web 管理端口
登录 cpolar 管理界面,创建 HTTP 隧道;目标地址选择 NAS 本机 127.0.0.1,目标端口为 9119。域名使用平台分配的 HTTPS 地址;如需稳定入口,再按订阅支持情况申请固定二级域名。不要同时映射 SSH 管理端口、Docker API 或整个 NAS 控制面板。
可用性与安全应当分别验证
先从外部网络检查 HTTPS 地址是否能出现登录页;随后检查是否跳转到 Hermes 配置的 OAuth/OIDC 认证流程。若未配置身份提供方,或者登录页无法正确回调,应暂停公开隧道,不要把“已打开页面”当成可交付状态。
16 / 公网鉴权
用 OAuth / OIDC 为公开Dashboard 设置真实身份
需要配置的三个核心值
参数 | 示例值 | 作用 |
公开访问域名 | https://hermes.example.com | 稳定的 HTTPS 地址 |
OIDC Issuer | https://auth.example.com/… | 身份提供方发行者地址 |
OIDC Client ID | hermes-dashboard | 身份应用标识 |
选择自建 OIDC 时,在身份提供方中创建支持授权码 + PKCE 的公开客户端,并将https://hermes.example.com/auth/callback 加入允许的回调地址。然后在Hermes 配置中填写准确的 Issuer、Client ID 与公开 URL。身份提供方必须只允许你的受信任账号登录该应用。
示例地址不可直接使用;应替换为真实域名与身份平台参数
# 以下为 Compose environment 中的示例配置项 |
迁移到公开 OAuth/OIDC 认证时,应从Compose 中移除之前用于局域网测试的 BASIC_AUTH_USERNAME、BASIC_AUTH_PASSWORD、BASIC_AUTH_SECRET,避免同时保留不适合公网的弱登录通道。更新后执行 docker compose up -d,并从未登录浏览器验证其是否要求身份认证。
◆ 反向代理注意 若启用了中间代理,按 Hermes 文档只信任实际代理的具体 IP / 有限 CIDR,不要全网信任转发头。
17 / 运维
更新之前,先备份;重建之后,再做端到端复测

图 10|推荐顺序:数据备份 → 拉取镜像 → 重建容器 → 四层验证。
最小可恢复备份流程
备份含敏感凭据,务必限制访问并设置额外离线副本
cd "$HOME/apps/hermes" |
升级前先记录旧版本,再更新
如需长期可复现,稳定后固定版本号或镜像 Digest
docker image inspect nousresearch/hermes-agent:latest \ |
更新不只是容器状态变为 Running:请重新测试 CLI 问答、微信连接、Dashboard 登录和远程回调。出现不兼容时先停止服务,回到原镜像并从备份恢复受影响的数据;不要直接执行 docker compose down -v 或删除 data 目录。
18 / 故障定位
十类常见问题,按最短路径排查

图 11|按接入链路的物理顺序定位,而不是无差别重装。
现象 | 常见原因 | 优先检查 |
docker 无法执行 | 服务未启动 / 权限不足 | docker version;当前用户授权 |
拉取镜像失败 | 网络 / DNS / 镜像源 | 架构、解析、仓库连接 |
容器反复重启 | 配置缺项 / 权限冲突 | docker compose logs |
9119 不显示页面 | 监听 / 端口映射 | compose ps;绑定地址 |
页面拒绝启动 | 非回环地址缺少认证 | Dashboard 认证配置 |
DeepSeek 401 | 无效或错误密钥 | 凭据与账单状态 |
DeepSeek 404 | 模型名或接口不符 | Provider 和实际模型名 |
微信扫码不成功 | 账号 / 网络 / 凭据冲突 | 重新进入 gateway setup |
微信私聊不回复 | 未配对或网关未连接 | pairing list;网关日志 |
公网登录回调失败 | 域名 / 公共 URL 不一致 | OIDC 回调与代理设置 |
19 / 深度排错
几条真正有用的诊断命令与处理边界
容器与资源
命令在项目目录执行
docker compose ps |
若日志提示 Permission denied,优先核对 data 目录所属用户与 PUID/PGID,不能简单把整个目录改成 777。Hermes 目录包含密钥与消息历史,扩大读写权限会同时扩大数据泄露范围。
网络和接口
HTTP 响应不等于 API 调用成功,需结合模型真实请求判断
getent hosts api.deepseek.com |
401 通常先查认证,403 先查权限策略,404 先查接口与模型名,连接超时先看 DNS、路由和代理。公网回调问题应检查公开 URL、HTTPS、授权服务器回调白名单,以及反向代理信任范围。
恢复服务时遵循三条底线
·不删除仍有价值的数据卷;不直接覆盖带有历史会话的持久化目录。
·不在问题尚未定位时反复重扫微信或重建新的 iLink 身份。
·不把 API Key、.env、完整访问日志和真实配对码发布到公开环境。
20 / 最终验收
一张清单收尾:这台NAS 是否已经具备长期服务能力?
验收项 | 通过时应看到什么 | 检查结果 |
架构 / Docker | CPU 匹配、Docker 与 Compose 正常 | □ 通过 □ 待处理 |
数据目录 | /opt/data 与宿主目录正确挂载 | □ 通过 □ 待处理 |
模型请求 | CLI 能返回真实模型回复 | □ 通过 □ 待处理 |
Dashboard | 本地 9119 登录成功 | □ 通过 □ 待处理 |
微信私聊 | 机器人接收并回复消息 | □ 通过 □ 待处理 |
访问策略 | 未知用户被拒绝或要求配对 | □ 通过 □ 待处理 |
公网入口 | HTTPS、OAuth/OIDC、回调均通过 | □ 通过 □ 不启用 |
升级恢复 | 数据备份可用、旧版本可回退 | □ 通过 □ 待处理 |
常见问题的最后三个答案
问:没有独立显卡还能跑吗?答:模型使用外部 API 的情况下,Hermes 可在适用架构的普通 NAS 上承担 Agent 与网关工作;浏览器工具与高并发任务另行评估。问:微信是否必须开放公网端口?答:iLink 使用长轮询,消息本身不需要。问:只有 cpolar 的密码保护够不够?答:公开 Dashboard 仍应采用符合官方建议的 OAuth/OIDC 身份验证。
文档与核对入口
Hermes 官方 Docker:https://hermes-agent.nousresearch.com/docs/user-guide/docker
Hermes 微信连接:https://hermes-agent.nousresearch.com/docs/user-guide/messaging/weixin
Hermes Web Dashboard:https://hermes-agent.nousresearch.com/docs/user-guide/features/web-dashboard
DeepSeek 集成:https://api-docs.deepseek.com/quick_start/agent_integrations/hermes/
飞牛帮助中心:https://help.fnnas.com/
cpolar 官方文档:https://www.cpolar.com/docs
技术说明核对日期:2026 年 10 月 30 日。以上命令与配置以所使用的镜像版本、设备平台和服务文档为准;任何功能上线前都应完成本机验证。














































































