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!

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!