You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Portainer+Traefik部署PenPot时数据库密码认证失败求助

PenPot部署PostgreSQL密码认证失败排查方案(Portainer+Traefik环境)

核心排查方向

你遇到的FATAL: password authentication failed for user "penpot"错误,和多网络配置无关——penpot-backend与postgres同属default网络,Docker默认会自动解析服务名,网络连通性不存在问题。重点排查以下几个点:

1. PostgreSQL持久化卷残留旧数据

PostgreSQL的用户、数据库仅在第一次启动时初始化。如果之前创建过postgres容器并复用了postgres_data卷,卷内会保留旧的用户密码,即使你修改POSTGRES_PASSWORD也不会覆盖已有配置。

解决步骤:

  • 在Portainer中找到当前PenPot栈,停止postgres容器
  • 删除postgres_data卷(注意:此操作会清空所有数据库数据,仅适合新部署场景)
  • 重新启动整个栈,让postgres重新初始化用户与数据库

2. 手动验证容器间数据库连接

进入penpot-backend容器,直接测试数据库连接,确认是否真的是密码不匹配:

# 进入backend容器(替换为你的容器ID/名称)
docker exec -it <penpot-backend-container-name> bash

# 安装psql客户端(容器默认未预装)
apt update && apt install -y postgresql-client

# 测试数据库连接
psql -h postgres -U penpot -d penpot

输入配置的密码penpot,若能成功连接,说明密码本身没问题,问题出在PenPot后端的配置解析;若连接失败,回到第一步清理卷即可解决。

3. 检查PostgreSQL初始化日志

查看postgres容器的启动日志,确认初始化流程正常:

  • 日志中应包含CREATE ROLE penpot、CREATE DATABASE penpot的记录
  • 确认日志无密码初始化失败相关报错

4. 修正Redis连接配置(额外问题)

你的penpot-backend配置中,PENPOT_REDIS_URI写为redis://penpot-redis/0,但redis服务名是redis,需修正为:

PENPOT_REDIS_URI=redis://redis/0

此错误虽不导致当前认证问题,但会影响PenPot的websocket通知功能,建议同步修正。


内容的提问来源于stack exchange,提问作者user5013

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 04:45:34