Hi,我是执着于持续分享NAS、AI、数码、家电、软件技巧相关知识,坚持创作有深度、高质量作品的博主 设计虱聊科技。期待您的关注。
- *
NAS 应用中心的 Hermes 总是不更新,这对于我这种喜欢尝试点新版本功能的人不能忍。加上运行久了,总感觉不顺手了。
于是一不做二不休,放弃应用中心版本,重新在 NAS 上 通过 Docker Compose 部署官方镜像。
顺便,把网评挺不错的 Hermes-web-ui 也一并部署了。
本以为很容易就跑通了,没想到,还踩了几个坑。好在最后都顺利解决。正好趁此机会,写一篇 手把手喂饭 和 避坑 的 NAS 部署攻略,给需要的朋友。
- *
✿ 为什么要把AI助手部署在NAS上?
简单说:24 小时在线、省电、方便依托 NAS 扩展其他功能。
我把 Hermes 部署在 NAS 上后,它就变成了一个本地 AI 服务:
- ★ 24 小时不间断运行,低功耗省电
- ★ 任何设备随时接入,不担心因为关机掉线,轻松布置凌晨定时任务
- ★ OCR、向量化、对话摘要等简单任务用NAS本地部署的小模型,节省Token
- ★ 运行在沙箱中,不乱动沙箱外的文件
而且因为跑在自己的NAS上,敏感数据不会泄露。
- *
✿ 准备工作
你需要:
○ 一台NAS
支持 Docker 的 x 86 平台的 NAS(ARM 平台我没试过)
○ 最好有 Docker Compose 管理
如果没有,可以先部署一个,管理 Docker 会方便很多。
○ 获得一个大模型 API Key
如果暂时不想花钱,可以先去例如 小米MiMo、阿里、硅基流动、智谱、MiniMax、百度千帆 等等大模型的官方网站看看,注册送一定的 API 试用额度,足够把 Hermes 配置好并体验一段时间。
- *
✿ docker-compose 配置
注: 如果你想和 NAS 应用商店的 Hermes 同时使用,可以把新部署的 Hermes 名称改一下,比如我就把目录名、服务名、容器名都改成了 hermesopt,这样就避免了和 NAS 应用商店的那个 Hermes 冲突。
以下我都按这个思路部署,这样不管是哪种情况,都可以正常使用。如果你看着不顺眼,也可以把下面教程中的所有 hermesopt 的字段全部改回 hermes。
在 NAS 存放 Docker 数据的目录新建一个文件夹,比如 /docker/hermesopt,然后创建 docker-compose.yaml。
我们把 Hermes 和 hermes-webui 在同一个 Compose 中一并部署,方便内部打通。
services:
hermesopt:
image: nousresearch/hermes-agent:latest
container_name: hermesopt
restart: unless-stopped
command: gateway run
networks:
- Agents-Network
environment:
- TZ=Asia/Shanghai
- UMASK=000
- API_SERVER_ENABLED=true
- API_SERVER_HOST=0.0.0.0
- API_SERVER_PORT=8642
- API_SERVER_KEY=你的API密钥
stdin_open: true
tty: true
volumes:
- ./opt/data:/opt/data
ports:
- "8642:8642"
deploy:
resources:
limits:
memory: 4G
cpus: "2.0"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8642/health"]
interval: 10s
timeout: 5s
retries: 5
hermes-webui:
image: ekkoye8888/hermes-web-ui:latest
container_name: hermes-webui
restart: unless-stopped
networks:
- Agents-Network
ports:
- "6060:6060"
environment:
- PORT=6060
- HERMES_HOME=/home/agent/.hermes
- HERMES_BIN=/opt/hermes/.venv/bin/hermes
- HERMES_WEB_UI_MANAGED_GATEWAY=1
- TZ=Asia/Shanghai
volumes:
- ./opt/data:/home/agent/.hermes
- ./hermes_webui_data:/home/agent/.hermes-web-ui
depends_on:
hermesopt:
condition: service_healthy
deploy:
resources:
limits:
memory: 512M
cpus: "0.5"
networks:
Agents-Network:
driver: bridge
这段 yaml 中,有几处需要注意的地方:
(1)创建了预留的 Docker 内部网络
我顺便创建了Docker内部网络Agents-Network,方便与其他 Docker 间通信。这是个预留措施,如果不需要,也可以删掉。
(2)Hermes 的密匙
记得改一下,以后如果用官方的 Dashboard 登录时会用到。
(3)Hermes 的映射目录设置
Hermes 的 volumes 字段是目录映射,冒号前面是本地 NAS 路径,冒号后面是容器内路径。
./opt/data 代表把容器的 /opt/data (默认用户数据目录)映射到 NAS 的 Docker 数据目录/opt/data 下,这样可以使数据持久化写到本地,不然容器一旦重启所有数据就没了。
. 代表你设置的 Docker 数据目录,是简写方式,完整的写法也可以,比如我的就是:/volume1/docker/hermesopt/opt/data。
现在,我们只映射了/opt/data 目录,Hermes 就只能访问这个目录。如果有其他协作目录需要 Hermes 能读写,也可以按这个写法加进去(可选)。比如,我专门添加了另一个目录/volume2/AgentWork。
(4)hermes-webui 的配置
hermes-webui 的 volumes 字段需要注意挂载 Hermes 的数据目录 ./opt/data(注意是容器内路径,不是映射的 NAS 路径),这样,webui 才能读写 hermes 的数据。
配置完成后,点击 立即部署。
两个镜像都比较大,会下载很长时间,不要着急,挂着慢慢等。
- *
✿ 部署成功后,初始化Hermes
看到这个界面,就是部署成功了。
我们转到容器界面,找到 hermesopt 这个容器,进入 /bin/bash 终端,点击确认。
在终端输入 hermes setup,回车,开始初始化设置。
会让我们选择初始化方式。
第一个 Quick Setup 是快速初始化,会让我们跳转到官方的网页授权,官方会帮你配齐包括模型、AI 搜索在内的几乎所有工具。
有钱又不想手动配置的同学可以直接用这个。当然他也有免费模式。点击合适的套餐,就能自动配置好。只是速度有点慢。
但我是个想要自己动手折腾的用户,所以我选择第二个 Full Setup,完整初始化。
第一步是选择大语言模型,我们刚才准备了哪个供应商的 API Key,就选哪个。我有 MiMo 送的 Token Plan,所以我这里演示的模型供应商选择的是 Xiaomi MiMo。
选择供应商后,会让我们输入 key, 我们直接复制供应商提供的 key,然后在终端点击鼠标右键,选择粘贴。
然后选择这个模型供应商提供的模型,每个模型的能力和计价方式可能不同,选择适合自己的。这里我选择 mimo-v2.5。
大语言模型配置好,选择一个“终端后端”(Terminal Backend)。简单来说,就是告诉 Hermes:当它需要执行一个 Shell 命令时,应该把这个命令送到哪里去运行。
最安全、最简单的选择是:Keep current (local) 。因为容器内部就是一个完整的 Linux 环境,Hermes 已经可以正常使用 local 模式执行命令(比如读写我刚才挂载的 /volume2/AgentWork 目录)。
!!!这里 不要 因为 Hermes 通过 Docker 部署就选择 Docker,因为 Hermes 可能会尝试去连接不存在的资源,导致执行命令失败。
下一步是选择一个通信终端,用来随时联系 Hermes 。
目前我觉得常用 IM 中,飞书对 Hermes 的支持最好,我也建议你选择飞书。但是如果你不喜欢飞书,也可以选择自己喜欢的平台,常见的微信、QQ、钉钉、iMessage 等也都支持。
选择后会进入鉴权流程,跟着流程走很快就能连接好。
下面选择 CLI 工具,这是 Hermes 的能力来源。
上下键选择,空格键激活/取消,回车键全部确认。
这里我建议保持默认,因为默认覆盖了大多数使用场景,以后如果需要调整,可以再回到终端用 Hermes setup 命令重新改。
下一个是选择 Hermes 内置浏览器,第一个无头浏览器是最简单轻量的,不需要任何配置,可以先选它体验。Camofox 功能更完整但更重一些(抓网页更好用点)。
其他的是一些收费的云浏览器,以后可以再根据自己需求选用。
下一个选择图像生成功能的服务商,建议先跳过。需要的时候再选。
语音模型,建议选第一个免费的,不用配置。我没用过,如果你需要且觉得推荐的 Microsoft Edge TTS 效果不好,以后再试其他的。
下一个选 AI 搜索服务商,建议先选 Tavily,每月有 1000 次免费 API 额度,够用了。
需要去 Tavily 官网先注册一下,获得一个 API Key,复制后在这里选择 Tavily,粘贴 Key,回车,搞定。
到这里就全部配置完成了。
我们可以直接在命令行输入 hermes 进入 对话界面,试一试说句“你好”。需要退出聊天时按 Ctrl+C 就可以回到命令行。
或者直接关掉终端窗口,从飞书联系 Hermes。
- *
✿ 如何访问和使用 Hermes WebUI
正常来说,刚才部署成功后,Hermes WebUI 会和 Hermes 容器一起启动。
在浏览器打开 http://你的NAS IP:6060,输入默认账号 admin / 123456,就可以进入主界面了。第一次登录建议改掉默认密码。
这是个非常全面的 Hermes 前端控制台,在这里可以轻松查看和修改对话、记忆、用量、定时任务、模型、技能等信息,再也不用去配置文件里敲代码了。
整个界面很直观,我就不详细介绍了。
- *
✿ 写在最后
到这里,就可以与 Hermes 正常对话和设置了。 但是,NAS 端其实还有一个问题要解决好,就是人机协作的问题。
NAS 的底层通常是 Debian 一类的 Linux 系统,对用户权限设置的要求很高。这个问题反映到 Hermes 这里,就成了大问题。
因为 Hermes 的权限和我们用户的权限是不一样的,如果我们手动修改了 Hermes 的文件,Hermes 就会失去对这个文件的读写权限,造成配置出错、任务终止的问题。
所以,我们还需要把协作问题处理好。这个咱们下篇文章再说。
- *
坚持创作有深度、高质量的作品、致力于分享干货、抵制标题党和网络垃圾,是我的座右铭。
关注我,蹲后续。您的支持对我真的很重要O(∩_∩)O)。让我们共同打造互联网内容创作和知识分享的一股清流!ヾ(◍°∇°◍)ノ゙
#NAS #Docker #Hermes #WebUI #Compose #Docker部署
原文来源:设计虱聊科技
评论 (0)