易君召
发布于 2026-04-29 / 0 阅读
0
0

Hermes WebUI的UID/GID 设置操作指南

#AI

一、核心概念与作用

在 Hermes-WebUI 部署中,UID/GID 配置的核心目的是解决容器与宿主机文件权限不匹配问题,避免出现 Permission denied 错误,确保容器内进程能正常读写挂载的宿主机目录(如 ~/.hermes~/workspace)。

环境变量

适用组件

作用

WANTED_UID/WANTED_GID

hermes-webui

容器内 hermeswebui 用户的 UID/GID,决定文件读写权限

HERMES_UID/HERMES_GID

hermes-agent/hermes-dashboard

容器内 hermes 用户的 UID/GID,用于与 WebUI 权限统一

UID/GID

兼容性变量

部分配置中用于替代 WANTED_UID/WANTED_GID,提供默认值

二、设置方法(保姆级步骤)

1. 操作时机(关键!)

必须在首次启动容器前完成,建议作为部署的第一步操作。若已启动过容器并出现权限问题,需先停止容器、删除相关卷,重新配置后再启动。

2. 创建 .env 文件(推荐方式)

在项目根目录执行以下命令,自动获取当前用户的 UID/GID 并写入 .env 文件:

# 创建 .env 文件并写入宿主机 UID/GID
echo "UID=$(id -u)" >> .env
echo "GID=$(id -g)" >> .env

# 为 hermes-agent 和 hermes-dashboard 配置相同的 UID/GID
echo "HERMES_UID=$(id -u)" >> .env
echo "HERMES_GID=$(id -g)" >> .env

# 为 hermes-webui 明确配置 WANTED_UID/WANTED_GID(推荐)
echo "WANTED_UID=$(id -u)" >> .env
echo "WANTED_GID=$(id -g)" >> .env

3. 验证配置

查看 .env 文件确认配置正确:

cat .env

预期输出(示例,数字会因用户不同而变化):

UID=1000
GID=1000
HERMES_UID=1000
HERMES_GID=1000
WANTED_UID=1000
WANTED_GID=1000

4. 特殊场景配置

场景

推荐配置

说明

Linux 桌面

UID=\((id -u) GID=\)(id -g)

与当前用户权限一致,避免文件读写问题

macOS

必须显式设置

macOS 用户 UID 从 501 开始,默认 1000 会导致权限错误

NAS/Unraid

WANTED_UID=10000 WANTED_GID=10000

这类系统通常使用高位 UID 避免冲突

三容器部署

三个容器统一使用相同 UID/GID

确保共享卷读写权限一致

三、配置生效方式

1. Docker Compose 部署(推荐)

docker-compose.yml 中引用 .env 文件变量:

yaml

services:
  hermes-webui:
    image: ghcr.io/nesquena/hermes-webui:latest
    environment:
      - WANTED_UID=${WANTED_UID:-1000}  # 优先使用 .env 中的值,默认 1000
      - WANTED_GID=${WANTED_GID:-1000}
    volumes:
      - ~/.hermes:/opt/data
      - ~/workspace:/workspace

  hermes-agent:
    image: nousresearch/hermes-agent:latest
    environment:
      - HERMES_UID=${HERMES_UID:-1000}
      - HERMES_GID=${HERMES_GID:-1000}
    volumes:
      - ~/.hermes:/opt/data

2. 单容器运行

直接通过 -e 参数传递环境变量:

docker run -d \
  -e WANTED_UID=$(id -u) \
  -e WANTED_GID=$(id -g) \
  -v ~/.hermes:/opt/data \
  -v ~/workspace:/workspace \
  -p 8080:8080 \
  ghcr.io/nesquena/hermes-webui:latest

四、权限问题排查与修复

1. 已存在的~/.hermes 目录权限修复

若之前未配置正确 UID/GID 导致权限问题,执行以下命令修复:

# 停止并删除容器
docker compose down

# 修复宿主机目录权限(使用你配置的 UID/GID)
sudo chown -R $(id -u):$(id -g) ~/.hermes

# 重新启动容器
docker compose up -d

2. 自动检测机制说明

  • 最新版本(v0.50.69+)WebUI 支持从 /workspace 目录自动检测 UID/GID

  • 显式在 .env 文件中设置 WANTED_UID/WANTED_GID 始终优先于自动检测

  • 双容器 / 三容器共享卷场景,WebUI 会从共享 hermes-home 卷自动检测正确 UID/GID

五、总结

  1. 操作时机首次部署前创建 .env 文件配置 UID/GID,这是避免权限问题的关键一步

  2. 配置方法:使用 id -uid -g 命令获取当前用户 UID/GID,写入 .env 文件

  3. 核心原则:所有共享同一挂载目录的容器(WebUI、Agent、Dashboard)必须使用相同 UID/GID

  4. 特殊情况:macOS 和 NAS 用户需特别注意 UID/GID 配置,避免默认值导致的权限错误

完成以上配置后,即可正常启动 Hermes-WebUI 容器,享受无权限问题的 AI 代理体验!


评论