飞牛 NAS 部署 Hermes AI Agent + ZeroNews 内网穿透,实现远程可管理的 AI 助手
做技术这行久了,总有个习惯:能本地跑的服务绝不放到云上。AI Agent 也一样 —— 把 Hermes 部署在自家 NAS 上,数据完全自主、调用成本可控,还能 7×24 小时不间断地跑定时任务,这套本地部署的玩法我折腾了挺长时间,体验一直不错。
但真正用起来才发现,"部署在内网" 和 "好用" 之间,还隔着一个远程访问的问题。
最开始我图省事,直接在路由器上把 6060 端口映射出去,结果没两天就在日志里看到大量陌生 IP 的扫描请求,吓得赶紧关了。后来换成 WireGuard 拨 VPN 回家,安全是安全了,但每次手机上想快速看一眼 Agent 状态,都得先开 VPN 客户端、等连接、再开浏览器,步骤繁琐不说,网络不稳定的时候还经常断。SSH 动态端口转发也试过,只适合电脑端临时用,移动端基本没法操作。
前前后后试了三四套方案,要么安全不够,要么体验太差,要么维护成本太高。最后改用内网穿透 + HTTPS 隧道的方式才真正解决问题:在 NAS 上装个轻量客户端,把 Hermes Web UI 映射成一个带 HTTPS 证书的公网域名,手机电脑直接打开就能用,不用开 VPN,不用动路由器,也不用自己折腾证书续期。
这篇文章就是我把整套方案从零搭起来的完整记录。从 docker-compose 部署 Hermes Agent 和 Web UI,到安装零讯(ZeroNews)客户端、配置自定义域名和 HTTPS 隧道,再到最后的公网访问验证,每一步都有截图和说明。如果你也在为 "内网服务怎么安全便捷地远程访问" 这个问题头疼,希望这篇踩坑笔记能帮你少走点弯路。
一、在飞牛上把 Hermes Agent + Hermes-Web-UI 跑起来
在飞牛上我们以 docker-compose 方式部署一键 Hermes Agent + Hermes-Web-UI
以 docker-compose 方式 部署的脚步内容
可以直接复制以下 docker-compose.yml 部署脚本内容
services:
hermes:
image: ekkoye8888/hermes-web-ui:latest
container_name: hermes-webui
restart: unless-stopped
ports:
- "6060:6060"
- "8651:8651"
- "56121:56121"
volumes:
- ./hermes_data:/home/agent/.hermes
- ./hermes_data/hermes-web-ui:/home/agent/.hermes-web-ui
environment:
PORT: "6060"
HERMES_HOME: /home/agent/.hermes
HERMES_BIN: /opt/hermes/.venv/bin/hermes
HERMES_WEB_UI_XAI_CALLBACK_BIND_HOST: 0.0.0.0
HERMES_ALLOW_ROOT_GATEWAY: "1"
几个配置顺便解释一下:
- ./hermes_data 是相对路径,跟着 yml 文件走,不用写死绝对路径
- 6060:6060,浏览器访问 hermes-web-ui 的本地端口号
部署 Hermes 容器
- 打开飞牛的 Docker → Compose

- 点击新建项目 新增项目
输入项目名,如 hermes
点击路径,新建一个文件夹,如 hermes 文件夹,然后选择新增的 hermes 文件夹,再确认



来源选择 创建 docker-compose.yml, 将上面的 docker-compose.yml 内容直接粘贴进来,并勾选创建项目后立即启动


先在局域网里试试
浏览器打开:http://<飞牛内网IP>:6060 ,先用默认账号密码登录,默认登录名:admin,默认密码:123456, 登录后记得修改密码

第一次登录成功后,默认是没有配置大模型的,这时候发起对话,会提示异常


我选用的 DeepSeek 的 v4-flash 模型,输入 API Key,点击添加



二、安装 ZeroNews 客户端
本地能访问了,接下来装 ZeroNews,准备把 Hermes-Web-UI 面板映射出去。
复制 Token
先登录 ZeroNews 控制台

复制快速开始的 AuthToken, Token 是多设备共用一个

飞牛中安装 ZeroNews 客户端
打开飞牛的应用中,搜索 zeronews 应用,然后点击安装即可,点击一下步直到安装完成


ZeroNews 安装完成后,点击打开,会弹出 ZeroNews 的token 绑定界面,粘贴在ZeroNews控制台的 Token ,然后点击 绑定即可


绑定完成后,客户端状态显示 在线

同时在 ZeroNews 控制台的客户端界面,可以查看刚上线的飞牛客户端

三、给 Hermes Web UI 加个公网隧道
先给 Hermes Web UI 分配一个好记忆的域名
ZeroNews 控制台 → 自定义域名 → 添加域名

在子域名输入框中,输入一个好记忆的名称,如 hermesweb, 然后点击域名可用性检测,会在下放显示出可以选择的域名,然后选中一个就行,最后点击提交,完成域名添加


然后给 Hermes-Web-UI 添加公网隧道
- 进 隧道管理 页面 → 添加隧道

- 隧道协议, 默认HTTPS 就行
- 带宽, 4M带宽,也可以分配多一些带宽
- 公网域名, 选择自定义域名,再选择刚创建好的 hermesweb 域名
- 绑定设备选择 fnos 客户端, 内网端口输入 hermes-web-ui 的端口号 6060


隧道添加完成后,就可以通过公网访问了
四、测一测,确认没问题
隧道添加完成后,可以点击 域名后的小图标,直接访问 Hermes-web-ui, 也可以复制域名到浏览器中打开

登录Hermes-Web-UI 后,我们做一些简单的测试
如在对话中,做下简单交互

在模型页面可以查看/编辑当前用户的模型

查看日志

查看用量

五、收尾
把整个过程梳理下来,最大的感受是:远程访问这件事,方案选对了,其实比想象中简单。
最开始走了不少弯路 —— 路由器端口映射不安全,VPN 连接太繁琐,SSH 转发不适合移动端,每一种都有明显的短板。最终用内网穿透的方式落地后,整个使用体验发生了质的变化:出门在外打开浏览器就能直接管理 Hermes,改模型配置、看运行日志、查任务状态,和坐在家里局域网里操作几乎没有区别。
这套方案的优势很实在:不需要固定公网 IP,家庭宽带就能用;不需要在路由器上做任何配置,对网络环境零要求;HTTPS 证书由平台自动签发和续期,不用自己维护 Nginx 和证书;只暴露 Web UI 的 6060 端口,不是把整台 NAS 扔到公网上,安全边界清晰。
当然,Web UI 本身有账号密码,但公网暴露场景下,建议再叠加平台提供的访问控制策略 ——IP 白名单、地址围栏、BasicAuth,根据自己的使用场景选配上,进一步缩小可访问范围。
如果你也有类似的需求 —— 不管是 AI Agent、管理面板,还是其他跑在内网里的服务,都可以参考这套 "容器化部署 + 内网穿透 + HTTPS 隧道" 的思路,用最小的运维成本,解决跨网络访问的实际问题。
更多推荐


所有评论(0)