Set up Navidrome on a Raspberry Pi (always-on home server)
Want your music server to run 24/7 without keeping your laptop on? A small Raspberry Pi is perfect — quiet, cheap, sips power.
What's a Raspberry Pi? What's this?
A Raspberry Pi is a tiny computer the size of a deck of cards. It costs around $50–$80, runs Linux, and is the standard hobby machine for home servers. You plug in power, an SD card with the OS, and an Ethernet cable — that's it.
Install Raspberry Pi OS Lite (64-bit)
Download the Raspberry Pi Imager on your normal computer. Plug your SD card in. Open the imager, choose Raspberry Pi OS Lite (64-bit), pick your SD card, click the gear icon to set a username, password, and enable SSH, then write.
Boot the Pi and connect to it
Put the SD card in the Pi, plug in Ethernet and power. Wait one minute. From your normal computer, open a terminal and run:
ssh YOUR_USER@raspberrypi.local
Enter your password. You're now controlling the Pi remotely.
Install ffmpeg and update the system
On the Pi (over SSH):
sudo apt update sudo apt install -y ffmpeg curl ca-certificates
What does
sudomean?sudo= "super-user do." Runs commands with admin powers. Asks for your password. Required for installing system-wide software.Why ffmpeg?
Navidrome streams to phones, laptops, browsers — each wants a different audio format.
ffmpegdoes the conversion. Required for transcoding to work.Install Navidrome (.deb package)
Find the latest version on the releases page and grab the
.debfor your Pi's architecture:- Pi 3 / 4 / 5 / Zero 2 W —
linux_arm64.deb - Pi 2 —
linux_armv7.deb - Pi 1 / Zero / Zero W —
linux_armv6.deb
Download and install (replace
X.Y.Zwith the current version):wget https://github.com/navidrome/navidrome/releases/download/vX.Y.Z/navidrome_X.Y.Z_linux_arm64.deb sudo apt install ./navidrome_X.Y.Z_linux_arm64.deb
Adds Navidrome as a systemd service that starts automatically on every boot. Runs as user
navidrome.Which ARM build do I have?
Run
uname -m.aarch64= arm64.armv7l= armv7.armv6l= armv6.- Pi 3 / 4 / 5 / Zero 2 W —
Mount your music drive (auto-mount on boot)
Plug a USB drive into the Pi, then find it:
lsblk -f
Note the partition (e.g.
sda1), filesystem (e.g.exfat,ntfs,ext4), and UUID. Install filesystem helpers if needed:sudo apt install -y exfatprogs ntfs-3g
Create the mount point and add an fstab entry so it survives reboots:
sudo mkdir -p /mnt/music echo "UUID=YOUR-UUID-HERE /mnt/music auto nofail,ro,uid=navidrome,gid=navidrome 0 0" | sudo tee -a /etc/fstab sudo mount -a
Replace
YOUR-UUID-HEREwith the UUID fromlsblk -f.romounts read-only (Navidrome only reads).nofailstops the Pi hanging on boot if the drive is unplugged.Music already on the SD card?
Skip this step. Just point Navidrome at the folder, e.g.
/home/pi/Music.Point Navidrome at your music
Edit the config:
sudo nano /etc/navidrome/navidrome.toml
Set
MusicFolder = "/mnt/music". Save with Ctrl + O, Enter, exit with Ctrl + X. Restart the service:sudo systemctl restart navidrome
Check it's running
sudo systemctl status navidrome
Look for "active (running)" in green.
Open it from any device
On your phone or laptop (same network), open
http://raspberrypi.local:4533. Done — always-on music server.raspberrypi.localdoesn't resolve?Find the Pi's IP with
hostname -Ion the Pi, then usehttp://192.168.x.y:4533instead. Some Windows setups need Bonjour (iTunes / Bonjour Print Services) for.localnames.