OpenClaw不是很喜欢,尝试了下就没有用过了,看到Hermes Agent整体确实还是不错,内存占用很低,所以决定长期使用。
一、Docker-Compose
直接贴compose,官方教程是配置环境变量.env,但实际上可以不用配置,通过直接初始化的方式,根据向导一步步配置。+
20260613更新,官方已经不建议面板和后端分成两个容器,当前已经合并,直接运行即可,需要调整可基于官方文档调整。
https://hermes-agent.nousresearch.com/docs/zh-Hans/user-guide/docker
测试的时候发现,新版Hermes 的 Docker 镜像是用 s6-overlay 这种进程管理工具构建的,它会在容器启动时把 gateway 和 dashboard 都管理起来。所以,当你运行 dashboard 命令时,容器里的后台进程(s6-log)还是会尝试去写网关的日志。两个容器都这么做,就在同一个文件上锁死了,甚至有可能会挂起了多个gateway,导致信息重复。
20260621更新,:
HERMES_DASHBOARD_INSECURE环境变量已经不能再绕过认证了,别费劲尝试。飞书lark-oapi安装目录权限有问题,修改默认目录。
services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes
restart: always
command: gateway run
ports:
- "8642:8642" # 网关 API
- "9119:9119" # 仪表盘界面
volumes:
- ./data:/opt/data # 只保留一个数据目录
environment:
- HERMES_DASHBOARD=1
- HERMES_DASHBOARD_INSECURE=1 # 绕过认证(仅在可信网络使用)
- HERMES_DASHBOARD_HOST=0.0.0.0 # 删除或注释这一行
- MATRIX_ENCRYPTION=true
- HERMES_LAZY_INSTALL_TARGET=/opt/data/lazy-packages #飞书lark-oapi目录修改
#- HERMES_DASHBOARD_BASIC_AUTH_USERNAME=admin # 如需用户名密码认证
#- HERMES_DASHBOARD_BASIC_AUTH_PASSWORD=admin123
- TZ=Asia/Shanghai
# 其他 API 密钥可以直接传递或使用 .env 文件
# - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
# - OPENAI_API_KEY=${OPENAI_API_KEY}
deploy:
resources:
limits:
memory: 4G
cpus: "2.0"
networks:
- hermes-net
networks:
hermes-net:
driver: bridge
二、初始化
在compose目录运行初始化,进入向导配置,此时会创建一个临时的容器完成配置,配置完成后容器自动删除。
sudo docker compose run --rm hermes setup

三、配置客户端的说明
以微信为例,选微信后直接打开链接扫描二维码,此时会获得account_id,如果开启了WEIXIN_GROUP_POLICY=true 那么需要把account_id配置给 WEIXIN_GROUP_ALLOWED_USERS。

配置后,给bot发一句话,会给出弹出配对码,配对即可,配对后重启下容器,让.env生效。
如果发了信息没反应,看看.env中的WEIXIN_GROUP_POLICY和WEIXIN_ALLOW_ALL_USERS他俩的值,
- 如果
WEIXIN_GROUP_POLICY=true,那么需要把account_id配置给WEIXIN_GROUP_ALLOWED_USERS, - 如果
WEIXIN_GROUP_POLICY=disabled,那么需要把WEIXIN_ALLOW_ALL_USERS配置成true。
#方法一:一步到位的单行命令(推荐) docker exec -it hermes bash -ic "hermes pairing approve weixin xxxx" #方法二:进入容器后再执行 docker exec -it hermes bash uv run hermes pairing approve weixin xxxx

四、WebUI
通过9119运行WebUI,发现报错,。Refusing to bind to 0.0.0.0 — the dashboard exposes API keys and config without robust authentication. Use --insecure to override...
回看Compose,是由于dashboard --host 0.0.0.0 意思是“向所有网络公开这个面板”。
官方认为这太危险了——如果在云服务器是在阿里云、腾讯云等公有云上,一旦面板直接暴露在公网(且没有任何账号密码拦截),任何人只要扫描到你的 IP 和 9119 端口,就能进去把你的 API Key 偷光。
不过我是在本地部署无所谓,于是修改为
当前更新后的dashboard 暴露到公网(非 loopback 地址),系统强制要求认证,不允许无认证的公网暴露。
密码认证,先生成密码哈希:
python -c "from plugins.dashboard_auth.basic import hash_password; print(hash_password('你的密码'))"
然后在 config.yaml 中设置:
dashboard:
basic_auth:
username: your-username
password_hash: "生成的哈希值"
重新构建下容器。
sudo docker compose up -d --force-recreate
部署成功,个人感觉非常不错

本文作者:ZKCOI
文章名称:Docker部署Hermes Agent排坑指南
文章链接:https://www.zkcoi.com/365up/ai-agent/4558.html
本站资源仅供个人学习和交流,如若转载,请注明出处,详见《免责声明》。
微信扫一扫
支付宝扫一扫
