Musik streamen mit Navidrome
Mo, 29. März 2021, Julian
Heutzutage wird Musik hauptsächlich über kommerzielle Streamingdienste wie Spotify oder Apple Music konsumiert. CDs und Vinyl verlieren immer weiter Marktanteile. Dieser Trend ist auch bei mir persönlich nicht anders. Ich streame durchschnittlich pro Tag mindestens eine Stunde Musik, wahrscheinlich sogar mehr. Das Vinyl steht demgegenüber ungehört im Regal. Aber auch meine eigene digitale Musiksammlung lagert auf irgendeiner alten Festplatte, welche bis zum Erstellen dieses Beitrags nicht einmal an meinen PC angeschlossen war.
Allerdings hatte ich in letzter Zeit öfter den Wunsch meine eigene Musikbibliothek mal wieder durchzusehen und vor allem durchzuhören. Also warum nicht Vorteile des Streamings (Mobilität und geräteübergreifende Verfügbarkeit) mit der eigenen Musiksammlung kombinieren? Die Idee des selbst gehosteten Musikstreamingdienstes war geboren.
Und um das Ganze nicht nur für mich als kleines Projekt im Stillen durchzuführen, habe ich mich entschieden meine Erfahrungen in einem Blogbeitrag niederzuschreiben. Nach ein wenig Recherchearbeit bin ich auf Navidrome gestossen. Navidrome ist ein webbasierter Server für Musikstreaming, ist Open Source und freie Software. Um Musik vom Navidrome Server zu streamen, kann man einfach die Weboberfläche im Browser öffnen. Es gibt aber auch dedizierte Apps und Clients, mit welchen man die Musik abrufen kann.
Zum Zeitpunkt der Installation hatte ich bereits einen Raspberry Pi in meinem Netzwerk, auf welchem mehrere Applikationen und Dienste als Docker Container laufen. Zum Thema Docker und welche Applikationen man sonst so auf einem Raspberry Pi hosten kann, werde ich in zukünftigen Blogbeiträgen noch berichten. Jedenfalls habe ich mich aufgrund dieser Basis dazu entschieden Navidrome ebenfalls als Docker Container zu hosten. Docker ist allerdings keine Voraussetzung. Ihr könnt euch Navidrome einfach hier herunterladen und auf Windows, Linux oder macOS installieren.
Um die Installation und Konfiguration simpel zu gestalten, verwende ich Docker Compose. Mit Docker Compose lassen sich Container mithilfe einer YAML file erstellen. In der YAML file werden innerhalb einer festen Struktur (markup) Variablen festgelegt. Das sind zum Beispiel Volumes, mit welchem die Docker Container auf Dateien auf dem Hostsystem zugreifen können. Im Falle von Navidrome sind das die Musikbibliothek und Konfigurationsdaten.
In meinem Fall sieht die YAML file dann etwa so aus:
Das Ganze habe ich mit Portainer umgesetzt. Portainer ist eine grafische Benutzeroberfläche, mit welcher man Dockercontainer hosten kann und wo man eben auch die Compose YAML files benutzen kann, um einen Container zu erstellen. In Portainer heisst diese Funktion "stack".
Nachdem der Container gestartet war, konnte ich diesen im Browser via $hostip:4533 erreichen.
Dort sieht man zunächst diese Seite, in welcher man aufgefordert wird einen Admin-Benutzer anzulegen.
Sobald der User angelegt ist und Navidrome eure Musiksammlung gescannt hat, was einige Minuten dauern kann, könnt ihr es direkt benutzen und eure Lieblingsmusik hören. Die Benutzeroberfläche ist sehr übersichtlich gestaltet und nicht mit vielen Funktionen beladen. Ein nettes Feature ist, dass man seine eigenen Playlists erstellen kann, was man ja auch von Spotify und Co. kennt.
Neben der eigenen Weboberfläche kann man auf Navidrome mit verschiedenen Clients zugreifen, welche die Subsonic API verwenden. Eine Auflistung der Clients gibt es hier. Insbesondere für Android gibt es mehrere Clients zur Auswahl. Wenn ihr schon Erfahrung mit einem der Clients gemacht habt, könnt ihr diese gerne in den Kommentaren teilen. Bisher habe ich es selber nur über den Browser benutzt und kann daher zu den alternativen Apps keine Einschätzung geben.
Wenn ihr euch für die technischen Details und den Quellcode von Navidrome interessiert, könnt ihr das Projekt auf GitHub besuchen.