233 lines
6.4 KiB
Markdown
233 lines
6.4 KiB
Markdown
# 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: md5` environment 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**:
|
|
```bash
|
|
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_PASSWORD` environment variable only affects initial database setup
|
|
- Password may need to be reset or container recreated
|
|
|
|
---
|
|
|
|
## Resolution Steps
|
|
|
|
### Option 1: Reset Password (Recommended)
|
|
|
|
```bash
|
|
# 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)
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
```bash
|
|
docker compose -f docker/docker-compose.as4.yml ps postgres
|
|
```
|
|
|
|
**Expected**: Status should show "Up" and healthy
|
|
|
|
### Step 2: Test Internal Connection
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
```bash
|
|
export DATABASE_URL=postgresql://dbis_user:dbis_password@localhost:5432/dbis_core
|
|
npx prisma migrate deploy
|
|
```
|
|
|
|
**Expected**: Migration applied successfully
|
|
|
|
### Step 5: Verify Tables
|
|
```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;"
|
|
```
|
|
|
|
**Expected**: 6 AS4 tables listed
|
|
|
|
### Step 6: Seed Marketplace
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
# 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
|
|
1. ✅ `docker/docker-compose.as4.yml` - Updated with connection settings
|
|
2. ✅ `docker/postgres-init/01-init-hba.sh` - Created init script
|
|
3. ✅ 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
|
|
|
|
1. **Reset password** using Option 1 above
|
|
2. **Verify external connection** works
|
|
3. **Run migration**: `npx prisma migrate deploy`
|
|
4. **Seed marketplace**: `npx ts-node --transpile-only scripts/seed-as4-settlement-marketplace-offering.ts`
|
|
5. **Start server**: `npm run dev`
|
|
6. **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**
|