Major Features: - Multi-source download system (Soulseek/Lidarr with fallback) - Configurable enrichment speed control (1-5x) - Mobile touch drag support for seek sliders - iOS PWA media controls (Control Center, Lock Screen) - Artist name alias resolution via Last.fm - Circuit breaker pattern for audio analysis Critical Fixes: - Audio analyzer stability (non-ASCII, BrokenProcessPool, OOM) - Discovery system race conditions and import failures - Radio decade categorization using originalYear - LastFM API response normalization - Mood bucket infinite loop prevention Security: - Bull Board admin authentication - Lidarr webhook signature verification - JWT token expiration and refresh - Encryption key validation on startup Closes #2, #6, #9, #13, #21, #26, #31, #34, #35, #37, #40, #43
72 lines
2.9 KiB
Plaintext
72 lines
2.9 KiB
Plaintext
# Lidify Configuration
|
||
# Copy to .env and edit as needed
|
||
|
||
# ==============================================================================
|
||
# Database Configuration
|
||
# ==============================================================================
|
||
DATABASE_URL="postgresql://lidify:lidify@localhost:5433/lidify"
|
||
|
||
# ==============================================================================
|
||
# Redis Configuration
|
||
# ==============================================================================
|
||
# Note: Redis container port is mapped to 6380 to avoid conflicts with other Redis instances
|
||
REDIS_URL="redis://localhost:6380"
|
||
|
||
# ==============================================================================
|
||
# REQUIRED: Path to your music library
|
||
# ==============================================================================
|
||
MUSIC_PATH=/path/to/your/music
|
||
# DEVELOPMENT: Use your local path (e.g., /home/user/Music)
|
||
# DOCKER: This is the HOST path that gets mounted to /music in the container
|
||
# The backend inside Docker always uses /music, not this value.
|
||
# Example: MUSIC_PATH=~/Music (container mounts as ~/Music:/music)
|
||
|
||
# ==============================================================================
|
||
# REQUIRED: Security Keys
|
||
# ==============================================================================
|
||
|
||
# Encryption key for sensitive data (API keys, passwords, 2FA secrets)
|
||
# CRITICAL: You MUST set this before starting Lidify
|
||
# Generate with: openssl rand -base64 32
|
||
SETTINGS_ENCRYPTION_KEY=
|
||
|
||
# Session secret (auto-generated if not set)
|
||
# Generate with: openssl rand -base64 32
|
||
SESSION_SECRET=
|
||
|
||
# ==============================================================================
|
||
# OPTIONAL: Customize these if needed
|
||
# ==============================================================================
|
||
|
||
# Port to access Lidify (default: 3030)
|
||
PORT=3030
|
||
|
||
# Timezone (default: UTC)
|
||
TZ=UTC
|
||
|
||
# Logging level (default: debug in development, warn in production)
|
||
# Options: debug, info, warn, error, silent
|
||
LOG_LEVEL=debug
|
||
|
||
# Allow public access to API documentation in production (default: false)
|
||
# Set to 'true' to make /api/docs accessible without authentication in production
|
||
# Development mode always allows public access
|
||
# DOCS_PUBLIC=true
|
||
|
||
# DockerHub username (for pulling images)
|
||
# Your DockerHub username (same as GitHub: chevron7locked)
|
||
DOCKERHUB_USERNAME=chevron7locked
|
||
|
||
# Version tag (use 'latest' or specific like 'v1.0.0')
|
||
VERSION=latest
|
||
|
||
# ==============================================================================
|
||
# OPTIONAL: Audio Analyzer CPU Control
|
||
# ==============================================================================
|
||
|
||
# Audio Analyzer CPU Control
|
||
# AUDIO_ANALYSIS_WORKERS=2 # Number of parallel worker processes (1-8)
|
||
# AUDIO_ANALYSIS_THREADS_PER_WORKER=1 # Threads per worker for TensorFlow/FFT (1-4, default 1)
|
||
# Formula: max_cpu_usage ≈ WORKERS × (THREADS_PER_WORKER + 1) × 100%
|
||
# Example: 2 workers × (1 thread + 1 overhead) = ~400% CPU (4 cores)
|