收起左侧

hermes-webui持久化部署

0
回复
16
查看
[ 复制链接 ]

2

主题

39

回帖

0

牛值

江湖小虾

hermes持久化部署,搞了两天终于搞得差不多了,请大佬指点。这个compose文件里面包含了agent本体、webui(可以反代出去使用)、edge浏览器、纸飞机bot。compose文件是从网上找的,然年让ai一步步优化出来的,目前用着还行。

  • 浏览器主要是用来给ai使用爬一些网站,如下记录,还挺好用。还有登录云盘等,相当于AI帮你接管云盘,整理文件都是洒洒水啦。image.png
  • 纸飞机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                      # 网关地址


收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则