Hermes WebUI Docker 部署完整指南:从单容器到生产环境的落地路径
【免费下载链接】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 打造的浏览器/手机 Web 界面:左侧会话列表、中间对话区、右侧工作区,支持文件预览与拖拽。本文覆盖 Hermes WebUI Docker 部署的完整路径,从环境检查到生产环境加固。
怎么把它跑起来
Hermes WebUI 是一个 Python 编写的 Web 服务,手动安装要自己处理 Python 版本、依赖包与端口占用;容器化安装后这些琐事全部封进镜像,你只需维护一个编排文件。先做两项环境预检:
docker --version docker compose version各输出一行版本号即过关。Compose 插件 Docker Desktop 自带,Linux 上若提示找不到命令需单独安装。
接着拉取代码并生成配置:
git clone https://gitcode.com/GitHub_Trending/he/hermes-webui cd hermes-webui cp .env.docker.example .env仓库里已备好 Dockerfile 与三套编排文件,无需另装任何运行时依赖。打开.env核对三个关键值:UID/GID必须与宿主机一致,运行id -u和id -g实测后填入;端口默认映射127.0.0.1:8787:8787,本机被占用时改到空闲端口;HERMES_WEBUI_PASSWORD建议一开始就设置,尤其是端口要对外暴露时。
然后启动:
docker compose up -d-d表示后台运行,首次执行会先构建镜像,耗时几分钟。打开浏览器访问http://localhost:8787,看到左侧会话列表、中间对话区、右侧工作区的三栏界面即部署成功;若没起来,用下面的命令实时滚动日志定位根因:
docker compose logs -f hermes-webui数据怎么不丢
删除容器时,容器内部的东西会一并消失。Hermes WebUI 用两个卷挂载化解这个问题:
${HERMES_HOME:-${HOME}/.hermes}:/home/hermeswebui/.hermes:存放会话记录、配置与系统状态;${HERMES_WORKSPACE:-${HOME}/workspace}:/workspace:对应界面右侧的工作区文件。
容器内的一切变化都写回宿主机这两个目录,删除或重启容器数据不丢。想把数据收进其他分区,覆盖变量再启动即可:
export HERMES_HOME=/data/hermes/config export HERMES_WORKSPACE=/data/projects docker compose up -d数据卷备份只需一条命令,$(date +%Y%m%d)自动带上日期;建议配合定时任务每周执行,并把备份文件放到另一块磁盘:
tar -czf hermes-backup-$(date +%Y%m%d).tar.gz ~/.hermes/怎么长期用得好
日常三件套与升级顺序
docker compose ps # 容器状态与端口映射 docker compose logs -f hermes-webui # 实时日志 docker compose down # 优雅停止,数据卷保留升级时按此顺序执行:先拉新代码,再重建镜像,最后重启:
git pull docker compose down docker compose up -d --build⚠️ 升级期间服务会短暂中断,建议挑低峰期执行。
从单容器到多容器:一个升级决策点
单容器够用就不必动。团队使用或需要更高隔离性时,仓库预置了两套进阶编排,切换成本只有一条命令:
- 双容器
docker-compose.two-container.yml:把聊天界面与 Hermes 网关拆成两个容器,网关承担 CLI、定时任务等后台工作,一边崩溃不牵连另一边,资源也能分开限制; - 三容器
docker-compose.three-container.yml:在此之上增加监控仪表盘,用于查看系统状态、资源占用与日志聚合,适合需要运维视角的团队。
建议先跑单容器验证功能,确有需要再升级;起步就上三容器会扩大排障面。
生产环境加固三件事
- 给容器设资源上限,防止异常进程吃满宿主机内存,在
docker-compose.yml的hermes-webui服务下追加:
deploy: resources: limits: memory: 2G cpus: '1.0'- 锁住访问入口:⚠️ 若把端口暴露给局域网或公网,必须同时设置
HERMES_WEBUI_PASSWORD,并保留ports里的127.0.0.1前缀。没有密码的暴露端口,等于把终端权限交到陌生人手里。 - 定期清理回收:镜像与悬空卷会随时间膨胀,每月执行一次(执行前确认没有正在运行的容器):
docker system prune -a --volumes出问题了怎么办
高频问题集中在下表,其中端口冲突处理是启动阶段最常见的,先看表定位再动手:
| 现象 | 原因与处理 |
|---|---|
| 启动时报端口冲突 | 8787 被占用。只改docker-compose.yml中ports映射冒号左侧为空闲端口,如127.0.0.1:8888:8787,容器内部的 8787 不要动,再执行docker compose up -d |
| 挂载目录无法写入、保存失败 | UID/GID 与宿主机不一致。回到.env核对id -u与id -g的输出,修改后重启容器;macOS 上 UID 通常从 501 起步而非 Linux 常见的 1000,务必实测。仍不生效时,检查日志中是否有 chmod 相关报错 |
| 使用中弹出 429 限流 | 界面会直接给出错误卡片,列出三条出路:充值、等待额度窗口重置、切换其他服务商;展开卡片还能看到 HTTP 状态码与错误类型,便于判断走哪条路 |
部署完成后立刻做的三件事
先别急着研究全部设置,让 AI 做几件真事来验证链路:
- 新建一个会话,问它"当前工作区里有哪些文件"——验证右侧工作区是否与你挂载的项目目录联动;
- 给这次对话打一个标签,再用顶部搜索框把它找回来——熟悉会话管理;
- 把一个文件拖进对话窗口,让它总结内容——体会"文件浏览器 + AI"的组合。
需要更深入的细节时看官方文档:Docker 部署的完整参考在 docs/docker.md,高频问题的排查方法在 docs/troubleshooting.md,设计理念在 docs/why-hermes.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),仅供参考