How to Install Navidrome with Docker: A Step-by-Step Guide

Learn how to set up Navidrome with Docker in minutes with this step-by-step guide, perfect for streaming your music collection effortlessly.

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-composeCode 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 navidromeCode 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.ymlCode 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 -dCode language: Bash (bash)
Deploying Navidrome music streaming server with Docker Compose.
Deploying Navidrome music streaming server with Docker Compose.

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 navidromeCode 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.โ€

Creating an administrative user.
Creating an administrative user.

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!

Navidrome music streaming server.
Navidrome music streaming server.

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 -dCode 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!

Bobby Borisov

Bobby Borisov

Bobby, an editor-in-chief at Linuxiac, is a Linux professional with over 20 years of experience. With a strong focus on Linux and open-source software, he has worked as a Senior Linux System Administrator, Software Developer, and DevOps Engineer for small and large multinational companies.

Think You're an Ubuntu Expert? Let's Find Out!

Put your knowledge to the test in our lightning-fast Ubuntu quiz!
Ten questions to challenge yourself to see if you're a Linux legend or just a penguin in the making.

1 / 10

Ubuntu is an ancient African word that means:

2 / 10

Who is the Ubuntu's founder?

3 / 10

What year was the first official Ubuntu release?

4 / 10

What does the Ubuntu logo symbolize?

5 / 10

What package format does Ubuntu use for installing software?

6 / 10

When are Ubuntu's LTS versions released?

7 / 10

What is Unity?

8 / 10

What are Ubuntu versions named after?

9 / 10

What's Ubuntu Core?

10 / 10

Which Ubuntu version is Snap introduced?

The average score is 69%