Using the official docker images with Docker and Docker Compose

Docker images are available for the linux/amd64, linux/arm/v6, linux/arm/v7 and linux/arm64 platforms. They include everything needed to run Navidrome.

Using docker-compose :

Create a docker-compose.yml file with the following content (or add the navidrome service below to your existing file):

version: "3"
    image: deluan/navidrome:latest
    user: 1000:1000 # should be owner of volumes
      - "4533:4533"
    restart: unless-stopped
      # Optional: put your config options customization here. Examples:
      ND_LOGLEVEL: info  
      ND_BASEURL: ""
      - "/path/to/data:/data"
      - "/path/to/your/music/folder:/music:ro"

Start it with docker-compose up -d. Note that the environment variables above are just an example and are not required. The values in the example are already the defaults

Using docker command line tool:

$ docker run -d \
   --name navidrome \
   --restart=unless-stopped \
   --user $(id -u):$(id -g) \
   -v /path/to/music:/music \
   -v /path/to/data:/data \
   -p 4533:4533 \ 
   -e ND_LOGLEVEL=info \


  • The user argument should ideally reflect the UID:GID of the owner of the music library to avoid permission issues. For testing purpose you could omit this directive, but as a rule of thumb you should not run a production container as root.
  • Remember to change the volumes paths to point to your local paths. /data is where Navidrome will store its DB and cache, /music is where your music files are stored.
  • Configuration options can be customized with environment variables as needed. For docker-compose just add them to the environment section or the yml file. For docker cli use the -e parameter. Ex: -e ND_SESSIONTIMEOUT=24h
  • If you want to use a configuration file with Navidrome running in Docker, you can create a navidrome.toml config file in the /data folder and set the the option ND_CONFIGFILE=/data/navidrome.toml

Last modified March 2, 2021: Reorganize installation section (ad4c285)