基于Docker Compose为Hermes Agent配置hermes-dashboard、hermes-webui,前后折腾了好几天时间,经历各种问题。整理出来方便大家对照查看。
在setup页面设置模型后,并没有生效, sudo docker exec hermes-agent cat /home/hermes/.hermes/config.yaml 仍然是原来默认配置。Docker 部署的 Hermes WebUI 修改模型后,配置未持久化 / 未生效,始终读取容器内默认的 config.yaml
一、核心原因
Docker 容器隔离性
容器内的
/home/hermes/.hermes/config.yaml是独立文件,WebUI 的设置默认无法写入容器内部,修改完全不生效。配置优先级规则
Hermes 官方明确:环境变量(.env) > config.yaml 配置文件,如果你的
.env里有模型相关变量,会强制覆盖页面设置。无持久化挂载
没有将宿主机的配置文件挂载到容器,容器重建 / 重启后,所有修改都会丢失,恢复默认配置。
WebUI 与 hermes-agent 分离
WebUI 是前端界面,
hermes-agent是后端执行器,页面设置未同步到 agent 的配置。
二、分步解决方案(从临时到永久生效)
方案 1:临时修改容器内配置(快速测试,重启失效)
直接编辑容器内的配置文件,立即生效:
进入容器编辑配置
sudo docker exec -it hermes-agent vi /home/hermes/.hermes/config.yaml
修改模型配置:
model:
default: "模型名称" # 例如 openrouter/qwen/qwen3.5-72b
provider: "openrouter" # 对应你的服务商
base_url: "https://openrouter.ai/api/v1"
保存退出(vi 编辑器:
Esc→:wq),重启容器:
sudo docker restart hermes-agent
方案 2:永久生效(推荐)→ 挂载宿主机配置到容器
这是根本解决方法,让宿主机的配置文件接管容器,WebUI 修改也能持久化:
步骤 1:宿主机创建配置目录
mkdir -p ~/.hermes
步骤 2:复制容器默认配置到宿主机
sudo docker cp hermes-agent:/home/hermes/.hermes/config.yaml ~/.hermes/
步骤 3:修改 Docker 启动命令(添加挂载)
关键:在你的 docker run 命令中添加配置文件挂载参数,把宿主机的 ~/.hermes 映射到容器内:
# 示例完整启动命令(替换你原本的镜像/参数)
sudo docker run -d \
--name hermes-agent \
-v ~/.hermes:/home/hermes/.hermes \ # 核心挂载:宿主机 → 容器
-v /var/run/docker.sock:/var/run/docker.sock \
--env-file .env \
hermes-agent:latest
步骤 4:修改宿主机配置(永久生效)
直接编辑宿主机的配置文件,无需进入容器:
vi ~/.hermes/config.yaml
修改完成后重启容器即可:
sudo docker restart hermes-agent
方案 3:让 WebUI 设置真正生效
完成挂载后,再做这两步,页面设置就会同步生效:
关闭环境变量覆盖
打开宿主机的
.env文件,删除所有模型相关环境变量(这些会强制覆盖配置):env
# 删除/注释掉以下变量 # HERMES_MODEL=xxx # HERMES_INFERENCE_PROVIDER=xxx # HERMES_BASE_URL=xxx重启所有服务
sudo docker restart hermes-webui hermes-agent
三、验证配置是否生效
查看容器内配置是否更新:
sudo docker exec hermes-agent cat /home/hermes/.hermes/config.yaml
查看 Hermes 当前使用的模型:
sudo docker exec -it hermes-agent hermes model --get
四、额外排查(如果仍不生效)
文件权限问题
容器内无权限写入配置,修复宿主机文件权限:
chmod 644 ~/.hermes/config.yaml
chown -R $USER:$USER ~/.hermes
模型名称格式错误
必须使用 Hermes 支持的格式:
OpenRouter:
openrouter/模型名本地 Ollama:
ollama/模型名Anthropic:
anthropic/模型名
WebUI 缓存
清空浏览器缓存,刷新 Setup 页面重新设置。
总结
核心问题:Docker 容器未挂载配置文件 + 环境变量覆盖
永久方案:挂载宿主机
~/.hermes到容器生效前提:删除
.env中的模型环境变量,重启容器按照这个流程操作,WebUI 的模型设置会完全生效且持久化。