在飞牛 NAS 上用 Docker 部署 Hermes Agent 的完整步骤

0 阅读

为什么选飞牛 NAS 跑 Hermes Agent

Hermes Agent 是一个支持自我进化的开源 AI 智能体框架,能调用工具、记住历史、甚至从交互中生成新技能。它官方提供 Docker 镜像,对家庭用户来说,部署在常年开机的 NAS 上再合适不过。

hermes部署

飞牛 NAS(运行 fnOS 系统)自带 Docker 管理功能,x86_64 架构兼容主流镜像,16GB 内存也足够应付轻量级推理任务。更重要的是,NAS 通常有固定内网 IP,适合作为家庭 AI 服务的常驻节点——不用额外开一台电脑,电费和噪音都省了。

部署前的环境检查

在动手前,先确认你的飞牛 NAS 满足基本条件:

  • 系统为 fnOS(当前主流版本均内置 Docker)
  • 内存建议 4GB 以上(实测 8GB 可流畅运行,16GB 更从容)
  • 已分配固定内网 IP(如 192.168.1.100),方便后续访问
  • 有至少 5GB 可用存储空间(用于镜像、数据库和日志)

准备 Docker 环境

开启 Docker 服务

进入飞牛 NAS 后台,在「应用中心」找到「Docker」并启动。如果未安装,系统会提示你一键安装。安装完成后,确保服务状态为“运行中”。

确认 docker-compose 可用

飞牛 NAS 的 Docker 套件通常已集成 docker-compose。你可以通过 SSH 登录 NAS(需先在设置中开启 SSH 服务),执行:

docker-compose --version

若返回版本号(如 v2.24.0),说明可用。如果没有,可手动安装或改用纯 docker run 方式,但推荐用 compose,配置更清晰。

替换国内镜像源(可选但推荐)

由于网络原因,直接拉取 Docker Hub 镜像可能极慢甚至失败。建议替换为国内加速器,比如阿里云或中科大镜像源。

在 SSH 中编辑 Docker 配置:

sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json

写入以下内容(以阿里云为例):

{
  "registry-mirrors": ["https://<你的ID>.mirror.aliyuncs.com"]
}

保存后重启 Docker 服务:

sudo systemctl restart docker

注意:阿里云镜像加速地址需登录容器镜像服务控制台获取专属链接。

创建数据持久化目录

Hermes Agent 的数据库、配置和上传文件需要持久化,否则容器删除后数据全丢。在 NAS 上创建专用目录,例如:

/volume1/docker/hermes/data

这个路径要记牢,后面 docker-compose.yml 会用到。确保该目录有读写权限(fnOS 默认用户组通常没问题)。

编写 docker-compose.yml

在 NAS 上新建一个项目目录,比如 /volume1/docker/hermes,然后在其中创建 docker-compose.yml 文件。内容如下:

version: '3.8'

services:
  hermes:
    image: nousresearch/hermes-agent:latest
    container_name: hermes-agent
    ports:
      - "8080:8080"
    volumes:
      - ./data:/app/data
    environment:
      - TZ=Asia/Shanghai
    restart: unless-stopped

关键点说明:

  • ports 映射 8080 端口,你可以在浏览器通过 http://<NAS_IP>:8080 访问
  • volumes 将本地 ./data 目录挂载到容器内的 /app/data,实现数据持久化
  • TZ 设置时区,避免日志时间错乱
  • restart: unless-stopped 确保 NAS 重启后自动拉起服务

首次启动与配置向导

方法一:通过飞牛 NAS 图形界面(新手友好)

  1. 打开 Docker 应用
  2. 切换到「Compose」标签页
  3. 点击「导入」,选择刚才创建的 docker-compose.yml 文件所在目录
  4. 点击「启动」

系统会自动拉取镜像并运行容器。首次启动较慢,耐心等待 2–5 分钟。

方法二:通过 SSH 命令行(熟手推荐)

进入项目目录,执行:

cd /volume1/docker/hermes
docker-compose up -d

-d 表示后台运行。可通过 docker logs -f hermes-agent 查看实时日志。

进入配置向导

容器启动后,Hermes 会自动进入初始化流程。此时访问 http://<你的NAS_IP>:8080,页面会引导你完成:

  • 设置管理员密码
  • 配置默认 LLM 后端(如 Ollama、OpenAI、Anthropic 等)
  • 启用或禁用内置工具(文件操作、网页搜索、代码执行等)

