如何用 3 个容器和 5 条命令快速完成 Hermes WebUI 多容器部署:Agent + WebUI + Dashboard 教程
2026/9/9 14:36:25 网站建设 项目流程

如何用 3 个容器和 5 条命令快速完成 Hermes WebUI 多容器部署:Agent + WebUI + Dashboard 教程

【免费下载链接】hermes-webuiHermes WebUI: The best way to use Hermes Agent from the web or from your phone!项目地址: https://gitcode.com/GitHub_Trending/he/hermes-webui

Hermes WebUI 是 Hermes Agent 的浏览器端界面,让你在网页或手机上直接指挥自己的智能体。多容器部署把 Agent、WebUI、Dashboard 拆进三个独立容器,各自升级互不牵连,坏了只需重启那一个。照着这篇走一遍,用 docker compose 一键部署后,你会拿到一个开箱即用的聊天界面加一个资源监控面板。

一图看懂:三个容器各管什么

容器之间通过 Docker 网络互访,并共享同一个hermes-home命名卷,所以会话、配置、技能在三处看到的是一致的。

容器职责对外端口
hermes-agent大脑:跑 gateway,负责 API、定时任务、消息通道8642(默认仅本机回环)
hermes-webui脸面:你日常打开的网页聊天界面8787
hermes-dashboard体检室:看会话数、Token 消耗、CPU/内存/磁盘9119

动手前检查清单:30 秒确认环境

  • Docker Engine 20.10.0 及以上
  • Docker Compose 2.0.0 及以上(终端里能敲出docker compose
  • 至少 4GB 空闲内存(agent 默认上限 4G)
  • 至少 10GB 磁盘空间(镜像 + 两个命名卷)
  • 网络通畅,能拉取nousresearch/hermes-agentghcr.io/nesquena/hermes-webui镜像

确认无误后,克隆仓库并进入目录:

git clone https://gitcode.com/GitHub_Trending/he/hermes-webui cd hermes-webui

第一步:改配置——三容器编排文件里真正重要的几行

三容器方案由 docker-compose.three-container.yml 定义,全部细节不用逐行读,抓住这几处即可:

services: hermes-agent: command: gateway run ports: - "127.0.0.1:8642:8642" # 默认只绑定本机,远程访问需额外配置 volumes: - hermes-home:/home/hermes/.hermes # 共享状态卷 - hermes-agent-src:/opt/hermes # 源码卷,WebUI 启动时读它装依赖 hermes-dashboard: command: dashboard --host 0.0.0.0 --insecure hermes-webui: ports: - "127.0.0.1:8787:8787" volumes: - ${HERMES_WORKSPACE:-${HOME}/workspace}:/workspace # 工作区目录 # 其余配置略

两个默认行为值得知道:三个端口都绑在127.0.0.1,即只允许本机访问;工作区默认指向${HOME}/workspace,想换路径不用改 YAML,后面会用环境变量解决。

第二步:一键启动三容器

在仓库根目录执行:

docker compose -f docker-compose.three-container.yml up -d

首次运行会自动拉取镜像,耗时取决于带宽。三个容器都进入 Up 状态后,WebUI 会在启动时从共享源码卷安装 Agent 的 Python 依赖,首次启动稍慢属正常现象。

第三步:打开浏览器看结果

  • 聊天界面:http://localhost:8787
  • 监控面板:http://localhost:9119

部署后验证:两个地址 + 一条自检命令

打开 Dashboard 后进入 Insights 页,"System health" 区块会实时显示 CPU、RAM、磁盘占用,能看到数字就说明 agent 到 dashboard 的健康链路是通的:

再用一条命令确认 WebUI 没有异常日志:

docker logs hermes-webui --tail 50

想排查 agent 侧或定时任务,把容器名换成hermes-agenthermes-dashboard即可。Dashboard 自带日志面板,支持自动刷新与整页复制:

进阶玩法:工作目录、UID/GID 与 5 分钟配好访问密码

三件事都通过.env文件完成,不用动 YAML。在仓库根目录追加三行后重建容器即可生效:

echo "HERMES_WORKSPACE=/path/to/your/project" >> .env echo "UID=$(id -u)" >> .env echo "GID=$(id -g)" >> .env echo "HERMES_WEBUI_PASSWORD=换一个强密码" >> .env
  • HERMES_WORKSPACE决定 WebUI 里工作区面板看到哪个目录,改前确认该目录存在;
  • UID/GID让容器内进程以你本机的用户身份写文件,macOS 用户注意 UID 从 501 起步,不是 1000;
  • HERMES_WEBUI_PASSWORD一旦你把 8787 端口暴露到0.0.0.0供远程访问,它就是必选项。

追加配置后执行一次重建让环境变量注入:

docker compose -f docker-compose.three-container.yml up -d

踩坑速查:三类高频问题一次讲清

现象原因解法
容器里报Permission deniedPermissionError绑定挂载目录的属主与容器内 UID 不一致按上文把id -u/id -g写入.env;或干脆沿用默认的命名卷,绕开宿主机权限
WebUI 顶部提示 "Gateway endpoint not reachable"8642 端口未监听——agent 要求API_SERVER_KEY不少于 16 位才会开启该端口.env里加一行API_SERVER_KEY=<16位以上密钥>后重建容器
服务起不来,报端口占用8787/9119 已被其他程序占用改宿主机一侧映射,如"127.0.0.1:18787:8787",然后按新端口访问
容器运行缓慢或 OOM 退出宿主资源被抢占,超出deploy.resources.limits上限调大 YAML 中对应服务的memory/cpus限制,或关掉其他吃内存的容器

升级与备份:各备一段命令

升级时最容易踩的坑是:hermes-agent-src卷只在首次up时从镜像初始化,之后 Docker 会一直复用它,导致docker pull到的新镜像代码被旧卷"挡住"。所以升级要先删这个卷(hermes-home卷存着你的会话与配置,千万别删):

docker compose -f docker-compose.three-container.yml down docker volume rm hermes-webui_hermes-agent-src docker compose -f docker-compose.three-container.yml pull docker compose -f docker-compose.three-container.yml up -d

注意卷名里的hermes-webui是 Compose 项目名(默认取父目录名),不确定时用docker volume ls核对。

备份只关心hermes-home这一个卷,用一次性容器打包即可:

docker run --rm -v hermes-webui_hermes-home:/source -v $(pwd):/backup alpine tar -czf /backup/hermes-home-backup.tar.gz -C /source .

到这里,你的 Hermes Agent 已经以三容器形态完整跑起来了:聊天在 8787,体检在 9119,状态都沉淀在共享卷里,随时可以升级或整体搬迁。

参考文档:docker-compose.three-container.yml、docs/docker.md、ARCHITECTURE.md

【免费下载链接】hermes-webuiHermes WebUI: The best way to use Hermes Agent from the web or from your phone!项目地址: https://gitcode.com/GitHub_Trending/he/hermes-webui

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询