Appearance
Managed 模式下 dashboard 无法工作:gateway.pid 缺失 + 权限问题
问题
通过 NixOS module 以 managed/native 模式运行 Hermes 时,hermes dashboard 对 hermes 用户组成员无法正常工作,存在三个独立问题:
问题 1:gateway.pid 未写入
managed gateway(通过 systemd 启动)只写入 gateway_state.json,从不写入 gateway.pid。dashboard 的 get_running_pid() 只读取 gateway.pid,因此始终返回 None——即使 gateway 正在运行,dashboard 也显示"Gateway: not running"。
问题 2:数据目录权限不对
~/.local/share/hermes(实际是 /var/lib/hermes)归 hermes 系统用户所有,hermes 组的成员无法写入。hermes dashboard 在启动时需要写入这个目录,导致普通用户权限不足直接崩溃。
问题 3:systemd unit 缺少网络依赖
systemd unit 不依赖 network.target,在系统 boot 时 gateway 比网络就绪更早启动,导致 Discord、Telegram 等平台的连接在 boot 时失败。
解决方案
问题 1 修复:在 managed 模式启动时,同时写入 gateway.pid(写入 gateway 进程的 PID),或修改 get_running_pid() 改为读取 gateway_state.json 中的 PID 字段。
问题 2 修复:NixOS module 中应将数据目录的组权限设为 g+rwx,或让 hermes dashboard 以 hermes 系统用户权限运行(通过 setuid 或 sudo 规则)。
问题 3 修复:在 systemd unit 的 [Unit] 段添加:
ini
After=network.target
Wants=network-online.target影响环境:NixOS managed 模式,使用 hermes systemd 服务
Issue:#9383