Hermes WebUI Docker 启动报 “.env permission denied“ 怎么配置权限修复开关

发布时间:2026/9/14 4:05:22
Hermes WebUI Docker 启动报 “.env permission denied“ 怎么配置权限修复开关
Hermes WebUI Docker 启动报 .env permission denied 怎么配置权限修复开关【免费下载链接】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用 Docker 部署 Hermes WebUI 时如果你的.env文件带有 group 权限位比如 0640容器启动后会先打印一行权限修正日志紧接着报.env读取失败、无法启动。本文对应 docs/docker.md What goes wrong 一节中记录的 #1389 问题说明如何通过HERMES_SKIP_CHMOD和HERMES_HOME_MODE两个权限修复开关关闭或放宽启动时的强制 chmod 行为让容器正常启动。先确认是这个问题的现象docs/docker.md 给出的判定条件是宿主机上.env文件被设置成 0640 这类 group 可读模式例如 bind-mount 一个已存在的~/.hermes.env故意保持 group 可读容器启动后日志出现[security] fixed permissions on .env (0o640 - 0600) failed to load .env: open .env: permission denied如果日志是其他路径的PermissionError如/home/hermeswebui/.hermes/...读不到那是 bind mount 的 UID/GID 不匹配问题对应同一文档中的第 1 条需要设置UID/GID不是本文的开关能解决的。原因启动钩子默认强制 0600WebUI 每次进程启动都会执行 api/startup.py 中的fix_credential_permissions()。它扫描HERMES_HOME下的敏感文件——.env、google_token.json、google_client_secret.json、.signing_key、auth.json——对带 group/other 位的文件强制改回0600并打印上面那行[security] fixed permissions ...日志。文档指出这对干净安装是正确行为但会覆盖运维者刻意设置的 group 位导致.env加载失败。在 .env 里配置权限修复开关修复方式是设置下面两个环境变量之一写进你的.env文件也就是 compose 读取的环境文件HERMES_SKIP_CHMOD1— 完全绕过这个修正钩子HERMES_HOME_MODE0640— 允许 group 位只剥掉 world 可读位HERMES_SKIP_CHMOD1或者HERMES_HOME_MODE0640.env.docker.example的 Permission handling for bind-mounted .hermes 一节对这两个开关有同样的说明三个 compose 文件docker-compose.yml、docker-compose.two-container.yml、docker-compose.three-container.yml的 WebUI service 块里也留了对应的注释行可以按需取消注释。改完后重启容器。单容器docker-compose.yml按 docs/docker.md 给出的命令docker compose down docker compose up -d两容器或三容器布局带上-f指定 compose 文件docker compose -f docker-compose.two-container.yml down docker compose -f docker-compose.two-container.yml up -d三容器把文件名换成docker-compose.three-container.yml。多容器布局下 HERMES_HOME_MODE 的语义差异如果你在跑docker-compose.two-container.yml/docker-compose.three-container.yml注意HERMES_HOME_MODE在 WebUI 和 agent 镜像里含义不同WebUIcredential 文件.env、.signing_key等的 mode 阈值0640表示允许 group 位AgentHERMES_HOME目录的 mode默认07000640用在目录上没有 owner 执行位agent 无法进入自己的 home 目录容器直接起不来。多容器场景如果要给 agent 侧设置应使用HERMES_HOME_MODE0750group 可穿越或0701x-only。两个 compose 文件的 agent 与 WebUI service 块内的注释分别标注了各自的正确取值不要互相照抄数值。另外agent 容器自身检测到/.dockerenv后会自动跳过 credential chmod所以 agent 侧的HERMES_SKIP_CHMOD是多余的不用配置。验证结果按 docs/docker.md 末尾给出的诊断方式查看容器日志docker logs hermes-webui确认不再出现[security] fixed permissions on .env和failed to load .env: open .env: permission denied两行然后按快速启动一节的步骤打开http://localhost:8787页面能加载即说明.env已被正常读取。相关背景#1389HERMES_HOME_MODE覆盖行为v0.50.254 起 agent 侧也遵循HERMES_SKIP_CHMOD与HERMES_HOME_MODE见 docs/docker.md 的 Related issues 一节实现细节见 api/startup.py 的fix_credential_permissions()HERMES_SKIP_CHMOD取1或true时直接返回设置了HERMES_HOME_MODE时只清除 other 位0o007否则整体改到0o600如果你是在 bind-mount 迁移既有~/.hermes同一文档的 Bind-mount migration 一节的第 4 条要求同样设置HERMES_SKIP_CHMOD1或HERMES_HOME_MODE0640避免启动钩子再去强制 0600【免费下载链接】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),仅供参考