65 lines
2.5 KiB
Bash
Executable File
65 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# PostgreSQL Initialization Script
|
|
# Creates databases and users for homelab applications
|
|
# Runs once during initial container startup
|
|
|
|
echo "🔧 Initializing PostgreSQL databases and users..."
|
|
|
|
# Source environment variables if available
|
|
if [ -f /run/secrets/postgres_passwords ]; then
|
|
source /run/secrets/postgres_passwords
|
|
fi
|
|
|
|
# Default passwords (override via environment variables)
|
|
: ${AUTHENTIK_DB_PASSWORD:=CHANGEME_AUTHENTIK_PASSWORD}
|
|
: ${GITEA_DB_PASSWORD:=CHANGEME_GITEA_PASSWORD}
|
|
|
|
# Create Authentik database and user
|
|
echo "📦 Creating Authentik database..."
|
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
|
|
CREATE DATABASE authentik;
|
|
CREATE USER authentik_user WITH PASSWORD '$AUTHENTIK_DB_PASSWORD';
|
|
GRANT ALL PRIVILEGES ON DATABASE authentik TO authentik_user;
|
|
|
|
-- Grant schema privileges (required for PostgreSQL 15+)
|
|
\c authentik
|
|
GRANT ALL ON SCHEMA public TO authentik_user;
|
|
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO authentik_user;
|
|
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO authentik_user;
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO authentik_user;
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO authentik_user;
|
|
EOSQL
|
|
|
|
# Create Gitea database and user (for future migration)
|
|
echo "📦 Creating Gitea database..."
|
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
|
|
CREATE DATABASE gitea;
|
|
CREATE USER gitea_user WITH PASSWORD '$GITEA_DB_PASSWORD';
|
|
GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea_user;
|
|
|
|
\c gitea
|
|
GRANT ALL ON SCHEMA public TO gitea_user;
|
|
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO gitea_user;
|
|
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO gitea_user;
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO gitea_user;
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO gitea_user;
|
|
EOSQL
|
|
|
|
# Add future databases here as needed
|
|
# echo "📦 Creating future_app database..."
|
|
# psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
|
|
# CREATE DATABASE future_app;
|
|
# CREATE USER future_user WITH PASSWORD '$FUTURE_APP_PASSWORD';
|
|
# GRANT ALL PRIVILEGES ON DATABASE future_app TO future_user;
|
|
# EOSQL
|
|
|
|
echo "✅ PostgreSQL initialization complete!"
|
|
echo ""
|
|
echo "📊 Database Summary:"
|
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" -c '\l'
|
|
echo ""
|
|
echo "👥 User Summary:"
|
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" -c '\du'
|