Skip to content

Navidrome

A lightweight and fast music server that lets you stream your personal music collection anywhere. This guide covers installation, configuration, and essential commands to get Navidrome up and running smoothly on your system.


Install navidrome

wget https://github.com/navidrome/navidrome/releases/download/v0.55.1/navidrome_0.55.1_linux_amd64.deb 
dpkg -i navidrome_0.55.1_linux_amd64.deb

Launch navidrome with default configuration

navidrome 
 _   _             _     _
| \ | |           (_)   | |
|  \| | __ ___   ___  __| |_ __ ___  _ __ ___   ___
| . ` |/ _` \ \ / / |/ _` | '__/ _ \| '_ ` _ \ / _ \
| |\  | (_| |\ V /| | (_| | | | (_) | | | | | |  __/
\_| \_/\__,_| \_/ |_|\__,_|_|  \___/|_| |_| |_|\___|
                          Version: 0.55.1 (beb768cd)

INFO[0000] goose: no migrations to run. current version: 20241026183640 
INFO[0000] Starting signaler                            
INFO[0000] Creating Image cache                          maxSize="100 MB" path=cache/images
INFO[0000] Periodic scan is DISABLED                    
INFO[0000] Setting Session Timeout                       value=48h
INFO[0000] Periodic backup is DISABLED                  
INFO[0000] Starting scheduler                           
INFO[0000] Scheduling DB optimizer                       schedule="@every 24h"
INFO[0000] Starting Insight Collector                   
WARN[0000] Error resolving path                          err="lstat /home/wuseman/music: no such file or directory" path=/home/wuseman/music
ERRO[0000] Watcher: Error getting FS                     error="stat /home/wuseman/music: no such file or directory: /home/wuseman/music" library=1 path=music
INFO[0000] Finished initializing cache                   cache=Image elapsedTime=21.3ms maxSize=100MB
INFO[0000] Login rate limit set                          requestLimit=5 windowLength=2
INFO[0000] Found ffmpeg                                  path=/usr/bin/ffmpeg
INFO[0000] Spotify integration is not enabled: missing ID/Secret 
INFO[0000] Mounting Native API routes                    path=/api
INFO[0000] Creating Transcoding cache                    maxSize="100 MB" path=cache/transcoding
INFO[0000] Finished initializing cache                   cache=Transcoding elapsedTime="197.212µs" maxSize=100MB
INFO[0000] Mounting Subsonic API routes                  path=/rest
INFO[0000] Mounting Public Endpoints routes              path=/share
INFO[0000] Mounting LastFM Auth routes                   path=/api/lastfm
INFO[0000] Mounting ListenBrainz Auth routes             path=/api/listenbrainz
INFO[0000] Mounting Background images routes             path=/backgrounds
INFO[0000] Mounting WebUI routes                         path=/app
INFO[0000] Creating backgrounds cache                    maxSize="100 MB" path=cache/backgrounds
INFO[0000] Finished initializing cache                   cache=backgrounds elapsedTime="253.319µs" maxSize=100MB
INFO[0000] ----> Navidrome server is ready!              address="0.0.0.0:4533" startupTime=48.2ms tlsEnabled=false
^CINFO[0000] Stopping HTTP server                         
WARN[0002] Resuming interrupted scan                    
ERRO[0002] Scanner: No admin user found!                 error="context canceled"
ERRO[0002] Scan failed                                   error="media file count: context canceled"
INFO[0002] Closing Database                             
INFO[0002] Navidrome stopped, bye.                      

Launch navidrome with specific music folder

navidrome --musicfolder /mnt/usb/glftpd/site/archive/mp3/

IP Address to bind

navidrome --address <ipaddress>

Specify port

navidrome --port 4533

Specify config file

navidrome --configfile /path/to/navidrome.toml

Enable debug logging

navidrome --loglevel debug

Set data folder location

navidrome --datafolder /path/to/data

Enable transcoding configuration in UI

navidrome --enabletranscodingconfig

Set TLS certificate and key for HTTPS

navidrome --tlscert /path/to/cert.pem --tlskey /path/to/key.pem

Disable banner on startup

navidrome --nobanner

Flags:

Flag Description Default
-a, --address <ip> IP address to bind to "0.0.0.0"
--albumplaycountmode <mode> Compute playcount for albums: absolute or normalized "absolute"
--autoimportplaylists Enable/disable .m3u playlist auto-import true
--baseurl <url> Base URL for reverse proxy (e.g., /music or http://my.server.com)
--cachefolder <path> Folder to store cache data (transcoding, images…), needs write access
-c, --configfile <path> Path to configuration file "./navidrome.toml"
--datafolder <path> Folder to store application data (DB), needs write access "."
--enabletranscodingconfig Enables transcoding configuration in the UI
-h, --help Show help message
--imagecachesize <size> Size of image (artwork) cache. Set to 0 to disable "100MB"
--logfile <path> Log file path, if not set logs will be printed to stderr
-l, --loglevel <level> Log level: error, info, debug, trace "info"
--musicfolder <path> Folder where your music is stored "music"
-n, --nobanner Don't show banner
-p, --port <int> HTTP port Navidrome will listen to 4533
--prometheus.enabled Enable/disable Prometheus metrics endpoint
--prometheus.metricspath <path> HTTP endpoint for Prometheus metrics "/metrics"
--scaninterval <duration> How frequently to scan for changes in your music library
--sessiontimeout <duration> How long Navidrome will wait before closing web UI idle sessions 48h0m0s
--tlscert <path> Optional path to a TLS certificate file (enables HTTPS listening)
--tlskey <path> Optional path to a TLS key file (enables HTTPS listening)
--transcodingcachesize <size> Size of transcoding cache "100MB"
--uiloginbackgroundurl <url> URL to a background image used in the login page "/backgrounds"
--unixsocketperm <perm> Optional file permission for the Unix socket "0660"
-v, --version Display Navidrome version