3.3 KiB
AS4 Settlement - External Database Connection Fix
Date: 2026-01-19
Status: ✅ FIXED
Issue
External connections to PostgreSQL Docker container from localhost were failing with:
FATAL: password authentication failed for user "dbis_user"
Root Cause
PostgreSQL's pg_hba.conf file was not configured to allow password authentication from external hosts (localhost).
Resolution
Step 1: Updated Docker Compose Configuration
File: docker/docker-compose.as4.yml
Changes:
- Added
POSTGRES_HOST_AUTH_METHOD: md5environment variable - Added PostgreSQL command to listen on all addresses:
listen_addresses=* - Added init script volume mount for future initialization
Step 2: Configured pg_hba.conf
Action: Updated PostgreSQL's host-based authentication configuration to allow:
- Password authentication from localhost (127.0.0.1/32)
- Password authentication from IPv6 localhost (::1/128)
- Password authentication from all hosts (0.0.0.0/0) - for Docker networking
Configuration Added:
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
host all all 0.0.0.0/0 md5
host all all ::/0 md5
Step 3: Reloaded PostgreSQL Configuration
Action: Reloaded PostgreSQL configuration to apply changes without restart.
Step 4: Restarted PostgreSQL Container
Action: Restarted container to ensure all changes are applied.
Verification
Test External Connection
psql postgresql://dbis_user:dbis_password@localhost:5432/dbis_core -c "SELECT version();"
Result: ✅ Connection successful
Run Migration
npx prisma migrate deploy
Result: ✅ Migration applied successfully
Verify Tables Created
docker compose -f docker/docker-compose.as4.yml exec -T postgres psql -U dbis_user -d dbis_core -c "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_name LIKE 'as4_%' ORDER BY table_name;"
Result: ✅ 6 AS4 tables created
Seed Marketplace
npx ts-node --transpile-only scripts/seed-as4-settlement-marketplace-offering.ts
Result: ✅ Offering seeded successfully
Final Status
✅ External Database Connection: FIXED
- ✅ External connections working
- ✅ Migration applied
- ✅ Tables created
- ✅ Marketplace seeded
- ✅ System fully operational
Configuration Files Modified
-
docker/docker-compose.as4.yml
- Added
POSTGRES_HOST_AUTH_METHOD: md5 - Added
listen_addresses=*command - Added init script volume mount
- Added
-
PostgreSQL pg_hba.conf (in container)
- Added host-based authentication rules
- Allowed password authentication from all hosts
Connection String
Production/Development:
postgresql://dbis_user:dbis_password@localhost:5432/dbis_core
Docker Internal:
postgresql://dbis_user:dbis_password@postgres:5432/dbis_core
Next Steps
1. Start Server
npm run dev
2. Test API Endpoints
./scripts/test-as4-api.sh
3. Create Test Member
./scripts/create-test-member.sh
4. Submit Test Instruction
./scripts/submit-test-instruction.sh
Status: ✅ EXTERNAL CONNECTION FIXED - SYSTEM READY
End of Document