You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SoulSync/docker-compose.yml

100 lines
3.8 KiB

# BREAKING CHANGE (v1.3+): Database volume mount changed from /app/database to /app/data
# If upgrading from a previous version, update your docker-compose.yml:
# OLD: - soulsync_database:/app/database
# NEW: - soulsync_database:/app/data
# Your data will be preserved - it's the same volume, just mounted at a different path.
services:
soulsync:
image: boulderbadgedad/soulsync:latest
container_name: soulsync-webui
environment:
# User/Group ID configuration
- PUID=1000
- PGID=1000
- UMASK=022
# Web server configuration
- PYTHONPATH=/app
# Optional: Configure through environment variables
- SOULSYNC_CONFIG_PATH=/app/config/config.json
# Set timezone (change to your timezone)
- TZ=America/New_York
# OAuth callback ports. If 8888/8889 conflict with another container (e.g. Gluetun),
# change the port numbers below AND update the matching port mappings in the ports section.
# Then update the redirect URI in SoulSync → Settings → Connections AND in your Spotify/Tidal developer dashboard to match.
- SOULSYNC_SPOTIFY_CALLBACK_PORT=8888
- SOULSYNC_TIDAL_CALLBACK_PORT=8889
ports:
- "8008:8008" # Main web app
- "8888:8888" # Spotify OAuth callback — keep in sync with SOULSYNC_SPOTIFY_CALLBACK_PORT above
- "8889:8889" # Tidal OAuth callback — keep in sync with SOULSYNC_TIDAL_CALLBACK_PORT above
volumes:
# Persistent data volumes
- ./config:/app/config
- ./logs:/app/logs
- ./downloads:/app/downloads
- ./Staging:/app/Staging
- ./MusicVideos:/app/MusicVideos
- ./scripts:/app/scripts
# Use named volume for database persistence (separate from host database)
# NOTE: Changed from /app/database to /app/data to avoid overwriting Python package
- soulsync_database:/app/data
# IMPORTANT: Mount host paths that your input/output folders live on.
# Replace these examples with your actual paths:
# Linux/Mac: - /path/to/your/downloads:/host/downloads:rw
# WSL: - /mnt/d/Music:/host/music:rw
# You can add as many mounts as needed for your setup.
# - /path/to/downloads:/host/downloads:rw
# - /path/to/music-library:/host/music:rw
# Optional: Mount your music library for Plex/Jellyfin/Navidrome access
# - /path/to/your/music:/music:ro
extra_hosts:
# Allow container to reach host services
- "host.docker.internal:host-gateway"
restart: unless-stopped
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8008/" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
# Resource limits (adjust as needed)
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
reservations:
cpus: '0.5'
memory: 512M
## ─── Optional: slskd (Soulseek client) ───────────────────────────────
## Uncomment below to run slskd alongside SoulSync.
## Downloads land in ./downloads which SoulSync already reads from.
## After starting, set your SoulSync slskd URL to http://slskd:5030
## and the API key to whatever you set in SLSKD_API_KEY below.
#
# slskd:
# image: slskd/slskd:latest
# container_name: slskd
# environment:
# - SLSKD_REMOTE_CONFIGURATION=true
# - SLSKD_API_KEY=your-api-key-here
# - TZ=America/New_York
# ports:
# - "5030:5030"
# volumes:
# - ./slskd-data:/app
# - ./downloads:/app/downloads
# restart: unless-stopped
# Named volumes for persistent data
volumes:
soulsync_database:
driver: local
# Optional: Add external network for communication with other containers
networks:
default:
name: soulsync-network