Deploying Navidrome on Synology DSM with Docker Compose and Reverse Proxy

Learn how to install Navidrome Music Server on Synology NAS using Docker Compose and configure it securely via DSM’s built-in Reverse Proxy. Includes full setup steps, backup automation, and proxy optimization tips.

Deploying Navidrome on Synology DSM with Docker Compose and Reverse Proxy

Introduction: Turn Your Synology NAS into a Personal Spotify

If you’ve ever dreamed of hosting your own music streaming service, look no further than Navidrome — a lightweight, open-source alternative to Spotify and Plexamp.

With Synology DSM (DiskStation Manager), deploying Navidrome is easier than ever. You can run it in Docker, automatically back up your configuration, and access your music library securely over HTTPS through DSM’s built-in Reverse Proxy — no need for third-party proxy tools.

This guide will walk you through everything you need to:

  • Install Navidrome via Docker Compose
  • Configure DSM Reverse Proxy for HTTPS access
  • Automate daily backups
  • Optimize for performance using Edge Network tips
  • Optionally use Nginx Proxy Manager (NPM) if you prefer GUI-based control

By the end, you’ll have your own self-hosted Spotify-like platform, streaming your NAS-based music collection from anywhere in the world. 🎧


Folder Structure: The Foundation of Your Setup

Before deploying Navidrome, it’s crucial to establish a clean, organized directory layout on your Synology NAS.

Here’s the recommended folder structure:

/volume1/docker/navidrome/
│
├── docker-compose.yml         # Docker configuration file
│
├── data/                      # Navidrome metadata, database, and configs
│
├── backups/                   # Daily backup storage
│
└── music/                     # Your actual music library (read-only)
💡 Tip: If your NAS already hosts your music under /volume1/music, simply mount that folder directly inside the container.

The Complete Docker Compose File

Create a new file named docker-compose.yml inside /volume1/docker/navidrome/ with the following content:

services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    restart: unless-stopped
    user: "1026:100"
    ports:
      - "4533:4533"
    environment:
      TZ: "Asia/Seoul"
      ND_DEFAULTLANGUAGE: "ko"
      ND_DEFAULTTHEME: "Dark"
      ND_ENABLEINSIGHTSCOLLECTOR: "false"
      ND_BASEURL: "https://music.example.com"
      ND_BACKUP_PATH: "/data/backups"
      ND_BACKUP_SCHEDULE: "0 3 * * *"
      ND_BACKUP_COUNT: "7"
    volumes:
      - ./data:/data
      - /volume1/music:/music:ro
      - ./backups:/data/backups

Now let’s break it down and understand each key component.


Step-by-Step Breakdown of the Compose File

1. Image & Container Name

image: deluan/navidrome:latest
container_name: navidrome

The official Navidrome Docker image maintained by its developer.

Naming the container helps you identify it easily when managing Docker containers on DSM.


2. Restart Policy

restart: unless-stopped

Ensures your container automatically restarts after a system reboot or crash — perfect for 24/7 availability.


3. User Permissions

user: "1026:100"

Maps the container process to your Synology NAS user.

This prevents permission issues when reading your music library and writing backups.

🔍 To find your UID and GID, SSH into DSM and run:
id yourusername

4. Port Mapping

ports:
  - "4533:4533"

Temporarily exposes Navidrome on port 4533 so you can access it locally before the reverse proxy setup.

Access it via:

http://your-nas-ip:4533

5. Environment Variables

Variable

Description

TZ

Sets timezone (Asia/Seoul for Korean users).

ND_DEFAULTLANGUAGE

UI language (ko = Korean).

ND_DEFAULTTHEME

Default visual theme.

ND_ENABLEINSIGHTSCOLLECTOR

Disables analytics for privacy.

ND_BASEURL

Must match your future reverse proxy URL.

ND_BACKUP_PATH

Backup directory inside container.

ND_BACKUP_SCHEDULE

Daily backup at 3:00 AM.

ND_BACKUP_COUNT

Keep last 7 backups.


6. Volumes

volumes:
  - ./data:/data
  - /volume1/music:/music:ro
  - ./backups:/data/backups
  • /data: stores internal database and configuration.
  • /music: mounts your NAS music folder as read-only (safeguard).
  • /backups: stores automated Navidrome backups.
🧠 Backups don’t include music files — only settings, playlists, and metadata.

Deploying Navidrome on DSM

  1. Open Synology DSM → Docker → Container → Project (or Container Manager in DSM 7.2+).
  2. Navigate to your docker-compose.yml directory.
  3. Click Launch with Compose File → Select your docker-compose.yml.
  4. DSM will download and run the Navidrome container.

Once deployed, visit:

http://your-nas-ip:4533

You’ll see the Navidrome setup screen where you can create your admin account.


Configuring Synology DSM Reverse Proxy

Now let’s make your Navidrome accessible from a custom domain (like music.example.com) using DSM’s built-in Reverse Proxy feature.

Step 1: Prepare a Domain

You need:

  • A domain name (e.g., example.com)
  • A DNS record (A or CNAME) pointing to your NAS public IP or DDNS hostname.

