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.

≈ 30 minutes A bit techy Pi 4 or Pi 5
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.

  1. 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.

  2. 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.

  3. Install ffmpeg and update the system

    On the Pi (over SSH):

    sudo apt update
    sudo apt install -y ffmpeg curl ca-certificates
    What does sudo mean?

    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. ffmpeg does the conversion. Required for transcoding to work.

  4. Install Navidrome (.deb package)

    Find the latest version on the releases page and grab the .deb for your Pi's architecture:

    • Pi 3 / 4 / 5 / Zero 2 Wlinux_arm64.deb
    • Pi 2linux_armv7.deb
    • Pi 1 / Zero / Zero Wlinux_armv6.deb

    Download and install (replace X.Y.Z with 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.

  5. 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-HERE with the UUID from lsblk -f. ro mounts read-only (Navidrome only reads). nofail stops 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.

  6. 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.

  7. Open it from any device

    On your phone or laptop (same network), open http://raspberrypi.local:4533. Done — always-on music server.

    raspberrypi.local doesn't resolve?

    Find the Pi's IP with hostname -I on the Pi, then use http://192.168.x.y:4533 instead. Some Windows setups need Bonjour (iTunes / Bonjour Print Services) for .local names.

← all tutorials