Guides 11792 Published by

The guide walks you through installing Navidrome on Debian 11 by first ensuring you have ffmpeg, enough free disk space, and root or sudo access, then adding the official repository and pulling the binary with apt. It explains how to edit the systemd unit so the service runs as www‑data, points ND_MUSICFOLDER to your music directory, selects a port, and optionally adds a hosts entry for local DNS resolution. After enabling and starting the service you can check that it’s running, review logs if it fails, and reach the web UI at http://:4533 or http://music.local:4533 to create an admin account. The author also suggests optional tweaks like using an SSL reverse proxy, adjusting file permissions, setting up auto‑updates, and shares practical lessons about permission errors and a full /var directory that can kill the service.



How to Install Navidrome on Debian 11 in Minutes

If you’re looking for a lightweight, self‑hosted music server that actually works out of the box, this guide will get Navidrome up and running on Debian 11 without turning your machine into an endless debugging session.

Why I Picked Navidrome

I’ve tried a handful of streaming stacks—Plex, Subsonic, Jellyfin—all of which love to eat system resources or come bundled with unnecessary bloat. Navidrome keeps it simple: a single binary, minimal dependencies, and an API that feels like modern web dev. It runs on ARM, Docker, or just plain old Debian, so it fits nicely into a home server setup.

Pre‑Check Your System
What to look for Why it matters
Debian 11 (bullseye) The packages we’ll pull are built for bullseye; older releases may miss dependencies.
Sufficient disk space Navidrome writes logs and caches thumbnails; a full /var can kill the service.
Root or sudo access We need to install systemd units and edit /etc/hosts if you want local networking.

I once had a server where the Navidrome container started fine but crashed after a few minutes because the disk was 99 % full—logs, thumbnails, all of that. Make sure /var has at least 1 GB free.

Install Required Packages
sudo apt update
sudo apt install -y ffmpeg libavformat-dev libavcodec-dev libavutil-dev

Navidrome uses FFmpeg to generate artwork thumbnails from audio files. Without it, the UI looks like a blank white canvas.

Add the Navidrome Repository
echo "deb https://repo.navidrome.org/deb stable main" | sudo tee /etc/apt/sources.list.d/navidrome.list
wget -O- https://repo.navidrome.org/keys/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/navidrome.gpg > /dev/null

The official repo gives you the latest stable release without having to manually download and unpack a tarball.

Install Navidrome
sudo apt update
sudo apt install -y navidrome

A single command pulls in the binary, places it in /usr/bin, and installs a systemd service file at /etc/systemd/system/navidrome.service.

Configure the Service

Open the service file:

sudo nano /etc/systemd/system/navidrome.service

Add or tweak these lines under [Service]:

User=www-data
Group=www-data
Environment="ND_MUSICFOLDER=/srv/music"
Environment="ND_HTTP_PORT=4533"
ExecStart=/usr/bin/navidrome -config /etc/navidrome/config.toml
Restart=on-failure

Running as www-data keeps the process isolated from root. The ND_MUSICFOLDER points to where your MP3s live; change that to wherever you store music.

If you want a nicer URL, edit /etc/hosts:

echo "127.0.1.1  music.local" | sudo tee -a /etc/hosts

Now http://music.local:4533 will work on the machine itself and any device that resolves music.local.

Enable and Start
sudo systemctl daemon-reload
sudo systemctl enable navidrome
sudo systemctl start navidrome

Check status:

systemctl status navidrome | grep Active

You should see “active (running)”. If it’s stuck in a failed state, look at the journal:

journalctl -u navidrome -f

Common pitfalls: missing ffmpeg (no thumbnails), wrong music folder path (empty library), or port conflicts if something else is using 4533.

Accessing Navidrome

Open your browser and go to:

http://<your-server-ip>:4533

Or, if you added the hosts entry, http://music.local:4533. The first time you hit it, you’ll be prompted to create an admin user. Pick a strong password—no one wants their music catalog getting compromised.

Optional Tweaks
  • SSL: If you’re exposing Navidrome beyond your LAN, set up a reverse proxy with Nginx and TLS.
  • User Permissions: By default the www-data user owns the service; if you want more granular control, use chmod 750 /srv/music or create a dedicated group.
  • Auto‑Updates: Add an entry to /etc/cron.weekly/update-navidrome that runs apt update && apt upgrade -y navidrome.
What I Learned

I initially tried the “download the binary” route, only to realize I’d forgotten to give Navidrome permission to read my music folder. The systemd unit made it trivial, and the official repo kept everything up‑to‑date automatically.

If you run into a broken install, double‑check the ExecStart path; sometimes people copy the wrong binary from /usr/local/bin. And don’t be surprised if Navidrome seems slow on a fresh install—it’s still building its database of thumbnails.