Quit subcriptions and stream your own digital music with Navidrome!
Why?
Because subscriptions/services are costly, you end up wasting money and are left with nothing once the service is gone. Plus you probably don't care for the bloated, proprietary apps they require.
My personal use case, which this guide covers, is to stream music on my android phone when I'm away from home.
The setup
Considering you already have a homelab of some sort, the setup is really easy, you only need:
- the navidrome server to host
- a navidrome client from: https://www.navidrome.org/docs/overview/#apps
- a domain name
Server
I personally chose to run Navidrome with Docker using docker-compose.
Docker-compose
docker-compose.yaml
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
user: 1000:1000 # should be owner of volumes
ports:
- "4533:4533"
restart: unless-stopped
environment:
# Optional: put your config options customization here. Examples:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: "/navidrome"
volumes:
- "/path/to/data:/data"
- "/path/to/your/music/folder:/music:ro"
Then start the container:
docker-compose up -d
Nginx
With my personal setup I then port-forward navidrome with Nginx:
location ^~ /navidrome {
# replace local-address with your navidrome server's IP
proxy_pass http://localhost:4533/navidrome;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_buffering off;
}
Don't forget to restart Nginx after adding the new configuration:
systemctl restart nginx
You actually need to connect to the Webgui then to create an admin account for navidrome. This will be useful for connecting to the server from your client. Connect to https://yourdomain/navidrome and setup your account.
Client
DSub
My client of choice on Android is Dsub, it's abailable on the playstore or F-droid: https://f-droid.org/packages/github.daneren2005.dsub/
Open you app, go to settings > servers. Add your server https://yourdomain/navidrome and enter your admin credentials. Finally rescan your music from the app, you should then see your music library popup. You're ready to go!
edit: I really like the Ultrasonic app for android aswell.