hermes持久化部署,搞了两天终于搞得差不多了,请大佬指点。这个compose文件里面包含了agent本体、webui(可以反代出去使用)、edge浏览器、纸飞机bot。compose文件是从网上找的,然年让ai一步步优化出来的,目前用着还行。
- 浏览器主要是用来给ai使用爬一些网站,如下记录,还挺好用。还有登录云盘等,相当于AI帮你接管云盘,整理文件都是洒洒水啦。

- 纸飞机bot,部署本地买api花了我20大洋,和微信的aiclaw之类的都差不多。比较有价值的功能就是,我用手机将资源转发给bot之后,容器会帮你把文件直接拉到本地nas。也可以转译种子文件成磁力,我一般是爬完磁力之后交给115云下载,然后通过smartstrm生成strm文件,emby刮削。但是这个bot最大限制2G的文件下载,好像开会员才能下载更大的文件,不知道大佬有没有好办法,有的黄油zip动辄4GB,难顶。
# ============================================================
# 🐳 Hermes Agent — NAS 智能助手全家桶 Docker Compose
# 管理目录: /fnos/docker/hermes/
# 宿主机映射: /vol1/1000/docker → /fnos/docker
# ============================================================
services:
# ==================== 🤖 Hermes Agent 本体 ====================
hermes-agent:
image: nousresearch/hermes-agent:latest # Hermes Agent 官方镜像
container_name: hermes-agent # 容器名,方便 docker 命令操作
command: gateway run # 启动网关模式(同时跑 Telegram/微信网关)
ports:
- "8642:8642" # Agent HTTP API(仅供本地访问)
- "9119:9119" # Hermes Dashboard 端口(需 WebUI 搭配使用)
volumes:
- ./hermes-home:/home/hermes/.hermes # Hermes 配置/技能/记忆持久化目录
- ./telegram-bot-api-data:/var/lib/telegram-bot-api # 与 telegram-bot-api 共享 Telegram 数据
- /vol1/1000/docker:/fnos/docker # 宿主机数据目录映射(脚本/文件操作)
- /vol1/1000/strm:/fnos/strm # STRM 文件目录(Emby 媒体库)
- /var/run/docker.sock:/var/run/docker.sock # Docker socket(让 Agent 能管理容器)
- ./hermes-agent-venv:/opt/hermes/.venv # Python venv 持久化(避免每次重装依赖)
environment:
- TZ=Asia/Shanghai # 时区:北京时间
- HERMES_HOME=/home/hermes/.hermes # Hermes 家目录(容器内路径)
- HERMES_UID=1000 # 运行用户 UID(NAS 管理员)
- HERMES_GID=1000 # 运行用户 GID
- HERMES_DASHBOARD_HOST=0.0.0.0 # Dashboard 监听所有网卡
- HERMES_DASHBOARD_PORT=9119 # Dashboard 端口
- HERMES_TELEGRAM_HTTP_READ_TIMEOUT=1200 # Telegram HTTP 读取超时(秒),大文件下载不超时
restart: unless-stopped # 崩溃时自动重启,除非手动停止
networks:
hermes-net:
ipv4_address: 172.31.0.3 # 固定内网 IP,方便其他容器互通
# ==================== 🖥️ Hermes WebUI(浏览器聊天界面) ====================
hermes-webui:
image: ghcr.io/nesquena/hermes-webui:latest # Hermes WebUI 镜像
container_name: hermes-webui
command: bash -c "(sleep 600 && python3 /home/hermeswebui/.hermes/scripts/reapply-gateway-fix.py) & exec /hermeswebui_init.bash"
# ↑ 启动后等 10 分钟才执行网关修复脚本(等 Agent 启动完),然后才启动 WebUI 主进程
depends_on:
- hermes-agent # 等 Agent 先启动
ports:
- "8787:8787" # WebUI 页面端口(仅本地访问,防未授权)
group_add:
- "994" # 加入宿主机 docker 组,才能访问 docker socket
volumes:
- ./hermes-home:/home/hermeswebui/.hermes # 与 Agent 共享同一套配置(注意用户不同)
- ./workspace:/workspace # 工作目录挂载
- ./hermes-agent-src:/opt/hermes # Agent 源码目录(WebUI 需读取)
- ./telegram-bot-api-data:/var/lib/telegram-bot-api # 共享 Telegram 数据
- /vol1/1000/docker:/fnos/docker # 宿主数据目录
- /vol1/1000/strm:/fnos/strm # STRM 文件目录
- /var/run/docker.sock:/var/run/docker.sock # Docker socket
environment:
- TZ=Asia/Shanghai
- HERMES_WEBUI_HOST=0.0.0.0 # WebUI 监听所有网卡
- HERMES_WEBUI_PORT=8787 # WebUI 端口
- HERMES_WEBUI_STATE_DIR=/home/hermeswebui/.hermes/webui # WebUI 状态文件存储目录
- HERMES_HOME=/home/hermeswebui/.hermes # WebUI 视角的 Hermes 家目录
- WANTED_UID=1000 # 希望运行的用户 UID
- WANTED_GID=1000 # 希望运行的用户 GID
- HERMES_WEBUI_AGENT_DIR=/opt/hermes # Agent 源码位置(WebUI 用来加载功能)
- PYTHONPATH=/opt/hermes:/app/venv/lib/python3.12/site-packages # Python 导入路径
restart: unless-stopped
networks:
hermes-net:
ipv4_address: 172.31.0.4 # 固定内网 IP
# ==================== 🌐 Edge 浏览器(CDP 远程控制) ====================
chromium:
# image: lscr.io/linuxserver/chromium:latest # Chromium 备选(现在用 Edge)
image: lscr.io/linuxserver/msedge:latest # 微软 Edge 浏览器(用于 CDP 控制 + 下载文件)
container_name: edge # 容器名 edge,简洁好记
security_opt:
- seccomp:unconfined # 放开 seccomp 限制(浏览器需要更多系统调用)
environment:
- PUID=1000 # 进程用户 UID
- PGID=1000 # 进程用户 GID
- TZ=Asia/Shanghai
- LC_ALL=zh_CN.UTF-8 # 中文环境,避免乱码
# Intel 核显硬件加速(Wayland 零拷贝)
- PIXELFLUX_WAYLAND=true # 强制 Wayland 模式(i3-8100 支持 AVX2)
- DRINODE=/dev/dri/renderD128 # 渲染 GPU 节点(i3-8100 核显默认)
- DRI_NODE=/dev/dri/renderD128 # 编码 GPU 节点(与渲染节点相同 → 零拷贝)
- EDGE_CLI=--disable-gpu-sandbox --enable-features=VaapiVideoDecoder,VaapiVideoEncoder --remote-debugging-port=9222 --remote-debugging-address=0.0.0.0 --remote-allow-origins=*
# ↑ Edge 启动参数:关 GPU 沙箱、开硬件视频编码/解码、CDP 端口 9222、允许所有来源连接
- DOCKER_MODS=linuxserver/mods:universal-package-install # Docker 模组:允许额外装软件
- INSTALL_PACKAGES=socat # 额外安装 socat(端口转发工具)
volumes:
- ./chrom/msedge-config:/config # Edge 浏览器配置持久化(登录态/书签等)
- ./chrom/99-cdp-forward.sh:/etc/cont-init.d/99-cdp-forward:ro # CDP 端口转发脚本,这是ai跑脚本用的
- ./chrom/patch-edge-cdp.sh:/etc/cont-init.d/99-patch-edge-cdp:ro # CDP 补丁脚本,这也是ai跑脚本用的
ports:
- 3001:3001 # Edge 页面端口(可浏览器直接访问)
shm_size: "4gb" # 共享内存 4GB(浏览器很吃 shm)
devices:
- /dev/dri:/dev/dri # 挂载 Intel 核显设备(硬件加速)
restart: unless-stopped
networks:
hermes-net:
ipv4_address: 172.31.0.2 # 固定内网 IP(CDP 连接地址)
# ==================== 📨 Telegram Bot API(本地版) ====================
telegram-bot-api:
image: aiogram/telegram-bot-api:latest # Telegram Bot API 本地版(不走官方服务器)
container_name: telegram-bot-api
environment:
- TELEGRAM_API_ID=******* # Telegram 开发者 API ID
- TELEGRAM_API_HASH=********************* # Telegram 开发者 API Hash
- TELEGRAM_LOCAL=true # 本地模式:不走官方 Bot API 服务器,直连 Telegram
volumes:
- ./telegram-bot-api-data:/var/lib/telegram-bot-api # Telegram 数据持久化(聊天记录/文件缓存)
restart: unless-stopped
networks:
hermes-net:
ipv4_address: 172.31.0.5 # 固定内网 IP(agent/webui 通过此地址调用)
# ==================== 🌐 网络配置 ====================
networks:
hermes-net:
driver: bridge # 桥接网络,容器间互通
ipam:
config:
- subnet: 172.31.0.0/16 # 子网段(预留足够 IP)
gateway: 172.31.0.1 # 网关地址