注意:如果你还没部署本地大模型(如 Ollama),可以先选 OpenAI 并填入 API Key 测试流程,后续再切换。

验证部署是否成功

访问 Web Dashboard

打开浏览器,输入 http://192.168.1.100:8080(替换成你的 NAS IP),应看到 Hermes 的登录界面。输入刚才设置的密码,进入主界面后可创建智能体、发起对话、查看记忆库。

测试 OpenAI 兼容 API

Hermes 提供标准 OpenAI API 接口,地址为 http://<NAS_IP>:8080/v1。你可以用 curl 测试:

curl http://192.168.1.100:8080/v1/models

如果返回模型列表(如 hermes-llm),说明 API 服务正常。这意味你可以将 Hermes 当作本地 LLM 网关,供其他应用调用。

数据备份与版本升级

备份策略

所有关键数据都在 /volume1/docker/hermes/data 目录下,包含:

  • SQLite 数据库(hermes.db
  • 上传的文件
  • 智能体配置

建议定期将整个 data 文件夹复制到 NAS 的其他卷或外接硬盘。飞牛 NAS 自带的「备份」功能可设置自动任务。

升级到最新版

当 Hermes 发布新版本时,只需三步:

  1. 停止当前容器:docker-compose down
  2. 拉取新镜像:docker-compose pull
  3. 重新启动:docker-compose up -d

由于数据目录独立挂载,升级不会影响已有智能体和记忆。

多账号部署方案

如果你想为不同家庭成员或用途运行多个 Hermes 实例,只需复制项目目录并修改端口和数据路径。例如:

  • 主账号:/volume1/docker/hermes-main → 端口 8080
  • 孩子账号:/volume1/docker/hermes-kid → 端口 8081

每个 docker-compose.yml 修改 portsvolumes 路径即可,互不干扰。

资源占用实测参考

在飞牛 NAS(Intel N5105 CPU, 16GB RAM)上运行 Hermes + Ollama(加载 7B 模型)的典型负载:

  • 内存:约 6–8 GB(Ollama 占大头)
  • CPU:空闲时 <5%,推理时峰值 60–80%
  • 磁盘:初始镜像约 2GB,数据目录随使用缓慢增长

如果只跑 Hermes(不带本地模型,仅转发 API 请求),内存占用可降至 500MB 以内,几乎无感。

常见问题与排错

容器启动失败,日志报错“permission denied”

通常是挂载目录权限问题。在 SSH 中执行:

chmod -R 755 /volume1/docker/hermes/data
chown -R 1000:1000 /volume1/docker/hermes/data

Hermes 容器默认以 UID 1000 用户运行,需确保目录归属正确。

无法访问 8080 端口

检查三点:

  1. 飞牛 NAS 防火墙是否放行 8080 端口(默认通常开放)
  2. 路由器是否做了端口隔离(家庭内网一般无此问题)
  3. 容器是否真正在运行:docker ps 查看状态

首次加载极慢或卡住

首次启动需下载前端资源并初始化数据库,耐心等待。若超过 10 分钟无响应,查看日志:

docker logs hermes-agent

常见原因是镜像拉取失败(网络问题)或磁盘空间不足。

API 返回 401 Unauthorized

Web 界面登录正常但 API 报错,可能是因为你未在请求头中携带 Authorization: Bearer <your-api-key>。Hermes 的 API Key 在 Web 界面「设置」→「API Keys」中生成。

部署之后能做什么

Hermes Agent 不只是个聊天界面。部署完成后,你可以:

  • 自动化日常任务:让它每天早上报天气、查日程、汇总新闻
  • 构建家庭知识库:上传文档,让智能体回答家庭相关问题
  • 作为开发助手:通过 API 接入 Home Assistant,实现语音控制家电
  • 持续学习:开启“经验回放”功能,让智能体从历史对话中提炼新技能

关键是把 Hermes 当成一个可编程的“数字管家”,而不仅是一个聊天机器人。它的真正价值在于长期运行、积累记忆、并与你的数字生活深度集成。

现在,你的飞牛 NAS 不再只是存储设备,而成了家庭 AI 中枢。