6.4 KiB
AS4 Settlement - External Connection Resolution
Date: 2026-01-19
Status: ⚠️ CONFIGURATION COMPLETE - AUTHENTICATION PENDING
Summary
External database connection configuration has been updated. PostgreSQL Docker container is configured to accept external connections. Authentication needs to be verified/reset.
Configuration Changes Completed
✅ 1. Docker Compose Configuration
File: docker/docker-compose.as4.yml
Changes Applied:
- ✅ Added
POSTGRES_HOST_AUTH_METHOD: md5environment variable - ✅ Added PostgreSQL command:
listen_addresses=*to listen on all addresses - ✅ Added init script volume mount:
./postgres-init:/docker-entrypoint-initdb.d - ✅ Added PostgreSQL command parameters for connection settings
Status: ✅ COMPLETE
✅ 2. PostgreSQL pg_hba.conf Configuration
Changes Applied:
- ✅ Added host-based authentication rules:
host all all 127.0.0.1/32 md5(IPv4 localhost)host all all ::1/128 md5(IPv6 localhost)host all all 0.0.0.0/0 md5(All IPv4 hosts)host all all ::/0 md5(All IPv6 hosts)
Verification:
docker compose -f docker/docker-compose.as4.yml exec -T postgres cat /var/lib/postgresql/data/pg_hba.conf | tail -5
Status: ✅ COMPLETE
✅ 3. Init Script Created
File: docker/postgres-init/01-init-hba.sh
Purpose: Automatically configure pg_hba.conf on container initialization
Status: ✅ CREATED
Remaining Issue
⚠️ Password Authentication
Issue: External connections from localhost fail with:
FATAL: password authentication failed for user "dbis_user"
Root Cause:
- PostgreSQL container was initialized before password configuration
POSTGRES_PASSWORDenvironment variable only affects initial database setup- Password may need to be reset or container recreated
Resolution Steps
Option 1: Reset Password (Recommended)
# 1. Connect to container and reset password
docker compose -f docker/docker-compose.as4.yml exec -T postgres \
psql -U dbis_user -d postgres -c "ALTER USER dbis_user WITH PASSWORD 'dbis_password';"
# 2. Reload PostgreSQL configuration
docker compose -f docker/docker-compose.as4.yml exec -T postgres \
psql -U dbis_user -d postgres -c "SELECT pg_reload_conf();"
# 3. Test connection
psql postgresql://dbis_user:dbis_password@localhost:5432/dbis_core -c "SELECT version();"
Option 2: Recreate Container (Clean Setup)
# 1. Stop and remove container (keeps data volume)
cd docker
docker compose -f docker-compose.as4.yml stop postgres
docker compose -f docker-compose.as4.yml rm -f postgres
# 2. Remove volume (if starting fresh - WARNING: deletes all data)
docker volume rm docker_postgres_data
# 3. Start fresh container
docker compose -f docker-compose.as4.yml up -d postgres
# 4. Wait for initialization
sleep 10
# 5. Test connection
psql postgresql://dbis_user:dbis_password@localhost:5432/dbis_core -c "SELECT version();"
Option 3: Check for Port Conflict
# Check what's using port 5432
sudo lsof -i :5432
# If local PostgreSQL is running, stop it
sudo systemctl stop postgresql
# or
sudo service postgresql stop
# Restart Docker PostgreSQL
cd docker
docker compose -f docker-compose.as4.yml restart postgres
Verification Steps
Step 1: Verify Container is Running
docker compose -f docker/docker-compose.as4.yml ps postgres
Expected: Status should show "Up" and healthy
Step 2: Test Internal Connection
docker compose -f docker/docker-compose.as4.yml exec -T postgres \
psql -U dbis_user -d dbis_core -c "SELECT version();"
Expected: PostgreSQL version output
Step 3: Test External Connection
psql postgresql://dbis_user:dbis_password@localhost:5432/dbis_core -c "SELECT version();"
Expected: PostgreSQL version output (may need password reset first)
Step 4: Run Migration
export DATABASE_URL=postgresql://dbis_user:dbis_password@localhost:5432/dbis_core
npx prisma migrate deploy
Expected: Migration applied successfully
Step 5: Verify Tables
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;"
Expected: 6 AS4 tables listed
Step 6: Seed Marketplace
export DATABASE_URL=postgresql://dbis_user:dbis_password@localhost:5432/dbis_core
npx ts-node --transpile-only scripts/seed-as4-settlement-marketplace-offering.ts
Expected: "AS4 Settlement Marketplace Offering created"
Alternative: Use Docker Internal Connection
If external connection continues to have issues, you can use Docker's internal networking:
# Use Docker exec for all database operations
docker compose -f docker/docker-compose.as4.yml exec -T postgres \
psql -U dbis_user -d dbis_core
# Or run scripts inside Docker network
docker compose -f docker/docker-compose.as4.yml run --rm -e DATABASE_URL=postgresql://dbis_user:dbis_password@postgres:5432/dbis_core \
dbis-core npx prisma migrate deploy
Configuration Summary
Files Modified
- ✅
docker/docker-compose.as4.yml- Updated with connection settings - ✅
docker/postgres-init/01-init-hba.sh- Created init script - ✅ PostgreSQL
pg_hba.conf- Updated with host authentication rules
Configuration Applied
- ✅
POSTGRES_HOST_AUTH_METHOD: md5- Password authentication enabled - ✅
listen_addresses=*- Listening on all addresses - ✅ Host-based authentication rules added to pg_hba.conf
Status
- ✅ Configuration: Complete
- ✅ pg_hba.conf: Updated
- ✅ Docker Compose: Updated
- ⚠️ Authentication: Needs verification/reset
- ⏳ Migration: Waiting for connection fix
- ⏳ Seeding: Waiting for connection fix
Next Steps
- Reset password using Option 1 above
- Verify external connection works
- Run migration:
npx prisma migrate deploy - Seed marketplace:
npx ts-node --transpile-only scripts/seed-as4-settlement-marketplace-offering.ts - Start server:
npm run dev - Test endpoints:
./scripts/test-as4-api.sh
Configuration Status: ✅ COMPLETE
Connection Status: ⚠️ NEEDS PASSWORD RESET
All configuration files are updated and ready. Once the password is reset and connection verified, the system will be fully operational.
End of Document