Guide How To Build Your Own Music Streaming Service With Navidrome, Tailscale & Symfonium

Unison

Well-known member
VIP
HOW TO BUILD YOUR OWN MUSIC STREAMING SERVICE WITH NAVIDROME, TAILSCALE & SYMFONIUM

If you've got a large music collection stored on a Linux PC, you can turn it into your own private streaming service and listen to it anywhere on your phone.

This setup uses:

Navidrome - hosts and organises your music library
Docker - runs Navidrome cleanly alongside your existing software
Tailscale - provides secure remote access without opening router ports
Symfonium - Android music player that connects to Navidrome

I used Manjaro Linux for the server and a Samsung A17 Android phone, but the same idea will work with many other Linux/Android setups.


1. INSTALL DOCKER ON MANJARO

Open a terminal and run:

sudo pacman -S docker

Enable and start Docker:

sudo systemctl enable --now docker

Check it:

systemctl status docker --no-pager

You want to see:

Active: active (running)

Add your normal user to the Docker group:

sudo usermod -aG docker $USER

Log out and back in, or run:

newgrp docker

Test Docker:

docker run --rm hello-world

If you get the "Hello from Docker!" message, you're ready.


2. FIND YOUR MUSIC FOLDER

Before installing Navidrome, find where your music is mounted:

lsblk -f

In my case the music collection was:

/mnt/Flac Music

Check that you can see the files:

ls -lah "/mnt/Flac Music" | head

Substitute the location of your own music collection throughout the tutorial.


3. CREATE NAVIDROME'S DATA FOLDER

mkdir -p ~/.navidrome/data

Check it:

ls -ld ~/.navidrome/data


4. INSTALL AND RUN NAVIDROME

Create the Navidrome Docker container:

docker run -d \
--name navidrome \
--restart=unless-stopped \
--user $(id -u):$(id -g) \
-v "/mnt/Flac Music:/music:ro" \
-v "$HOME/.navidrome/data:/data" \
-p 4533:4533 \
deluan/navidrome:latest

The music directory is mounted read-only using :ro, so Navidrome can read the music but cannot alter the original files.

Check the container:

docker ps

You should see something similar to:

deluan/navidrome:latest
0.0.0.0:4533->4533/tcp

Open a browser on the Linux PC and go to:


Create your Navidrome administrator username and password.

Navidrome should start scanning your music collection and your albums should begin appearing.


5. INSTALL TAILSCALE

Install Tailscale:

sudo pacman -S tailscale

Enable it:

sudo systemctl enable --now tailscaled

Then run:

sudo tailscale up

Tailscale will give you a web address.

Open it and sign into your Tailscale account.

Once connected, find the PC's Tailscale IP:

tailscale ip -4

Mine was:

100.107.184.59

Yours will be different.


6. INSTALL TAILSCALE ON THE ANDROID PHONE

Install the Tailscale Android app and sign in using the same Tailscale account.

Allow Android to create the VPN connection when prompted.

You should then see both devices connected in Tailscale.

Test Navidrome from the phone's browser using:


For example:


If the Navidrome login page appears, remote access is working.


7. TEST IT OVER MOBILE DATA

Turn Wi-Fi OFF on the phone so you're using 4G/5G.

Leave Tailscale ON.

Open the Navidrome address again:


If it works, you're genuinely accessing your home PC over the internet rather than your local Wi-Fi.


8. INSTALL SYMFONIUM

For a much nicer Android music interface, install Symfonium.

During setup select:

On a network server or cloud provider

Then choose:

(Open) Subsonic

Navidrome provides a Subsonic/OpenSubsonic-compatible API, which is why the two work together.

Enter:

Server URL:

Login:
YOUR NAVIDROME USERNAME

Password:
YOUR NAVIDROME PASSWORD

Press ADD.

Symfonium should connect and start synchronising:

Artists
Albums
Tracks
Playlists
Artwork
Metadata

A large collection can take a while on the first sync.


9. FINAL TEST

Turn the phone's Wi-Fi OFF.

Make sure:

Mobile data: ON
Tailscale: ON

Open Symfonium and play an album.

If the music starts playing, congratulations - you've just built your own personal music streaming service.


THE CONNECTION LOOKS LIKE THIS:

Music collection
|
v
Navidrome
|
v
Docker
|
v
Tailscale
|
v
Internet
|
v
Tailscale
|
v
Symfonium
|
v
Android phone


WHY I LIKE THIS SETUP

The biggest advantage for me is that there is no need to expose Navidrome directly to the internet or start opening ports on the router.

Tailscale handles the private connection between the phone and home PC.

It also happily runs alongside my existing Lyrion Music Server and MiniDLNA setup, so I haven't had to replace anything.

Once configured, I can now browse and stream my own music collection from the phone anywhere I have an internet connection.


ONE THING TO REMEMBER

When away from home:

Tailscale needs to be connected for Symfonium to reach Navidrome.

And obviously the home PC running Navidrome needs to be switched on.


RESULT

One very large personal music collection available on my phone over 5G - and it actually works! 😁👍
 
Back
Top