Our music collections often feel scattered across countless devices, drives, and platforms. Wouldnโt it be great to store all your tunes in one convenient place that is accessible anytime, anywhere? Thatโs exactly what Navidrome, a free and open-source lightweight music server, makes possible.
Built with speed and efficiency in mind, Navidrome is one of the best free self-hosted music streaming software that can run on various hardwareโranging from powerful servers to modest single-board computersโyet robust enough to easily handle large libraries.
In this guide, Iโll walk you through the entire setup process and highlight a few handy tips so you can feel confident that youโre getting the most out of your new setup. By the end, youโll have a powerful, user-friendly music streaming server at your fingertips.
Prerequisites
Before proceeding with the installation, ensure you have Docker installed on your system.
But if you donโt have it, fear not; any of the following guides will help you get it quickly. Pick the distribution you are using in one of the following links: Ubuntu 24.04, Debian 12, Arch, Alma/Rocky, Fedora, Linux Mint 22, Pop!_OS 22.04, or Raspberry Pi OS.
The other essential component is Docker Compose. Recent Docker versions now include Docker Compose by installing the โdocker-compose-pluginโ package. So, install it if itโs not already in your setup.
However, if you prefer, you can get it separately using both commands below. In that case, remember, when running the tool, type โdocker-compose
โ instead of โdocker compose
.โ
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Code language: Bash (bash)
Install Navidrome with Docker Compose
The first step is to create the project directory in which our Docker Compose deployment file will be placed. Then switch to it; from here on, you need to execute all commands further down in this guide from that location.
mkdir navidrome
cd navidrome
Code language: Bash (bash)
Next, create a โdocker-compose.ymlโ file, like a blueprint for our Docker setup. This file will define the services, volumes, ports, etc., telling Docker Compose what to do and how to set up our Navidrome instance.
nano docker-compose.yml
Code language: Bash (bash)
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
ports:
- "4533:4533"
restart: unless-stopped
environment:
ND_SCANSCHEDULE: 1h
volumes:
- "./data:/data"
- "/path/to/your/music/folder:/music:ro"
Code language: Dockerfile (dockerfile)
Agree that our deployment couldn’t be simpler. The main thing to focus on is the “volumes” section. Here’s how it works:
When you start the container, a “data” directory will automatically be created in your current one, providing persistence for Navidrome’s data, like the SQLite database and cache directory.
Now, about the second volume mountโthis is where you’ll want to make a quick adjustment. The first part of the line, “/path/to/your/music/folder,” must be updated to point to the folder where your music collection is stored. And that’s it.
Save the changes and run the container in the background (detached mode):
docker compose up -d
Code language: Bash (bash)
Now, letโs move to the most exciting part. Open your browser and navigate to โhttp://localhost:4533โ (if you access Nvidrome from the same host) or โhttp://<server-ip-address>:4533โ (if you access it remotely). Of course, replace the โ<server-ip-address>โ part with your actual serverโs IP address.
If, for some reason, something goes wrong, you can easily figure out what happened by checking the container log with this simple Docker command:
docker logs navidrome
Code language: Bash (bash)
When accessing Navidrome for the first time, youโll be prompted to create an admin account. Fill in the username and password fields and click โCREATE ADMIN.โ
Once you’re logged into the Navidrome music streaming server, you’re all set. There’s nothing else to configure at this point, so go ahead and dive into the best partโenjoying your music collection!
But before we wrap up, though, Iโd like to share one more Navidrome setting that can significantly enhance your experience: artwork location resolution. This feature helps with displaying album covers and extra artist or album details.
Keep in mind that if this information isnโt already included as metadata in your music files, Navidrome wonโt retrieve it automatically. I mean you can see the difference below, with and without the extracted meta information for the music files.
The good news is, if the metadata you need isnโt already included in the files of your music collection, Navidrome can fetch it from external sources like Spotify and Last.fm.
However, to enable this feature, you’ll need to set up free API accounts with both services first. Donโt worryโNavidromeโs official documentation has clear, step-by-step instructions to guide you.
Once you have the API keys and secrets for both services, add them as environment variables to the Docker Compose deployment as shown below:
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
ports:
- "4533:4533"
restart: unless-stopped
environment:
ND_SCANSCHEDULE: 1h
ND_LASTFM_APIKEY: your-last-fm-api-key
ND_LASTFM_SECRET: your-last-fm-api-secret
ND_SPOTIFY_ID: your-spotify-api-key
ND_SPOTIFY_SECRET: your-spotify-api-secret
volumes:
- "./data:/data"
- "/path/to/your/music/folder:/music:ro"
Code language: Dockerfile (dockerfile)
Finally, stop the Navidrome container and redeploy it:
docker compose down
docker compose up -d
Code language: Bash (bash)
From now on, you can rest assured that if your music files are missing meta tags, Navidrome will automatically extract and display them beautifully in its interface.
Just a heads-up: Navidrome doesnโt let you edit any meta information or import it into your music collection. Itโs purely for display within the appโs UIโnothing more, nothing less.
Conclusion
And there you have it! Setting up Navidrome with Docker is simple once you follow the steps. With your music collection now streaming effortlessly, you can enjoy your favorite tunes anytime, anywhere, without a hitch.
I hope this guide was helpful and made the process straightforward for you. If you have any questions or feedback, feel free to reach out in the comment section below.
For more detailed information about Navidrome, visit the project’s website. In addition, I strongly recommend checking out the official documentation, particularly the section on environment variables.
Now go ahead, crank up the volume, and enjoy the sweet sound of successโliterally. Happy listening!