Configuration
The config.yaml file contains all application settings. Key sections:
- telegram: Bot configuration and allowed users
- library: Path to your music library
- import: Import settings and file organization rules
- tag: Metadata provider settings (Not implemented yet)
- server: Web server configuration
- downloaders: External service configurations in the form of plugins. Supports both local
.sofiles and automatic building from Git repositories.
Security Note: Never commit sensitive values like tokens or API keys to version control. Use environment variables instead.
Automatic Configuration
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!
Default Configuration Values
When auto-generated, the config file includes these defaults:
# Soulsolid Configuration Example
#
# Environment variables can be referenced using the !env_var tag:
# token: !env_var TELEGRAM_BOT_TOKEN
#
# The application will fail to start if a referenced environment variable is not set.
libraryPath: ./music
downloadPath: ./downloads
telegram:
enabled: false
token: !env_var TELEGRAM_BOT_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
# url: https://github.com/contre95/soulsolid-dummy-plugin # Alternative Git repository URL
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
allow_missing_metadata: false # When true, allows importing tracks without artist or album metadata
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: !env_var ACOUSTID_CLIENT_KEY # You can login with Musicbrainz -> https://acoustid.org/new-application
deezer:
enabled: true
discogs:
enabled: true
secret: !env_var DISCOGS_API_KEY # You can get it here -> https://www.discogs.com/settings/developers
musicbrainz:
enabled: true
lyrics:
providers:
lrclib:
enabled: true
prefer_synced: false # Some programs like navidrome require synced lyrics
jobs:
log: true
log_path: ./logs/jobs
webhooks:
enabled: true
job_types:
- directory_import
- download_album
command: "echo hi"Environment Variables
Available Environment Variables
These environment variables can be referenced in the configuration file using the !env_var tag (e.g., token: !env_var TELEGRAM_BOT_TOKEN).
| Variable | Description | Default |
|---|---|---|
TELEGRAM_BOT_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_BOT_TOKEN="your_telegram_bot_token_here"
Soulsolid