
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”時出現的這類認證失敗?!久赓M下載鏈接】ente End-to-end encrypted cloud for everything.項目地址: https://gitcode.com/GitHub_Trending/en/ente創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考