Title here
Summary here
The config.yaml file contains all application settings. Key sections:
Security Note: Never commit sensitive values like tokens or API keys to version control. Use environment variables instead.
If no config.yaml file exists when the application starts, it will automatically create one with sensible default values. This means you can run Soulsolid out of the box without any configuration!
When auto-generated, the config file includes these defaults:
libraryPath: ./music
downloadPath: ./downloads
telegram:
enabled: false
token: <token>
allowedUsers:
- <your telegram username>
bot_handle: SoulsolidExampleBot # Without the @
logger:
enabled: true
level: info
format: text
htmx_debug: false
downloaders:
plugins:
- name: dummy
path: ../soulsolid-dummy-plugin/plugin.so
icon: https://demo2.contre.io/img/galaxy.png
config: {} # Plugin specific config. See https://git.sr.ht/~canuslector/soulsolid-deemix-plugin
artwork:
embedded:
enabled: true
size: 1000
quality: 85
server:
show_routes: false
port: 3535
database:
path: ./library.db # Path to the SQLite Database
import:
move: false # If false tracks will be kepts in the folder where you are importing them from and copied from it to your 'libraryPath:'
always_queue: false # When true, it will queue every single imported track for manual review.
duplicates: queue # queue | skip | replace
paths:
compilations: "%asciify{$albumartist}/%asciify{$album} (%if{$original_year,$original_year,$year})/%asciify{$track $title}"
album:soundtrack: "%asciify{$albumartist}/%asciify{$album} [OST] (%if{$original_year,$original_year,$year})/%asciify{$track $title}"
album:single: "%asciify{$albumartist}/%asciify{$album} [Single] (%if{$original_year,$original_year,$year})/%asciify{$track $title}"
album:ep: "%asciify{$albumartist}/%asciify{$album} [EP] (%if{$original_year,$original_year,$year})/%asciify{$track $title}"
default_path: "%asciify{$albumartist}/%asciify{$album} (%if{$original_year,$original_year,$year})/%asciify{$track $title}"
auto_start_watcher: false
metadata:
providers:
acoustid:
enabled: true
secret: <acoust_id_token> # You can login with Musicbrainz -> https://acoustid.org/new-application
deezer:
enabled: true
discogs:
enabled: true
secret: <discogs_token> # You can get it here -> https://www.discogs.com/settings/developers
musicbrainz:
enabled: true
lyrics:
providers:
lrclib:
enabled: true
sync:
enabled: true
devices:
- uuid: 8722-177E
name: iPod
sync_path: Soulsolid
jobs:
log: true
log_path: ./logs/jobs
webhooks:
enabled: true
job_types:
- directory_import
- download_album
- dap_sync
command: "TEXT=\"🎵 Job {{.Name}} ({{.Type}}) {{.Status}}\\n📝 {{.Message}}\\n⏱️ Duration: {{.Duration}}\"\ncurl -X POST -H 'Content-Type: application/json' \\\n -d '{\"chat_id\": \"<chat_id>\", \"text\": \"'\"$TEXT\"'\", \"parse_mode\": \"HTML\"}' \\\n https://api.telegram.org/bot<bot_token>/sendMessage\n"| Variable | Description | Default |
|---|---|---|
TELEGRAM_TOKEN |
Overrides the Telegram bot token | - |
DISCOGS_API_KEY |
Sets the Discogs API key for metadata provider | - |
ACOUSTID_CLIENT_KEY |
Sets the AcoustID client key for metadata provider | - |
IMAGE_TAG |
Sets the application version | dev |
For security, sensitive values should be set via environment variables rather than stored in config.yaml:
# Required for Telegram bot functionality
export TELEGRAM_TOKEN="your_telegram_bot_token_here"