159 lines
3.3 KiB
Markdown
159 lines
3.3 KiB
Markdown
# 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**:
|
|
1. Added `POSTGRES_HOST_AUTH_METHOD: md5` environment variable
|
|
2. Added PostgreSQL command to listen on all addresses: `listen_addresses=*`
|
|
3. 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
|
|
```bash
|
|
psql postgresql://dbis_user:dbis_password@localhost:5432/dbis_core -c "SELECT version();"
|
|
```
|
|
|
|
**Result**: ✅ Connection successful
|
|
|
|
### Run Migration
|
|
```bash
|
|
npx prisma migrate deploy
|
|
```
|
|
|
|
**Result**: ✅ Migration applied successfully
|
|
|
|
### Verify Tables Created
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
|
|
1. **docker/docker-compose.as4.yml**
|
|
- Added `POSTGRES_HOST_AUTH_METHOD: md5`
|
|
- Added `listen_addresses=*` command
|
|
- Added init script volume mount
|
|
|
|
2. **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
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
### 2. Test API Endpoints
|
|
```bash
|
|
./scripts/test-as4-api.sh
|
|
```
|
|
|
|
### 3. Create Test Member
|
|
```bash
|
|
./scripts/create-test-member.sh
|
|
```
|
|
|
|
### 4. Submit Test Instruction
|
|
```bash
|
|
./scripts/submit-test-instruction.sh
|
|
```
|
|
|
|
---
|
|
|
|
**Status**: ✅ **EXTERNAL CONNECTION FIXED - SYSTEM READY**
|
|
|
|
---
|
|
|
|
**End of Document**
|