If you’re using Synology’s free DDNS service, you can skip external DNS setup.


Step 2: Open DSM Control Panel

Go to:

Control Panel → Login Portal → Advanced → Reverse Proxy

Click Create.


Step 3: Configure Proxy Rules

Setting

Value

Description

Navidrome

Source Protocol

HTTPS

Hostname

music.example.com

Port

443

Destination Protocol

HTTP

Hostname

localhost

Port

4533

Enable HSTS (for extra security)

Enable HTTP/2 (for better performance)

Click OK to save the rule.


Step 4: Add SSL Certificate

  1. Go to Control Panel → Security → Certificate
  2. Add or request a new certificate (e.g., from Let’s Encrypt)
  3. Assign this SSL certificate to your new music.example.com reverse proxy entry.
⚠️ Make sure port 443 is open on your router and forwarded to your NAS for SSL access.

Step 5: Test Your HTTPS Access

Now, visit your Navidrome domain in a browser:

https://music.example.com

You should see your Navidrome login screen — now encrypted, secure, and proxy-routed through DSM!


Automating Backups on DSM

Navidrome automatically backs up daily according to your environment variables.

To manually verify backups:

docker exec navidrome ls /data/backups

You’ll see files like:

navidrome-backup-2025-10-06.zip
💡 Tip: Schedule DSM’s Hyper Backup or Shared Folder Sync to copy /docker/navidrome/backups offsite or to another NAS for disaster recovery.

Optimizing DSM Reverse Proxy Performance

DSM’s reverse proxy is reliable, but you can enhance it further with these tweaks:

1. Enable HTTP/3 Support (if available)

DSM 7.2+ supports HTTP/3 (QUIC) under the Application Portal → Reverse Proxy → HTTP/3 tab.

This improves latency and streaming reliability.


2. Increase Buffer Size

Under Reverse Proxy → Edit → Custom Header, add:

proxy_buffering off;
proxy_request_buffering off;
proxy_read_timeout 90;
proxy_send_timeout 90;

This prevents streaming interruptions for large FLAC files or high-bitrate content.


3. Use a CDN Edge Network

If your domain runs through Cloudflare, enable Proxy Mode (orange cloud).

It routes static assets (like album art) through Cloudflare’s global edge network, improving load speed for remote access.

  • Enable Brotli compression
  • Set cache level to Standard
  • Always use HTTPS
⚙️ You’ll enjoy global low-latency access without modifying your DSM settings.

4. Secure Headers

Under DSM Reverse Proxy “Custom Header,” add:

add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header Referrer-Policy no-referrer-when-downgrade;

These headers improve browser security and privacy.


Optional: Using Nginx Proxy Manager (NPM) Instead

If you prefer a GUI-based proxy tool or your DSM version doesn’t include Reverse Proxy:

  1. Deploy Nginx Proxy Manager via Docker.
  2. Add a Proxy Host:
    • Domain: music.example.com
    • Forward IP: navidrome
    • Forward Port: 4533
  3. Request Let’s Encrypt SSL, enable Force SSL and HTTP/2.

That’s it! NPM automatically handles renewal and certificate management.

However, if DSM Reverse Proxy is available, use DSM — it’s lighter and deeply integrated with Synology’s network stack.


Troubleshooting Common DSM Issues

Problem

Cause

Solution

SSL not working

Port 443 not forwarded

Check router and DSM firewall settings

Reverse proxy loop

Wrong ND_BASEURL

Ensure it matches https://music.example.com

Permission denied for music

UID/GID mismatch

Match NAS user ID in Compose file

Proxy loads slowly

Missing Cloudflare or HTTP/3

Enable Edge caching and HTTP/3

Backup folder empty

Path mismatch

Verify /data/backups exists and mounted correctly


FAQs: Navidrome + DSM Setup

Q1. Can I run Navidrome alongside Plex or Jellyfin?

Yes. Each container uses different ports and resources. Just avoid port conflicts.

Q2. How do I update Navidrome safely?

Run:

docker compose pull
docker compose up -d

Your data remains intact.

Q3. Can I use DSM DDNS instead of a custom domain?

Absolutely! For example: https://music.synology.me works perfectly.

Q4. How can I stream from my phone?

Install a Subsonic-compatible app like Finamp, DSub, or Substreamer and enter your domain and credentials.

Q5. What happens if I delete the container?

Your data (stored under /data and /backups) remains safe. You can redeploy anytime.

Q6. Can Navidrome transcode on-the-fly?

Yes, using FFmpeg built into the container. It automatically adjusts bitrate based on device and network.


Conclusion

Setting up Navidrome on Synology DSM gives you the best of both worlds — Docker flexibility and DSM’s native security features.

With Reverse Proxy, your music server becomes accessible through a secure HTTPS domain, ready for seamless streaming across devices.

When combined with automatic backups, Cloudflare edge optimization, and DSM’s rock-solid environment, your self-hosted Spotify alternative is both powerful and future-proof.

So grab your headphones, hit play, and enjoy your NAS-powered sound sanctuary — built entirely on your terms. 🎶


External Reference:

👉 Official Navidrome Documentation: https://www.navidrome.org/docs