Ente 自托管启动报 pq: password authentication failed for user pguser 怎么排查

Ente 自托管启动报 pq: password authentication failed for user pguser 怎么排查 Ente 自托管启动报 pq: password authentication failed for user pguser 怎么排查【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente在自托管 EnteMuseum 服务端 PostgreSQL MinIO 的 Docker Compose 集群时启动过程中 museum 容器可能反复 panic 并以退出码 2 结束日志形如museum-1 | panic: pq: password authentication failed for user pguser museum-1 | museum-1 | goroutine 1 [running]: museum-1 | main.setupDatabase() museum-1 | /etc/ente/cmd/museum/main.go:846 0x338 museum-1 | main.main() museum-1 | /etc/ente/cmd/museum/main.go:124 0x44c museum-1 exited with code 2以上为官方文档给出的示例输出。官方 Docker 排错文档对这一错误的结论是你当前使用的密码并不是 PostgreSQL 期望的密码。也就是说问题不在网络或端口而在于“配置里的凭据”和“数据库卷里实际初始化的凭据”二者对不上。文档列出了两种成因对应的处理路径不同下文按“先判断属于哪一种再执行对应修复”的顺序展开。先判断属于哪种成因两种成因分别对应两种部署方式你的部署方式对应的成因克隆源码后在server/config下用 Docker Compose 运行.env与museum.yaml里的数据库凭据不一致用quickstart.sh在my-ente目录创建了集群后来删掉目录又在同一路径重建复用了旧集群遗留的 Docker 卷卷里的 Postgres 密码是上一轮生成的成因一.env与museum.yaml凭据不一致源码 Compose 部署源码部署文档要求把仓库server/config目录下的example.env复制为.env、example.yaml复制为museum.yaml后再修改。仓库里自带的 example.env 开头就有明确注释# These must match db.user, db.password, and db.name in museum.yaml. POSTGRES_USERpguser POSTGRES_PASSWORDpassword POSTGRES_DBente_db即.env中的POSTGRES_USER/POSTGRES_PASSWORD/POSTGRES_DB必须与museum.yaml中db段的db.user/db.password/db.name完全一致。PostgreSQL 容器只用.env做初始化见 compose.yaml 中 postgres 服务的env_file: .env而 Museum 连接数据库用的是museum.yaml的db段字段含义见 配置文档 的 Database 一节两者任何一项不同步就会出现这个认证错误。修复步骤打开server/config/.env和server/config/museum.yaml核对POSTGRES_USER/POSTGRES_PASSWORD/POSTGRES_DB与db.user/db.password/db.name是否逐一对应。把不一致的值改到一致环境变量文档给出的默认值是POSTGRES_USERpguser、POSTGRES_DBente_db密码为 quickstart 随机生成。按官方文档的提示重启集群让改动生效docker compose down docker compose up成因二复用了旧集群的 Docker 卷quickstart 部署用 quickstart 脚本部署时脚本会在当前工作目录创建./my-ente目录并启动容器。官方文档指出的场景是你在my-ente目录创建过集群之后删掉了这个目录再次运行时又生成了同名的my-ente目录。关键在于删除目录并不会删除 Docker 卷。新集群会挂到旧卷上而旧卷里的 Postgres 数据目录保存的是上一次集群的凭据这一次 quickstart 生成的新密码与卷内旧密码不一致museum 连接即报pq: password authentication failed。文档给出三条处理路径副作用不同按需选择路径 A删除陈旧卷数据会丢确认是此问题后再做先列出卷docker volume ls然后删除以my-ente开头的陈旧卷docker volume rm 卷名文档明确警告这会删除这些卷里的全部数据包括你上传过的任何内容。文档也提到可以用docker system prune --volumes一次删掉所有未在用容器上的卷但该命令会波及机器上所有不仅是 Ente 的未在用卷务必非常谨慎。路径 B随集群一起删卷在my-ente目录下用 compose 删除容器和卷docker compose down --volumes路径 C重命名目录让 Docker 新建卷文档给出的更保守替代文档说明如果你不确定是否要删卷可以直接把my-ente文件夹重命名。Docker 依据目录名确定卷名前缀换个名字后 Docker 会为该集群全新创建卷从而绕开旧凭据。修复后如何验证按文档的通用提示重启集群确保.env、museum.yaml或compose.yaml的改动和卷状态都被拾取docker compose down docker compose up观察启动日志museum 容器不应再出现panic: pq: password authentication failed for user pguser及exited with code 2且应能通过其健康检查后继续拉起集群。若为 quickstart 部署启动完成后按 quickstart 文档的说法应能通过http://localhost:3000本机或http://machine-ip:3000访问 Ente Photos。限制与注意删除卷路径 A、B都是不可逆操作会丢失卷内数据若只是想让新集群跑起来且不关心旧数据路径 C重命名目录是不删卷的替代方式。docker system prune --volumes的影响范围是整台机器上所有未在用容器引用的卷不限于 Ente只在明确接受该范围时才使用。该错误的排查前提是确认报错确实发生在启动阶段museum 容器 panic 退出而不是运行时偶发文档针对的就是“starting your cluster”时出现的这类认证失败。【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考