Streaming music is a feature of modern life, and most people are used to the convenience of services such as Spotify and YouTube. If you have a large, privately owned music collection, you can instead use Navidrome to stream your favorite tunes to your mobile devices and listen to internet radio.

Why Use Navidrome to Stream Music From Your Raspberry Pi?

For many people, accumulating large music collections is a hobby. While commercial streaming services have unimaginably huge stocks of licensed tracks, often you’ll need a paid-for subscription to listen to more obscure artists. And amid the profusion of different streaming platforms, there’s no guarantee that your chosen provider will indefinitely retain the rights to all the music it currently licenses.

If you choose to use the free subscription model of music streaming services, you’re subjected to annoying data collection and adverts. It makes far more sense to purchase your own music, or rip your aging CD collection into digital form, and stream it yourself.

Man wearing headphones

There are several solutions which allow you to use your Raspberry Pi as a music streamer, including thePython-based music server Mopidy. You can also use theJellyfin streaming media centerfor music, and of course,Nextcloud on Raspberry Pi, to which you can add several music-playing apps.

While each of these has its own advantages, Navidrome has a unique focus on music alone, and comes with a number of features that make it stand out above the rest—notably, the developers claim it will run without problems even on very low-end hardware such as the Raspberry Pi Zero.

pull navidrome with docker-compose

How to Install Navidrome on Your Raspberry Pi

Navidrome is fairly simple to install on your Raspberry Pi, but before you begin you should follow the steps toprepare your Raspberry Pi as a web server. While you don’t need to install MariaDB or PHP for this project, you may find they come in useful for other great Raspberry Pi self-hosting projects. You should alsomanually install the latest Docker Compose release.

Now connect to your Raspberry Pi using Secure Shell (SSH), and create new directories for Navidrome and its data:

create navidrome admin user

You will also need a location to store your albums. This can be anywhere you like, but we recommend creating a new directory within your home directory:

On your local machine, open a new terminal, and use Secure Copy to copy your music to your Raspberry Pi:

navidrome web interface

On your Pi SSH connection, move into the Navidrome directory, and use the nano text editor to create and edit a new file:

Add the following lines to it:

Save and exit nano withCtrl + OthenCtrl +X.

Bring up Docker Compose in detached mode with:

docker-compose up -d

Docker Compose will download images and set up Navidrome containers. When the process finishes, open a web browser on your local machine; in the URL bar, enteryour-pi-local-ip-address:4533.

stream radio on navidrome

Create an admin user account by entering a username and password, then log in. You should instantly see all your music albums.

Make Your Navidrome Instance Accessible on the Web

Visit your domain registrar and locate theAdvanced DNSsection for your domain. Create a newArecord, setting theHostto ‘@’ and the value field to your domestic IP address. Set the Time to Lease (TTL) value as low as possible.

Back on the Pi, you’ll need to create a new Apache config file:

In the new file, paste the following lines:

You should replacemuo.lolwith your own domain name.

Save and exit nano withCtrl + OthenCtrl +X, then use Certbot to obtain and apply TLS certificates and keys for your domain:

Select your domain name from a list and pressEnter.

you’re able to now visit your Navidrome instance in a browser using your domain name. All connections will be upgraded to HTTPS.

The Navidrome Web Interface

The Navidrome web interface is fairly intuitive to use, and you’ll find the main menu running down the left side of the screen. If this is taking up too much space, you can collapse it using the hamburger icon immediately above.

Using this menu, you can browse albums by artist, song title, or album. You can also browse your favorites, most played, recently played, and recently added.

If you don’t know what you want to listen to, you can generate a random playlist. Unfortunately, the web interface doesn’t have an option to create an instant mix based on a particular track; however, this will be added in a future release and the feature is supported in several compatible clients.

From the album view, you can play albums, favorite and rate individual tracks, and add music to playlists or to a queue to play later.

On the right-hand side of the blue bar, you’ll see three unlabeled icons for various tasks. The first will refresh the view, while the second will give you various statistics related to your Navidrome instance including uptime and number of directories. You’ll also be able to trigger a quick or full rescan of your music library—this can take a long time if you have terabytes of music.

The final icon relates to administration, and contains sub-menus for personalizing your own user experience. You will also be able to add and delete users, and view a list of recently used client devices and software.

Add Radio Stations to Navidrome

Of course, listening to your own curated collection of musical masterpieces can pale after a time, and radio is an excellent way of discovering new music within or away from your preferred genre.

While it’s easy tolisten to internet radio in your browser, and you can evenbuild a touchscreen Raspberry Pi internet radio, you can also add radio stations to Navidrome’s web interface—so your radio stations and music collection are all in one place.

To add a radio station to Navidrome, clickRadios, and add your first station by giving the station a name. Enter the stream URL, and optionally the station homepage URL. ClickSavewhen you’re happy. You can add as many radio stations as you like, and access them all through theRadiostab.

Mobile Apps for Navidrome

While the web interface for your Navidrome instance is a progressive web app and looks good even on smaller screen, Navidrome is compatible with any Subsonic client. There are dozens of possible apps you can use—just search for “subsonic” on your favorite app store.

With a Navidrome server on your Raspberry Pi you’re able to stream your own music wherever you are in the world. But your Raspberry Pi is capable of much more than this. If you have a large movie collection and don’t want to rely on Netflix, Disney, or HBO, consider installing Jellyfin.