# LMS Sample configuration file # Path to the working directory where the database and other cached files will be written to. # Ensure this directory exists and has write permissions for the application working-dir = "/var/lms"; # ffmpeg location ffmpeg-file = "/usr/bin/ffmpeg"; # Log files, empty means debug+info on stdout, warning+error+fatal on stderr log-file = ""; # Minimum severity, can be "debug", "info", "warning", "error" or "fatal" # "debug" is useful for debugging purposes, but it will also generate a lot of log data and slow down the application log-min-severity = "info"; # Database consistency check to run at startup. # Can be "none", "quick", or "full" db-integrity-check = "quick"; # Output db queries on stdout # Use this only for debugging purpose, as this may impact performance db-show-queries = false; # Record stats for database queries. # Use this only for debugging purposes, as this may impact performance db-profile-queries = false; # Listen port/addr of the web server listen-port = 5082; listen-addr = "0.0.0.0"; behind-reverse-proxy = false; # original-ip-header and trusted-proxies are used only if behind-reverse-proxy is set to true original-ip-header = "X-Forwarded-For"; trusted-proxies = ( "127.0.0.1", "::1" ); # If enabled, these files have to exist and have correct permissions tls-enable = false; tls-cert = "/var/lms/cert.pem"; tls-key = "/var/lms/privkey.pem"; tls-dh = "/var/lms/dh2048.pem"; # Path to the resources used by the web interface. wt-resources = "/usr/share/Wt/resources"; docroot = "/usr/share/lms/docroot/;/resources,/css,/images,/js,/favicon.ico"; approot = "/usr/share/lms/approot"; # Location for deployment (See README if you want to deploy on a non root path) deploy-path = "/"; # Number of threads to be used to dispatch http requests (0 means number of logical CPUs) http-server-thread-count = 0; # ListenBrainz root API listenbrainz-api-base-url = "https://api.listenbrainz.org"; # How many listens to retrieve when syncing (0 to disable sync) listenbrainz-max-sync-listen-count = 1000; # How often to resync listens (0 to disable sync) listenbrainz-sync-listens-period-hours = 1; # How many feedbacks to retrieve when syncing (0 to disables sync) listenbrainz-max-sync-feedback-count = 1000; # How often to resync feedbacks (0 to disable sync) listenbrainz-sync-feedbacks-period-hours = 1; # Last.fm API and authorization URLs lastfm-api-base-url = "https://ws.audioscrobbler.com"; lastfm-auth-base-url = "https://www.last.fm"; # How often to submit pending scrobbles (0 to disable) lastfm-submit-period-hours = 1; # Acousticbrainz root API acousticbrainz-api-base-url = "https://acousticbrainz.org"; # Authentication # Available backends: "internal", "PAM", "http-headers" authentication-backend = "internal"; # The number of bcrypt rounds to be used when backend is set to "internal". The higher the more secure internal-password-bcrypt-round = 12; # The header to be used to read the authentication user when backend is set to "http-headers" http-headers-login-field = "X-Forwarded-User"; # Max entries in the login throttler (1 entry per IP address. For IPv6, the whole /64 block is used) login-throttler-max-entries = 10000; # API api-subsonic = true; # Enable or disable user/password authentication for the Subsonic API. # Note: Since token/salt authentication is always disabled, setting this to 'false' means only API keys can be used to access the Subsonic API. api-subsonic-support-user-password-auth = true; # Use this list to make the reported server version to 1.12.0 depending on the client's name # Main usage is to make auto detections for the 'p' (password) parameter work api-subsonic-old-server-protocol-clients = ("DSub"); # List of clients for whom open subsonic extensions and extra fields are disabled api-open-subsonic-disabled-clients = ("DSub"); # Turn on this option to allow the demo account creation/use demo = false; # Max cover cache size in MBytes cover-max-cache-size = 30; # JPEG quality for covers (range is 1-100) cover-jpeg-quality = 75; # Preferred file names for covers (order is important, accept wildcards) cover-preferred-file-names = ("cover", "front", "folder", "default"); # Image file names searched alongside the artist info file (artist.nfo) # Note: files whose name is the artist's MBID are always searched first. You can place the MBID files anywhere in your libraries. artist-info-image-file-names = ("thumb", "folder", "fanart"); # File names for artist images (order is important, accept wildcards) # Note: files next to artist info files are searched first. artist-image-file-names = ("artist"); # File names for medium images (order is important, accept wildcards) # Note: files named after the disc itself are always searched before the names in this list. medium-image-file-names = ("discsubtitle"); # Internal tracing for profiling purposes. Enable only if necessary, as it incurs some runtime overhead! # Possible values are "disabled", "overview" or "detailed". # If enabled, data has to be dumped in the tracing view located in the admin menu tracing-level = "disabled"; # The tracing buffer size, in MBytes (min is 16) tracing-buffer-size = 16; # Set to true if you want to hide duplicate tracks scanner-skip-duplicate-mbid = false; # Scanner read style for metadata, may be 'fast', 'average' or 'accurate' scanner-parser-read-style = "average"; # Number of threads to use for parallelized tasks (e.g., scanning file metadata). 0 means half the number of logical CPUs. scanner-thread-count = 0; # Path to the musicNN model musicnn-model-path = "/usr/share/lms/models/MSD_musicnn_embedding.onnx"; # Maximum number of non-overlapping patches to extract per track. More patches means better accuracy but also longer processing time. Must be > 0. musicnn-max-patch-count-per-track = 20; # Refresh period for podcast feeds in hours (must be greater or equal than 1) podcast-refresh-period-hours = 2; # Automatically download new episodes podcast-auto-download-episodes = true; # Max age in days for auto-downloaded episodes before deletion podcast-auto-download-episodes-max-age-days = 30; # Playqueue max entry count ui-playqueue-max-entry-count = 1000; # Allow downloads ui-allow-downloads = true; # Jukebox settings # Available backend is "pulseaudio". You can also use "auto" to auto select and "none" to disable jukebox jukebox-audio-backend = "auto";