- Add ampache service to media/compose.yaml with PostgreSQL backend - Create ampache database in postgres init script - Configure Ampache environment variables in arty.yml - Mount Music directory read-only - Expose at ampache.media.pivoine.art via Traefik
87 lines
3.5 KiB
Bash
87 lines
3.5 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
# PostgreSQL initialization script for compose core stack
|
|
# This script runs on first database initialization
|
|
# Creates all databases required by compose.sh stacks
|
|
|
|
echo "Starting compose database initialization..."
|
|
|
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
|
-- Create databases for compose services
|
|
-- Main application database
|
|
SELECT 'CREATE DATABASE directus'
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'directus')\\gexec
|
|
|
|
-- Umami analytics database
|
|
SELECT 'CREATE DATABASE umami'
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'umami')\\gexec
|
|
|
|
-- n8n workflow automation database
|
|
SELECT 'CREATE DATABASE n8n'
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'n8n')\\gexec
|
|
|
|
-- Linkwarden bookmark manager database
|
|
SELECT 'CREATE DATABASE linkwarden'
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'linkwarden')\\gexec
|
|
|
|
-- Joplin note-taking server database
|
|
SELECT 'CREATE DATABASE joplin'
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'joplin')\\gexec
|
|
|
|
-- Mattermost chat platform database
|
|
SELECT 'CREATE DATABASE mattermost'
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mattermost')\\gexec
|
|
|
|
-- Tandoor recipe manager database
|
|
SELECT 'CREATE DATABASE tandoor'
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'tandoor')\\gexec
|
|
|
|
-- Asciinema terminal recording server database
|
|
SELECT 'CREATE DATABASE asciinema'
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'asciinema')\\gexec
|
|
|
|
-- Koel music streaming database
|
|
SELECT 'CREATE DATABASE koel'
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'koel')\\gexec
|
|
|
|
-- Ampache music streaming database
|
|
SELECT 'CREATE DATABASE ampache'
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'ampache')\\gexec
|
|
|
|
-- Grant privileges to all databases
|
|
GRANT ALL PRIVILEGES ON DATABASE directus TO $POSTGRES_USER;
|
|
GRANT ALL PRIVILEGES ON DATABASE umami TO $POSTGRES_USER;
|
|
GRANT ALL PRIVILEGES ON DATABASE n8n TO $POSTGRES_USER;
|
|
GRANT ALL PRIVILEGES ON DATABASE linkwarden TO $POSTGRES_USER;
|
|
GRANT ALL PRIVILEGES ON DATABASE joplin TO $POSTGRES_USER;
|
|
GRANT ALL PRIVILEGES ON DATABASE mattermost TO $POSTGRES_USER;
|
|
GRANT ALL PRIVILEGES ON DATABASE tandoor TO $POSTGRES_USER;
|
|
GRANT ALL PRIVILEGES ON DATABASE asciinema TO $POSTGRES_USER;
|
|
GRANT ALL PRIVILEGES ON DATABASE koel TO $POSTGRES_USER;
|
|
GRANT ALL PRIVILEGES ON DATABASE ampache TO $POSTGRES_USER;
|
|
|
|
-- Log success
|
|
SELECT 'Compose databases initialized:' AS status;
|
|
SELECT datname FROM pg_database
|
|
WHERE datname IN ('directus', 'umami', 'n8n', 'linkwarden', 'joplin', 'mattermost', 'tandoor', 'asciinema', 'koel', 'ampache')
|
|
ORDER BY datname;
|
|
EOSQL
|
|
|
|
echo ""
|
|
echo "✓ PostgreSQL initialization completed"
|
|
echo "✓ All compose databases created successfully"
|
|
echo ""
|
|
echo "Databases available:"
|
|
echo " • directus - Sexy application database"
|
|
echo " • umami - Tracking database"
|
|
echo " • n8n - Workflow automation database"
|
|
echo " • linkwarden - Bookmark manager database"
|
|
echo " • joplin - Note-taking server database"
|
|
echo " • mattermost - Chat platform database"
|
|
echo " • tandoor - Recipe manager database"
|
|
echo " • asciinema - Terminal recording server database"
|
|
echo " • koel - Music streaming server database"
|
|
echo " • ampache - Music streaming server database"
|
|
echo ""
|