Running a Music Server (with Docker)

2024/08/21

If you have a huge physical music collection or a desire to not pay for your music, running a Music server is a great way to organize your collection. This guide will be covering configuring Navidrome and slskd.

This tutorial will be assuming you’re running your music server in the /srv/music directory, but it should be trivially easy for you to change where it is. We’ll also be assuming you have docker and docker-compose installed.

# This tutorial assumes you're root
# Firstly, we should create the /srv/music directory
mkdir /srv/music
cd /srv/music
# Now we should create the compose.yml file 
nano compose.yml

compose.yml

services:
  navidrome:
    image: deluan/navidrome:latest
    user: 1000:1000
    ports:
      - "4533:4533"
    restart: unless-stopped
    environment:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: ""
    volumes:
      - "./navidrome:/data"
      - "./soulseek/downloads:/music" # you can change this to something else if you aren't using soulseek.
  # the slskd container is entirely optional if you do not want to engage in piracy.
  slskd:
    image: slskd/slskd
    container_name: slskd
    ports:
      - "5030:5030"
      - "5031:5031"
      - "50300:50300"
    environment:
      - SLSKD_REMOTE_CONFIGURATION=true
    volumes:
      - ./soulseek:/app
    restart: always
# Now we should run the stack to generate config files
docker-compose up -d
# Wait around 20-30 seconds until shutting down the containers
docker-compose down
# Now we'll edit the slskd config
nano ./soulseek/slskd.yml

If you’re running this locally, i.e. you won’t expose this to the internet, I suggest enabling web.authentication.disabled. Otherwise, setup an username and a password. Don’t use common usernames. Also, you must create a soulseek account and add it to your slskd config (soulseek.username & soulseek.password)

# Now you can run your stack
docker-compose up -d

Now, you must configure an administrator Navidrome account. Browse to https://[your server ip]:4533/ and make your administrator account. Now you can add your music to whatever folder you configured, or /srv/soulseek/downloads. For soulseek, you’ll have to browse to https://[your server ip]:5030/ and login.

From here, you can go bananas.

Thanks for reading this quick tutorial.