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

AWS ECS部署的Wiki.js无法连接Postgres数据库问题排查

AWS ECS部署Wiki.js数据库连接问题排查

环境配置

ECS任务定义核心内容

{
    "taskDefinitionArn": "xxx",
    "containerDefinitions": [
        {
            "name": "wikijs",
            "image": "requarks/wiki:2",
            "portMappings": [
                {
                    "name": "wikijs-3000-tcp",
                    "containerPort": 3000,
                    "hostPort": 3000,
                    "protocol": "tcp",
                    "appProtocol": "http"
                },
                {
                    "name": "wikijs-80-tcp",
                    "containerPort": 80,
                    "hostPort": 80,
                    "protocol": "tcp",
                    "appProtocol": "http"
                }
            ],
            "environment": [
                {
                    "name": "DB_TYPE",
                    "value": "postgres"
                },
                {
                    "name": "DB_SSL",
                    "value": "false"
                },
                {
                    "name": "DB_PASS",
                    "value": "password"
                },
                {
                    "name": "DB_PORT",
                    "value": "5432"
                },
                {
                    "name": "DB_USER",
                    "value": "postgres"
                },
                {
                    "name": "DB_NAME",
                    "value": "wiki"
                },
                {
                    "name": "DB_HOST",
                    "value": "wiki-db.xxx.xxx.rds.amazonaws.com"
                }
            ],
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-create-group": "true",
                    "awslogs-group": "/ecs/wikijs",
                    "awslogs-region": "xxx",
                    "awslogs-stream-prefix": "ecs"
                }
            }
        }
    ],
    "networkMode": "awsvpc",
    "requiresCompatibilities": ["FARGATE"],
    "cpu": "256",
    "memory": "512",
    "runtimePlatform": {
        "cpuArchitecture": "ARM64",
        "operatingSystemFamily": "LINUX"
    }
}
  • 已在Postgres RDS中创建wiki数据库
  • 额外添加了80端口映射(官方指南仅要求配置3000端口)

问题现象

服务启动初始化正常,但数据库连接失败:

关闭SSL时的错误(DB_SSL=false)

- =======================================
- =======================================
- Initializing...
- = Wiki.js 2.5.300 =====================
- Using database driver pg for postgres [ OK ]
- Connecting to database...
- Connecting to database...
- Database Connection Error: 28000 undefined:undefined
- Will retry in 3 seconds... [Attempt 10 of 10]
- Connecting to database...
- Database Initialization Error: no pg_hba.conf entry for host "<ecs task ip>", user "postgres", database "wiki", no encryption

将RDS参数rds.force_ssl设为false后,错误未消除。

开启SSL后的错误(DB_SSL=true)

- Database Initialization Error: self-signed certificate in certificate chain

解决方案

场景1:关闭SSL连接(仅测试环境建议)

  1. 校验RDS安全组:确保ECS任务所在VPC的安全组能访问RDS的5432端口,且RDS安全组已放行ECS任务的IP/安全组。
  2. 确认RDS参数组配置:
    • 确保rds.force_ssl已设为0(false),且参数组已应用到RDS实例(需重启实例生效)。
    • 检查参数组中pg_hba.conf相关规则,添加允许非SSL连接的条目:
      host    wiki    postgres    <ECS任务VPC CIDR>    scram-sha-256
      
  3. 验证Wiki.js环境变量:确认DB_SSL确实为false,无其他环境变量覆盖该设置。

场景2:启用SSL连接(生产环境推荐,符合AWS安全规范)

  1. 配置Wiki.js信任RDS证书:
    • 在Wiki.js环境变量中添加DB_SSL_CA,值填入AWS RDS根证书内容;或挂载证书文件到容器指定路径。
    • 测试环境可临时设置DB_SSL_REJECT_UNAUTHORIZED为false跳过证书验证(生产环境禁止):
      {
          "name": "DB_SSL_REJECT_UNAUTHORIZED",
          "value": "false"
      }
      
  2. 确认RDS SSL配置:将rds.force_ssl设为1(true),强制所有连接使用SSL。

额外排查点

  • 数据库用户权限:执行SQL确认postgres用户拥有wiki数据库的连接权限:
    GRANT CONNECT ON DATABASE wiki TO postgres;
    ALTER USER postgres WITH LOGIN;
    
  • VPC网络连通性:在ECS任务所在VPC内,用psql工具测试RDS连接,排除网络层面故障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:42:32