一、先说说,为啥要折腾这一套?

现在很多人喜欢把 AI Agent 跑在自己家的 NAS 或者内网服务器上——模型调用便宜、数据不出网、想怎么折腾就怎么折腾。 但有个很现实的问题:Agent 在内网,你人却经常不在内网。 比如你在出差,突然想改一下模型配置;或者在地铁上,想用手机瞄一眼 Agent 有没有在好好干活;又或者同事要帮你排查 Gateway 挂了没——这时候你就会发现,光靠内网 IP 是真不方便。 本文以飞牛 NAS 设备为例,讲述如何在飞牛 NAS 上以容器方式安装运行 Hermes Agent + Hermes Web UI + ZeroNews,帮你搭建远程可管理的 Hermes AI Agent。

二、Hermes Agent 和 Hermes Web UI,到底是啥?

Hermes Agent 是什么

Hermes Agent(大家常说的「爱马仕」)是 Nous Research 开源的 AI Agent 框架。它能长期运行在后台,自己调工具、记住上下文,读文件、跑命令、搜网页、发消息、按时间表自动执行任务都能干。 它支持 Telegram、Discord、Slack 等 20+ 消息平台接入,内置文件操作、Shell、浏览器等工具,还有记忆和技能系统让 Agent 越用越懂你。 但它本质上是个后台程序,得靠 CLI 交互,运行状态和日志也不直观。这时候就需要 Hermes Web UI——把配置、监控搬到浏览器里,随时改模型 API Key。

Hermes Web UI 是什么

Hermes Web UI 是社区维护的 Web 管理面板,镜像 ekkoye8888/hermes-web-ui,浏览器默认通过 http://<NAS IP>:6060 访问。 它主要帮你做这几件事:
  • 在网页里跟 Agent 对话、调试模型和工具
  • 查看和恢复历史会话;配置 API Key、切换模型和 Profile
  • 监控 Gateway 及 Telegram/Discord 等渠道是否在线
  • 管理定时任务、Skills 和 Memory;查看 Token 用量;配置消息渠道接入
它也是远程管理的入口——Web UI 默认开在 6060 端口,后面用 ZeroNews 映射出去,出门在外用浏览器或 Hermes Desktop 都能连。 接下来我们开始部署。

三、在飞牛上把 Hermes Agent + Hermes Web UI 跑起来

在飞牛上,我们以 Docker Compose 方式一键部署 Hermes Agent + Hermes Web UI。

docker-compose.yml 部署脚本

可以直接复制以下 docker-compose.yml 内容:
services:
  hermes-agent:
    image: nousresearch/hermes-agent:latest
    container_name: hermes-agent
    restart: unless-stopped
    volumes:
      - ./hermes_data:/opt/data
    environment:
      HERMES_UID: "1000"
      HERMES_GID: "1000"
    command: ["gateway", "run"]

  hermes-webui:
    image: ekkoye8888/hermes-web-ui:latest
    container_name: hermes-webui
    restart: unless-stopped
    depends_on:
      - hermes-agent
    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_MANAGED_GATEWAY: "0"
      HERMES_WEB_UI_XAI_CALLBACK_BIND_HOST: 0.0.0.0
      HERMES_ALLOW_ROOT_GATEWAY: "1"
      PATH: /opt/hermes/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    stdin_open: true
    tty: true
几个配置顺便解释一下:
  • ./hermes_data 是相对路径,跟着 yml 文件走,不用写死绝对路径
  • 6060:6060 是浏览器访问 Hermes Web UI 的本地端口号

部署 Hermes 容器

  1. 打开飞牛的 Docker → Compose
  1. 点击 新建项目
    • 输入项目名,如 hermes
    • 点击路径,新建一个文件夹(如 hermes),选择该文件夹后确认
  2. 来源选择 创建 docker-compose.yml,将上面的内容直接粘贴进来,并勾选 创建项目后立即启动
  3. 点击确认,等 Hermes 镜像拉完,看 hermes-agenthermes-webui 是否都为运行中(绿色)

先在局域网里试试

浏览器打开:
http://<飞牛内网IP>:6060
先用默认账号密码登录:
  • 默认登录名:admin
  • 默认密码:123456
登录后记得修改密码。 第一次登录成功后,默认没有配置大模型,这时候发起对话会提示异常。我们需要先配置大模型:
  1. 进入 模型配置 页面,点击 添加 Provider
  2. 选用 DeepSeek 的 v4-flash 模型,输入 API Key,点击添加
大模型添加完成后,回到 对话 界面与 Hermes 对话一次,这时候就能正常交流了。 Hermes Web UI 内网访问正常后,接下来安装 ZeroNews,完成 Hermes Web UI 映射配置。

五、安装 ZeroNews 客户端

本地能访问了,接下来装 ZeroNews,准备把 Hermes Web UI 面板映射出去。

复制 Token

  1. 登录 ZeroNews 控制台
  2. 复制 快速开始 页面的 AuthToken(Token 多设备共用一个)

飞牛中安装 ZeroNews 客户端

  1. 打开飞牛的 应用中心,搜索 zeronews 应用,点击安装,一路下一步直到安装完成
  1. 安装完成后点击打开,弹出 ZeroNews 的 Token 绑定界面
  2. 粘贴控制台复制的 Token,点击 绑定
绑定完成后,客户端状态显示 在线。同时在 ZeroNews 控制台的客户端界面,可以查看刚上线的飞牛客户端。

六、给 Hermes Web UI 加个公网隧道

分配域名

  1. 进入 ZeroNews 控制台 → 自定义域名添加域名
  1. 在子域名输入框中输入一个好记的名称,如 hermesweb
  2. 点击 域名可用性检测,下方会显示可选域名,选中一个后点击 提交

添加公网隧道

  1. 进入 隧道管理 页面 → 添加隧道
  1. 按以下参数填写:
配置项填写值
隧道协议HTTPS(默认即可)
带宽4M 或更高
公网域名选择自定义域名,再选刚创建的 hermesweb 域名
绑定设备选择 fnos 客户端
内网端口6060(Hermes Web UI 端口)
隧道添加完成后,就可以通过公网访问了。

七、测一测,确认没问题

隧道添加完成后,可以点击域名后的小图标直接访问 Hermes Web UI,也可以复制域名到浏览器中打开。 登录 Hermes Web UI 后,做几项简单测试:
  • 对话 页面做简单交互,确认 Agent 回复正常
  • 模型 页面查看/编辑当前配置的模型
  • 查看 日志
  • 查看 用量

八、收尾

按这篇教程走下来,三块东西各管一摊:
  • Hermes Agent 在飞牛上 7×24 跑 Gateway,真正执行任务
  • Hermes Web UI 提供浏览器管理面板,配置、监控、调试都在网页里搞定
  • ZeroNews 把 Hermes Web UI 映射成 HTTPS 地址,让你在外面随时随地都能远程访问
你得到的不是一个「暴露到公网的 NAS」,而是一个随时能连上的 Agent 管理入口——模型和会话数据还在本地,传输走 HTTPS,该开的认证开着,简单又安全。