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 |