Navidrome is a lightweight music server that lets you stream your personal music collection anywhere. It has a modern web interface similar to Spotify, and works with mobile apps like Amperfy for Apple devices, Symfonium for Android, or any other Subsonic-compatible client.
It’s fast, efficient, and perfect if you want your own streaming solution for your private library.
This guide assumes:
- Podman is already installed and running
- You have a music share accessible by the host (local folder, NAS, or even a small Alpine LXC/VM with SMB)
By default, Navidrome runs over HTTP on port 4533. Access it through a reverse proxy with TLS (NGINX, Caddy, Traefik, etc.).
Quadlet setup
Create a Quadlet file:
sudo nano /etc/containers/systemd/navidrome.container
Paste the following configuration:
[Unit]
Description=Navidrome music server
After=network-online.target
Wants=network-online.target
[Container]
Image=docker.io/deluan/navidrome:latest
PublishPort=4533:4533
Volume=/mnt/music:/music
Volume=navidrome:/data
# Security Label disable needed for SELinux
SecurityLabelDisable=true
# Logging
Environment=ND_LOGLEVEL=info
# Telemetry
Environment=ND_ENABLEINSIGHTSCOLLECTOR=false
Environment=ND_ENABLEEXTERNALSERVICES=false
# Downloads
Environment=ND_ENABLEDOWNLOADS=false
[Service]
Restart=always
[Install]
WantedBy=multi-user.target
Explanation:
Security Label is needed for RHEL-based distributions (SELinux). Logging is set to info
only. This configuration disables telemetry and downloads from the web UI. Adjust these settings if you prefer other options. A full list is available in the Navidrome configuration documentation.
Enable and start the container:
sudo systemctl daemon-reload
sudo systemctl start navidrome.service
Force a rescan of your music library
After uploading music, trigger Navidrome to do a rescan.
Find the container name:
sudo podman ps
Then execute:
sudo podman exec systemd-navidrome ./navidrome scan -f
This runs the scan directly without entering the container.
Keeping your library in sync
A clean way is to manage your library on your PC, then sync it to your share with rsync
.
Example:
rsync -av --delete --progress /local/music/ /mnt/smb/music/
This keeps the share in sync, including renames and deletions.
Conclusion
You now have Navidrome deployed as a Podman container managed by systemd through Quadlet. The service is defined in a unit file that documents volumes, environment variables, and networking, making it easy to maintain and reproduce. Navidrome runs on port 4533 with data stored separately from your music library.
Run navidrome scan -f
inside the container with podman exec
to update the library, and use rsync
to synchronize the collection to the host share. Secure access by placing Navidrome behind a reverse proxy with TLS.