Skip to content

Homelab - Cloud Music Server Navidrome

Navidrome is an open-source web-based music server and streaming platform where you can store your own music and listen to it on multiple clients.

Deployment (Docker Compose)

First, create a compose.yaml file and paste the following content:

compose.yaml
version: "3"
services:
  navidrome:
    container_name: ${STACK_NAME}_app
    image: deluan/navidrome:${APP_VERSION}
    user: 1000:1000 # If permission issues occur, you can try deploying as root (0:0)
    ports:
      - "${APP_PORT}:4533"
    environment:
      # Optional: put your config options customization here. Examples:
      ND_SCANSCHEDULE: 24h
      ND_LOGLEVEL: info
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: ""
    volumes:
      - ${STACK_DIR}:/data
      - ${DATA_DIR}:/music:ro
    restart: unless-stopped

(Optional) It is recommended to create a .env file in the same directory as compose.yaml and customize your environment variables. If you prefer not to use environment variables, you can directly customize your parameters in compose.yaml (e.g., replace ${STACK_NAME} with navidrome).

.env
STACK_NAME=navidrome
STACK_DIR=xxx # Customize your project storage path, e.g., ./navidrome
DATA_DIR=xxx # Customize your music storage path, e.g., ./music

# navidrome
APP_VERSION=latest
APP_PORT=xxxx # Customize the access port, choose one that is not already in use

If you have a NAS, you can also mount the storage space on your NAS using the NFS protocol to save server space. For more details, please refer to Mounting Synology NAS Hard Drive Expansion Space (NFS) on Linux.

Finally, execute the command docker compose up -d in the same directory as compose.yaml to start the orchestrated container.

Configuration Instructions

There are many options for mobile apps. The one I personally find best for Android is substreamer. For more apps, you can refer to the official list of Apps.

References and Acknowledgements

Original: https://wiki-power.com/
This post is protected by CC BY-NC-SA 4.0 agreement, should be reproduced with attribution.

This post is translated using ChatGPT, please feedback if any omissions.