What's the perfect self hosted music stack? 🎵 Let's talk about this controversial topic and get you setup managing your own music collection!
Providers such as Spotify and Deezer have been around for years providing you with millions of songs to stream anywhere on the go. But being as stubborn as we can be, self hosters and data hoarders alike, enjoy collecting and managing their own music collections ad free.
The Self Hosted Applications
For this stack, we will be using the following self hosted applications:
Lidarr - Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new albums from your favorite artists and will interface with clients and indexers to grab, sort, and rename them. It can also be configured to automatically upgrade the quality of existing files in the library when a better quality format becomes available. More specifically, we will be using this fork of Lidarr that is modified to work seamlessly with Deemix.
Deemix - Deemix is a python library that lets you download millions of songs, soundtracks, albums in high-quality mp3 and FLAC. Deemix will be used as the indexer for Lidarr.
Navidrome - Navidrome allows you to enjoy your music collection from anywhere, by making it available through a modern Web UI and through a wide range of third-party compatible mobile apps, for both iOS and Android devices. We will be using Navidrome to serve our music collection.
The Setup Process
I will quickly walk you through the process to get all of this running. It's pretty painless for the most part!
Setup and install Lidarr and Deemix
First we need a way to manage our music collection. We will use a special fork of Lidarr that has Deemix integrated into the stack to be used as our indexer. (AKA downloader).
Use this Docker Compose stack to install both Lidarr and Deemix.
version: "3" services: lidarr: image: youegraillot/lidarr-on-steroids restart: unless-stopped ports: - "8686:8686" # Lidarr web UI - "6595:6595" # Deemix web UI volumes: - <path>:/config - <path>:/config_deemix - <path>:/downloads - <path>:/music
When the installation is complete, you will need to CHMOD both the download and music volumes to 777 so the container can read and write to them. Lidarr needs to be able to move files and Deemix needs to be able to send files to the volumes as well. Once you do this, restart the container so Lidarr can automatically find your Music directory and add it for you.
Lidarr will be your central control for managing music. Once you log into Deemix, you won't have to access it anymore unless you want to clear the download logs. You will do all the downloading and management through Lidarr which has control of Deemix. But first, we have to get a Deezer account.
I recommend enabling "Rename Tracks" in the Lidarr Media Management section.
Otherwise all of your music will be dumped into the artist name folder and not organized by album folder.
Create a Deezer account
In order to download music using Deemix, you will need a Deezer account. I highly recommend you also purchase a premium account. You get a month free and that free month also gets you FLAC quality music. It's $10/mo or $4.99/mo for students and trust me, it's well worth it. If you decide not to purchase premium, you are living life on the edge. 🏴☠️ Deemix will still work but you will only be allowed to get 128 kbps quality. Support music artists and have peace of mind!
Start downloading muisc
Now you can begin using Lidarr to add artists and download albums.
If you purchased a premium Deezer account, no further action is required to get the best quality. By default, Deemix will be set to FLAC but I changed it to 320 which you can see displayed here in Lidarr when you click on an album. You can change the quality in the Deemix settings under "Preferred Bitrate".
Install Navidrome to serve your music
Navidrome can be installed with a simple Docker Compose.
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: "" volumes: - "/path/to/data:/data" - "/path/to/your/music/folder:/music:ro" ```
Be sure to map the music volume to the same volume you used for the Lidarr stack so it can see and index your music.
When the Navidrome install is complete, you will have to create an account which will be the admin account. Once this is done, you can log in and see your music is now being indexed.
Navidrome paired with the SubStreamer mobile app is a great combination for listening to your collection on the go. SubStreamer is available for both iOS and Android devices.
Final Notes and Thoughts
So what do you think? Is this the perfect music server for you? It works very well for me so far and I am very happy with the results. Paying for Deezer was a no brainer for me too because we listen to a lot of music in our home. Having FLAC quality music is a plus for audiophiles who really love their music.
If you find the Lidarr fork useful, be sure to give it a star on Github. You should also give Navidrome a star too!