PostgreSQL Setup for Foundry REST API Relay
This setup provides persistent storage using PostgreSQL instead of the default SQLite database.
Quick Start
-
Start the services:
docker-compose -f docker-compose.postgres.yml up -d -
Initialize the database:
# Wait for PostgreSQL to be ready (about 10-15 seconds), then run:
docker-compose -f docker-compose.postgres.yml exec relay pnpm run db:reset -
Check the logs:
docker-compose -f docker-compose.postgres.yml logs relay
Full Setup Steps
# 1. Start PostgreSQL first and wait for it to be ready
docker-compose -f docker-compose.postgres.yml up -d db
# 2. Wait for database to be ready (healthcheck will ensure this)
docker-compose -f docker-compose.postgres.yml ps
# 3. Initialize the database schema and create admin user
docker-compose -f docker-compose.postgres.yml exec relay pnpm run db:reset
# 4. Start the relay service
docker-compose -f docker-compose.postgres.yml up -d relay
# 5. View logs to confirm everything is working
docker-compose -f docker-compose.postgres.yml logs -f relay
Default Database Credentials
- Database:
foundryvtt_relay - Username:
postgres - Password:
example - Host:
localhost(from host machine) ordb(from within Docker network) - Port:
5432
Admin User Setup
To create an admin user during database reset, set environment variables:
[email protected] ADMIN_PASSWORD=your-secure-password pnpm run db:reset
If not provided, no admin user is created. Users can register at the website (e.g., https://your-relay-server.com) unless DISABLE_REGISTRATION=true.
Environment Variables
You can customize the PostgreSQL setup by modifying the environment variables in docker-compose.postgres.yml:
# Database configuration
- POSTGRES_DB=foundryvtt_relay # Database name
- POSTGRES_USER=postgres # Database user
- POSTGRES_PASSWORD=example # Database password
# Relay configuration
- DATABASE_URL=postgres://postgres:example@db:5432/foundryvtt_relay
Stopping and Cleanup
# Stop services
docker-compose -f docker-compose.postgres.yml down
# Stop and remove all data (WARNING: This deletes all data!)
docker-compose -f docker-compose.postgres.yml down -v
Troubleshooting
Database Connection Errors
If you see connection errors, make sure:
- PostgreSQL is running:
docker-compose -f docker-compose.postgres.yml ps - Database is healthy: Check the healthcheck status
- Wait a bit longer for PostgreSQL to start up completely
Reinitialize Database
If you need to reset the database:
# Stop services
docker-compose -f docker-compose.postgres.yml down
# Remove the database volume (WARNING: Deletes all data!)
docker volume rm foundryvtt-rest-api-relay_postgres_data
# Start fresh
docker-compose -f docker-compose.postgres.yml up -d db
docker-compose -f docker-compose.postgres.yml exec relay pnpm run db:reset
docker-compose -f docker-compose.postgres.yml up -d
Data Persistence
All PostgreSQL data is stored in a Docker volume named foundryvtt-rest-api-relay_postgres_data. This ensures your data persists between container restarts and updates.