前言
很多人的NAS都是24小时开机,但真正长期运行的任务并不多。除了存文件、下载资源和挂几个Docker服务,大部分时间它都处在低负载状态。对RK3566、N1这类低功耗小主机来说,只承担存储工作,多少有些浪费。
我之前也尝试过在NAS上运行不同的AI Agent。功能越完整的项目,配置和后期维护通常也越复杂,技能、上下文和模型调用都需要持续调整。如果只是想要一个可以常驻运行、随时通过聊天窗口调用的个人助手,Hermes的思路会更直接一些。
本文会以一台刷入飞牛NAS ARM版的RK3566小主机为例,通过SSH连接系统,再使用一键脚本把Hermes部署到Docker环境中。初始化时接入DeepSeek API,保留默认的deepseek-chat模型,并分别通过终端和9119端口的Web控制台完成对话测试。
本地运行确认没有问题后,再通过配置脚本为Hermes添加微信消息平台。完成扫码连接、配对审批和服务重启后,就可以直接在微信中向NAS里的AI助手发送任务,不再需要每次打开Hermes网页。
最后会安装 cpolar,把Hermes WebUI映射到公网,并进一步配置固定二级子域名和HttpAuth认证。这样人在外面时也能查看控制台,同时避免公网地址被知道后就可以直接打开页面。
1 Hermes 是什么?为什么适合部署在 NAS 上?
Hermes是一个开源的AI Agent 项目,可以理解成一个能够长期运行的个人 AI 助手。
它和普通聊天机器人不太一样。普通聊天机器人更多是“问一句、答一句”,而 Hermes 更偏向长期使用和任务沉淀。我们可以通过终端、Web 控制台、消息平台和它交互,让它帮忙处理文本、生成内容,或者完成一些简单的自动化任务。
对于 NAS 用户来说,Hermes 比较适合做成一个常驻服务。
原因很简单:NAS 本身就是一台24 小时在线的设备,平时可以跑 Docker、挂服务、做远程访问。如果把 Hermes 部署到 NAS 里,就相当于给这台机器加了一个可以随时调用的AI 管家。
2 Docker 一键部署 Hermes
我这次使用的是一台 RK3566 小主机,已经刷好了飞牛 NAS ARM 版系统。
飞牛 NAS 本身支持 Docker,所以这里不需要单独安装 Docker,直接通过 SSH 执行脚本部署 Hermes 即可。
接下来正式开始部署。
首先打开飞牛 NAS 桌面的【Docker】,确认 Docker 服务已经开启。然后进入【系统设置】里的【SSH】,把 SSH 服务打开,后面的命令需要通过终端执行。
然后进入【系统设置】中,选择【SSH】,将其启用:
接着,电脑摁下【Win + X】键,选择【终端(管理员)】打开PowerShell窗口:
然后在终端输入如下ssh命令,进行远程连接你的飞牛Nas终端:
sshn1@192.168.50.212如下图所示:
接着,在终端执行如下命令,切换至root用户(输入密码时不会显示):
sudo-i2.2 部署Hermes
切换好后,然后执行如下命令,然后选择安装 Hermes Agent,进行一键部署hermes:
curl-fsSLhttps://gitee.com/jun-wan/script/raw/master/fnos-hermes/fnos-hermes.sh-o/tmp/fnos-hermes.sh&&chmod+x /tmp/fnos-hermes.sh&&/tmp/fnos-hermes.sh默认直接回车即可,然后回车进入Hermes 初始化向导,需要等待镜像拉取:
拉取完成后,会出现如下选项,直接选择快速开始即可(Quick setup):
回车后,会来到选择提供商页面(Select provider),这里以DeepSeek为例,选择进行回车:
接着, 访问deepseek官方keys页面,进行创建一个apikey:
https://platform.deepseek.com/api_keys复制好key后,填写到终端(粘贴不会显示):
模型这里就用默认的deepseek-chat,然后回车,会来到配置消息平台的部分,我们选择第二项,先暂时跳过:
跳过后,等待一下,可以看到提示已经初始化完成了:
我们回车,运行这个hermes:
运行起来是这样的,我们可以对话询问一下:
你好,你是谁?你当前运行在什么操作系统上,接入的是什么模型?如下图所示:
可以看到它知道运行在Docker容器里面,接入的是deepseek模型,接着我们输入如下指令退出,完成剩下部分配置:
/exit出现如上提示,代表全部配置完成啦!我们还可以访问web控制台:
http://192.168.50.212:9119如下图:
3 将Hermes接入至微信
我们重新执行一键部署脚本:
curl-fsSLhttps://gitee.com/jun-wan/script/raw/master/fnos-hermes/fnos-hermes.sh-o/tmp/fnos-hermes.sh&&chmod+x /tmp/fnos-hermes.sh&&/tmp/fnos-hermes.sh输入6进行配置聊天平台网关:
然后会进入到如下页面,选择【WeiXin】然后回车:
接着会提示是否开始扫码登录,直接回车:
扫码连接后,会来到如下页面,依次选择默认的配对审批模式和禁用群聊消息,然后回车使用当前连接的账号:
最后会回到消息平台选择菜单,选择【Done】退出:
接着回到菜单,选择【8】重启一下hermes服务:
此时可以给hermes发送消息测试:
可以看到能够正常回复了,但是还需要配对审批:
hermes pairing approve weixin QKHBWHAJ回到菜单,选择选项【10】执行容器内 Hermes 原生命令:
输入审批授权的命令:
出现如上提示,代表这个微信用户已经通过配对授权了,接着我们直接对话询问就可以了:
你好,你是谁?请你介绍一下你自己,你都能干什么?如下图所示:
可以看到,这次它成功的回复了!这样我们就配置好了hermes并且接入到微信啦!接下来就是大开脑洞让它完成任务了,比如给个提示词:
请你给我写一个用于旅游的好看点儿的宣传落地页效果(DeepSeek-chat模型):
可以看到,这次 Hermes 已经成功回复了。到这里,我们已经完成了本地部署和微信接入,NAS 里的这个 AI 助手基本算是跑起来了。
4 穿透 Hermes WebUI 以实现公网访问
前面我们已经把 Hermes 部署到了飞牛 NAS 上,也完成了微信接入。到这一步,NAS 里的 AI 助手已经可以正常使用了。
不过,局域网里的服务终究还是局域网服务。Hermes 的 Web 控制台虽然可以通过本地地址访问,但如果人在外面,想远程查看运行状态、调整配置,或者临时打开控制台,就没那么方便了。
所以接下来,我们给它加上cpolar 内网穿透,把飞牛 NAS 本地的9119 端口映射到公网。这样即使不在家,也能通过公网地址访问 Hermes 的 Web 控制台。
4.1 什么是 cpolar?
cpolar是一款内网穿透工具,可以把局域网内运行的服务映射到公网。
简单来说,只要服务已经在本地跑起来,比如本文中的Hermes Web 控制台 9119 端口,就可以通过 cpolar 创建公网访问地址。这样外部设备不需要配置路由器端口转发,也能远程访问本地服务。
cpolar 支持Windows、macOS、Linux、树莓派、群晖 NAS等平台,也适合飞牛 NAS 这类支持 SSH 和 Docker 的设备使用。
4.2 安装 cpolar
回到 SSH 终端窗口,也就是前面连接飞牛 NAS 的终端,执行下面命令安装 cpolar:
sudocurlhttps://get.cpolar.sh|sh如下图所示:
安装完成后,执行下面命令查看 cpolar 服务状态:
sudosystemctl status cpolar如下图所示:
如果状态中显示 **active (running) **就说明 cpolar 已经正常启动。
接着,在浏览器中输入下面地址,访问 cpolar 的 Web UI 控制台,例如我这里的飞牛 NAS IP 是192.168.50.212,所以访问地址就是:
http://192.168.50.212:9200如下图所示:
可以看到,已经成功进入 cpolar 的 Web UI 页面。如果还没有注册 cpolar 账号,也可以点击页面底部的注册入口先完成账号注册。
4.3 将 Hermes WebUI 映射到公网
注册好账号以后,回到该页面进行登录即可,登录成功后,进入侧边的【隧道管理>隧道列表】,可以看到有2条隧道:
选择website这条隧道,点击编辑进行修改(也可以创建新的隧道):
创建或者更新完成后,接着点击状态>在线隧道列表,可以看到同一个隧道生成了两个公网访问地址,一个是 http,另一个是 https:
这里以https为例,访问测试一下:
可以看到,成功的访问到了飞牛Hermes的管理界面,已经支持外网访问啦!
5 固定二级子域名
虽然前面我们使用cpolar 的永久免费套餐版成功实现了内网穿透,但免费版的随机域名存在一些不便之处:域名又长又难记忆,而且每隔 24 小时左右就会自动变化一次。这意味着每次域名变化后,我们都需要重新分享新的地址,使用起来非常不方便。
为了解决这个问题,cpolar 提供了固定二级子域名功能。只需升级到任意付费套餐,就可以配置一个固定不变、简短易记的专属域名,彻底告别域名频繁变化的烦恼。下面我们来看看如何配置固定二级子域名。
5.1 设置二级子域名
首先,进入官网的预留页面:
https://dashboard.cpolar.com/reserved然后,选择预留菜单,即可看到保留二级子域名项,填写其中的地区、名称、描述(可不填)项,然后点击保留按钮,操作步骤图如下:
列表中显示了一条已保留的二级子域名记录:
- 地区:显示为China Top。
- 二级域名:显示为hermes01。
注:二级域名是唯一的,每个账号都不相同,请以自己设置的二级域名保留的为主
5.2 修改隧道为子域名方式
进入侧边菜单栏的【隧道管理】下的【隧道列表】,可以看到名为【hermes01】的隧道:
点击【编辑】按钮进入编辑页面,修改域名类型为【二级子域名】,然后填写前面配置好的子域名,点击更新按钮:
接着来到【状态】菜单下的【在线隧道列表】可以看到隧道名称为【hermes01】的公网地址已经变更为【二级子域名+固定域名主体及后缀】的形式了:
这里以https访问测试一下:
访问成功!到这里,Hermes WebUI 已经拥有了一个固定的公网访问地址。不过,公网访问虽然方便,但也意味着这个页面可以被外部网络访问到。为了避免控制台被别人直接打开,接下来我们再给这个公网地址加一层HttpAuth 访问认证。
6 设置 HttpAuth 访问认证
前面我们已经通过cpolar 固定二级子域名,给 Hermes WebUI 配置了一个固定的公网访问地址。
这样做的好处是访问更方便,但也带来一个问题:只要知道这个公网地址,别人也可能尝试打开你的 Hermes WebUI。
所以,建议给公网访问地址再加一层HttpAuth 访问认证。这样访问 Hermes WebUI 时,需要先输入用户名和密码,通过认证后才能进入页面,相当于在 WebUI 外面再套一层基础保护。
6.1 配置 HttpAuth
回到 cpolar Web UI 控制台,点击左侧菜单栏的【隧道管理】→【隧道列表】,找到前面配置好的hermes01隧道,点击右侧的【编辑】:
在编辑页面中,展开【高级】选项,找到HttpAuth配置项,填写自定义的用户名和密码,格式参考如下:
admin:123456注意,中间使用的是英文冒号:。用户名和密码可以自定义,但不建议使用admin:123456这类弱密码。
如下图所示:
设置完成后,点击【更新】保存配置:
接着再次访问前面配置好的 Hermes WebUI 公网地址,就会先弹出一个认证窗口,需要输入刚才设置的用户名和密码:
认证通过后,才能继续进入 Hermes WebUI 页面。
这样一来,即使公网地址被别人看到,对方也无法直接打开控制台,安全性会更高一些。
安全提醒:HttpAuth 只是基础访问认证,适合给个人测试环境增加一层保护。公网访问地址不要随意公开,密码也尽量设置复杂一些。
总结
完成部署后,这台RK3566小主机就不再只是一个存储设备。飞牛NAS提供长期运行环境,Hermes作为Docker服务常驻后台,DeepSeek负责模型响应,微信则成为最方便的日常使用入口。
这套方案比较适合不追求复杂工作流,但希望AI助手能够24小时在线的个人用户。平时不需要记住NAS地址,也不用打开管理页面,直接在微信里发消息,就能让Hermes完成内容生成、问题整理和一些简单任务。
通过 cpolar 映射9119端口后,Hermes WebUI可以从外部网络访问。随机域名适合先做测试,固定二级子域名更适合长期收藏和远程管理;增加HttpAuth后,访问页面前还会多一道用户名和密码验证。
需要注意的是,HttpAuth只能提供基础保护,不能代替Hermes自身的权限控制。公网地址不要随意公开,DeepSeek API Key、微信配对信息和NAS管理员密码也要妥善保存;SSH应使用强密码或密钥认证,不用时可以关闭。
RK3566负责低功耗常驻,飞牛NAS负责系统与容器管理,Hermes负责处理任务,微信负责随时调用,cpolar负责补上远程管理入口。当这些环节稳定连接起来以后,一台普通的小主机就能成为真正长期在线的个人AI管家。