-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
191 lines (155 loc) · 8.55 KB
/
docker-compose.yml
File metadata and controls
191 lines (155 loc) · 8.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
version: '3.8'
services:
octogen:
image: blueion76/octogen:latest
container_name: octogen
restart: unless-stopped
ports:
- "5000:5000" # Web UI dashboard
- "9090:9090" # Prometheus metrics (optional)
volumes:
- octogen-data:/data
environment:
# ============================================================================
# REQUIRED - Navidrome Server
# ============================================================================
NAVIDROME_URL: http://navidrome:4533
NAVIDROME_USER: admin
NAVIDROME_PASSWORD: ${NAVIDROME_PASSWORD}
# ============================================================================
# REQUIRED - Octo-Fiesta Server (for downloads)
# ============================================================================
OCTOFIESTA_URL: http://octofiesta:5274
# ============================================================================
# OPTIONAL - AI Provider (LLM-based recommendations)
# ============================================================================
# At least one music source must be configured:
# AI_API_KEY, AudioMuse-AI, Last.fm, or ListenBrainz
AI_API_KEY: ${AI_API_KEY:-}
# ============================================================================
# OPTIONAL - AI Configuration
# ============================================================================
# AI Model - Default is Gemini 2.5 Flash (recommended)
AI_MODEL: ${AI_MODEL:-gemini-2.5-flash}
# AI Backend - Options: gemini, openai
AI_BACKEND: ${AI_BACKEND:-gemini}
# Custom API endpoint URL (only for OpenAI-compatible backends)
AI_BASE_URL: ${AI_BASE_URL:-https://generativelanguage.googleapis.com/v1beta/openai/}
# Maximum songs to include in AI context (memory optimization)
AI_MAX_CONTEXT_SONGS: ${AI_MAX_CONTEXT_SONGS:-300}
# Maximum output tokens for AI response
AI_MAX_OUTPUT_TOKENS: ${AI_MAX_OUTPUT_TOKENS:-8192}
# ============================================================================
# OPTIONAL - Scheduling Configuration
# ============================================================================
# Cron expression for automatic scheduling (e.g., "0 2 * * *" for daily at 2 AM)
# Leave unset or use "manual" to disable scheduling
SCHEDULE_CRON: ${SCHEDULE_CRON:-0 2,4,10,16,22 * * *}
# Timezone for scheduled runs (IANA timezone name)
TZ: ${TZ:-America/Chicago}
# ============================================================================
# OPTIONAL - Last.fm Integration
# ============================================================================
LASTFM_ENABLED: ${LASTFM_ENABLED:-false}
LASTFM_API_KEY: ${LASTFM_API_KEY:-}
LASTFM_USERNAME: ${LASTFM_USERNAME:-}
# ============================================================================
# OPTIONAL - ListenBrainz Integration
# ============================================================================
LISTENBRAINZ_ENABLED: ${LISTENBRAINZ_ENABLED:-false}
LISTENBRAINZ_USERNAME: ${LISTENBRAINZ_USERNAME:-}
LISTENBRAINZ_TOKEN: ${LISTENBRAINZ_TOKEN:-}
# ============================================================================
# OPTIONAL - Performance Tuning
# ============================================================================
# Album batch size for library scanning
PERF_ALBUM_BATCH_SIZE: ${PERF_ALBUM_BATCH_SIZE:-500}
# Maximum albums to scan (prevents timeouts on huge libraries)
PERF_MAX_ALBUMS_SCAN: ${PERF_MAX_ALBUMS_SCAN:-10000}
# Scan timeout in seconds
PERF_SCAN_TIMEOUT: ${PERF_SCAN_TIMEOUT:-60}
# Delay between downloads (seconds) - prevents overwhelming Octo-Fiesta
PERF_DOWNLOAD_DELAY: ${PERF_DOWNLOAD_DELAY:-6}
# Delay after Navidrome scan completes (seconds)
PERF_POST_SCAN_DELAY: ${PERF_POST_SCAN_DELAY:-10}
# ============================================================================
# OPTIONAL - AudioMuse-AI Integration
# ============================================================================
# AudioMuse-AI for sonic analysis-based recommendations
AUDIOMUSE_ENABLED: ${AUDIOMUSE_ENABLED:-false}
AUDIOMUSE_URL: ${AUDIOMUSE_URL:-http://localhost:8000}
AUDIOMUSE_AI_PROVIDER: ${AUDIOMUSE_AI_PROVIDER:-gemini}
AUDIOMUSE_AI_MODEL: ${AUDIOMUSE_AI_MODEL:-gemini-2.5-flash}
AUDIOMUSE_AI_API_KEY: ${AUDIOMUSE_AI_API_KEY:-}
AUDIOMUSE_SONGS_PER_MIX: ${AUDIOMUSE_SONGS_PER_MIX:-25}
LLM_SONGS_PER_MIX: ${LLM_SONGS_PER_MIX:-5}
# ============================================================================
# OPTIONAL - Monitoring and Metrics
# ============================================================================
# Enable Prometheus metrics (default: true)
METRICS_ENABLED: ${METRICS_ENABLED:-true}
# Port for Prometheus metrics HTTP server
METRICS_PORT: ${METRICS_PORT:-9090}
# Circuit breaker configuration
CIRCUIT_BREAKER_THRESHOLD: ${CIRCUIT_BREAKER_THRESHOLD:-5}
CIRCUIT_BREAKER_TIMEOUT: ${CIRCUIT_BREAKER_TIMEOUT:-60}
# ============================================================================
# OPTIONAL - Web UI Dashboard
# ============================================================================
# Enable web-based monitoring dashboard (default: true)
WEB_ENABLED: ${WEB_ENABLED:-true}
# Port for web UI HTTP server
WEB_PORT: ${WEB_PORT:-5000}
# ============================================================================
# OPTIONAL - Time-of-Day Playlists
# ============================================================================
# Enable automatic time-period playlist generation (default: true)
TIMEOFDAY_ENABLED: ${TIMEOFDAY_ENABLED:-true}
# Time period boundaries (24-hour format)
TIMEOFDAY_MORNING_START: ${TIMEOFDAY_MORNING_START:-4}
TIMEOFDAY_MORNING_END: ${TIMEOFDAY_MORNING_END:-10}
TIMEOFDAY_AFTERNOON_START: ${TIMEOFDAY_AFTERNOON_START:-10}
TIMEOFDAY_AFTERNOON_END: ${TIMEOFDAY_AFTERNOON_END:-16}
TIMEOFDAY_EVENING_START: ${TIMEOFDAY_EVENING_START:-16}
TIMEOFDAY_EVENING_END: ${TIMEOFDAY_EVENING_END:-22}
TIMEOFDAY_NIGHT_START: ${TIMEOFDAY_NIGHT_START:-22}
TIMEOFDAY_NIGHT_END: ${TIMEOFDAY_NIGHT_END:-4}
# Playlist size (default: 30 songs)
TIMEOFDAY_PLAYLIST_SIZE: ${TIMEOFDAY_PLAYLIST_SIZE:-30}
# Auto-regenerate when time period changes (default: true)
TIMEOFDAY_REFRESH_ON_PERIOD_CHANGE: ${TIMEOFDAY_REFRESH_ON_PERIOD_CHANGE:-true}
# ============================================================================
# OPTIONAL - Batch Processing
# ============================================================================
# Number of songs to download per batch
DOWNLOAD_BATCH_SIZE: ${DOWNLOAD_BATCH_SIZE:-5}
# Maximum concurrent downloads
DOWNLOAD_CONCURRENCY: ${DOWNLOAD_CONCURRENCY:-3}
# ============================================================================
# OPTIONAL - Logging Configuration
# ============================================================================
# Log output format: text or json
LOG_FORMAT: ${LOG_FORMAT:-text}
# Show progress indicators in terminal
SHOW_PROGRESS: ${SHOW_PROGRESS:-true}
# ============================================================================
# OPTIONAL - Playlist Templates
# ============================================================================
# Path to custom playlist templates YAML file
PLAYLIST_TEMPLATES_FILE: ${PLAYLIST_TEMPLATES_FILE:-/config/playlist_templates.yaml}
# ============================================================================
# OPTIONAL - System Configuration
# ============================================================================
# Log level: DEBUG, INFO, WARNING, ERROR
LOG_LEVEL: ${LOG_LEVEL:-INFO}
# Data directory inside container - must match volume mount path
# Change only if you also modify the volume mount
OCTOGEN_DATA_DIR: ${OCTOGEN_DATA_DIR:-/data}
# Expose ports for monitoring (optional)
ports:
# Prometheus metrics (if METRICS_ENABLED=true)
- "9090:9090"
# Web UI dashboard (if WEB_UI_ENABLED=true)
- "5000:5000"
volumes:
octogen-data: