Summary: Wenn eine eigene Musiksammlung zur Verfügung steht und man mit den Musikstreamingdiensten eh nur diese Musik hört, dann lohnt ein eigener Musikstreamingdienst, um die Abokosten und das Tracking durch diese Dienste zu sparen. In meinem Falle reichte dazu ein sich langweilender Raspbery Pi und die Fritz!Box als Hardware aus. Außerdem macht das kleine Projekt auch Spaß :-)

Hier ist ein Foto eines Teils meines CD-Regals zu sehen

Die eigene Musiksammlung streamen

Dieser Artikel ist eher für die älteren unter den LeserInnen gedacht, oder zumindest für die Personen, die noch eine Schallplatten-, CD- oder MP3-Sammlung ihr eigen nennen.

Um mobil Musik zu hören, habe ich einige Zeit lang einen Familienaccount meines Sohnes (gegen Beteiligung an den Kosten versteht sich) mitbenutzt. Mit diesem und anderen Musikstreamingdiensten ist es sehr einfach Playlisten zu verwalten und bei Bedarf mal eben schnell Musik zu konsumieren oder sich beim Hören ähnliche Musikstücke vorschlagen zu lassen, um eine Zeit lang ähnliche Musik passend zur eigenen Stimmung zu hören.

Aktuell nutze ich (noch) einen sechsmonatigen Test-Account bei Applemusic.

Meist höre ich über diese Dienste aber genau die Musik, die ich selber in meinem Plattenschrank oder der CD-Sammlung stehen habe. Wenn mir aktuelle Musik gefällt (Danger Dan - …Kunstfreiheit …) oder ein neues Album von z. B. Dream Theater erscheint, erstehe ich das Album als CD, weil ich möchte, dass die Künstler Geld erhalten und nicht nur das bisschen, das ihnen die Streamingdienste zur Verfügung stellen. So habe ich die Musik physikalisch bei mir zu Hause im Regal und zahle zeitgleich einen Abo-Preis dafür.

Auslöser durch Podcast

In einem meiner Lieblingspodcasts (Podcasts natürlich immer über RSS konsumieren und nie per Spotify!) Binärgewitter wurde nun in Folge 292 u. a. Navidrome als selbstgehosteter Musikstreamingdienst besprochen.

Ein eigener Streamingdenst, den meine Frau und ich überall nutzen können, unsere Playlisten mit Musikstücken aus der eigenen Musiksammlung erstellen können und der dazu dann noch kostenfrei ist. Wow! Das will ich testen.

Hardware (Raspi und Router) sind vorhanden

Mein RaspberryPi (Raspi) der vierten Generation langweilt sich aktuell als reiner [pihole[(https://www.raspberrypi.com/news/pi-hole-raspberry-pi/)] (Werbe-/Trackerblocker). Der kann locker nebenbei Musikstreaming im lokalen Netz und über das Internet anbieten.

In wirklich wenigen und schnellen Schritten ist der Raspi und die FRITZ!Box so eingerichtet, dass meine Frau und ich per iPhone App oder Browser unsere Musik auch mobil genießen können.

Zunächst einmal zeige ich ein paar Screenshots, was im Browser und mit den Apps (Beispiel Substreamer für iOS) in relativ kurzer Zeit möglich ist.

Danach liefere ich dann eine kleine Anleitung dazu bzw. verweise auch auf die Originalseiten zur Installation von Navidrome hin.

Musik im Browser genießen

Nach der Installation von Navidrome habe ich einige meiner MP3-Files in das Musiksammlungsverzeichnis kopiert, um die Funktionalität zu prüfen.

Hier ist ein Screenshot von Navidrome im Browser zu sehen

Über Filter kann z. B. das Genre, das man aktuell hören möchte, gefiltert werden oder man sucht einen Künstler und sieht sich die Alben und die Künstler-Biographie (aus LastFM) zu ihm an:

Hier ist ein Screenshot von Navidrome im Browser zu sehen

Wenn ein Album mehrere CDs enthält, so wird dies im Browser (und auch in der App) korrekt dargestellt:

Hier ist ein Screenshot von Navidrome im Browser zu sehen

Viel komfortabler - auch mit Vorschlägen wie “ähnlicher Künstler” - geht das mit einer Musikstreaming App.

Musik per App genießen (im eigenen Netz und im mobilen Netz)

Da wir innerhalb der Familie seit kurzem iPhones nutzen, ist eine iPhone App hilfreich.

In dem oben angesprochenen Podcast wurden drei Musikstreamingapps dazu vorgeschlagen.

Substreamer gibt es für iOS und Android und hat mir persönlich als mobile App gut gefallen und wird von uns nun seit dem Wochenende genutzt.

Zur Einrichtung reicht in den Appsettings bzw. direkt beim ersten Start der App die Eingabe von URL, Port, Anmeldename und Passwort, um direkt die eigene Musik mobil zu genießen.

Hier ist ein Screenshot von Substreamer zu sehen

Substreamer zeigt die Bio zu den Künstlern (aus LastFM) sowie eine Liste der auf dem Server verfügbaren Alben und der auf dem Server verfügbaren ähnlichen Künstler, sowie deren Hits, die auf auf dem Server verfügbar sind.

Hier ist ein Screenshot von Substreamer zu sehen

Auch hier wird die Biographie der KünstlerInnen angezeigt:

Hier ist ein Screenshot von Substreamer zu sehen

Ebenso werden ähnliche Künstler, die auf dem Server installiert sind angezeigt.

Hier fehlen noch große Teile meiner Musiksammlung, daher wird hier noch nicht sehr viel angezeigt.

Hier ist ein Screenshot von Substreamer zu sehen

Playlisten

Wenn man mal keine ganzen (Konzept-) Alben hören möchte oder Stücke für eine Feier oder besondere Stimmungen zusammenstellen möchte, dann sind dazu Playlisten geeignet.

Im Browser geht dies ganz einfach über den Menüpunkt Playlisten und dann über Erstellen:

Hier ist ein Screenshot von Navidrome im Browser zu sehen

In der App geht das über das Kontextmenü mit den drei Punkten (…) im Songabspielfenster:

Hier ist ein Screenshot von Substreamer zu sehen

Danach dann einfach Start New Playlist oder Add to Playlist wählen:

Hier ist ein Screenshot von Substreamer zu sehen

Über den Menüpunkt Playlists aus dem Burgermenu gelangt man in die Playlistsübersicht:

Hier ist ein Screenshot von Substreamer zu sehen

und kann dort eine auswählen und abspielen lassen:

Hier ist ein Screenshot von Substreamer zu sehen

Musiksammlung digitalisieren

Da ich noch nicht alle meine CD’s als Musiksammlung abgelegt habe, muss ich noch einige umwandeln.

Dazu muss ich die Musik-CDs rippen, taggen und mit Albencovern versehen

Ich arbeite privat mit einem Ubuntu-LTS-System auf einem Tuxedo-Infinity-Notebook.

Daher habe ich zum Rippen der Musikcds die Software fre:ac im Einsatz, die Titel, Künstler, Albumname, Genre, Veröffentlichungsjahr etc. den Datein direkt beim digitalisieren zu mp3-Files (oder FLAC-Files) hinzufügt.

Hier ist ein Screenshot von fre:ac zu sehen

Um den Dateien auch die passenden Albumcover zuzufügen und Doppel-/Dreifach-CDs zu einem Album mit n CDs zusammenzuführen, nutze ich die Software MusikBrainz Picard:

Hier ist ein Screenshot von MusikBrainz Picard zu sehen

Navidrome installieren

Hier nun der Weg zum eigenen Musiktreamingglück.

Da mein Raspi einfach da ist und sich größtenteils langweilt, beschreibe ich hier nur, wie ich Navidrome auf diesem Gerät installiert und eingerichtet habe.

Der Navidrome-Part ist einfach mit Hilfe der Seite Installationsseite einzurichten. Von dort habe ich die hier aufgeführten Befehle.

Für ARM-basierte Systeme, wie es der Raspi nun einmal ist, hilft die Ausgabe des Befehls

cat /proc/cpuinfo

auf der Raspi-Console, um festzustellen, welche ARM-Version von Navidrome die zu installierende ist.

Bei meinem Raspi ist es die Version V7.

Es reichen zur Vorbereitung die Befehle

sudo apt update
sudo apt upgrade
sudo apt install vim ffmpeg

um den Raspi zu aktualisieren und “musikfähig” zu machen.

Wir benötigen zwei Verzeichnisse und Berechtigungen für Navidrome auf dem Raspi, die wir mit diesen beiden Befehhlen (User und Group anpassen) erzeugen:

sudo install -d -o <user> -g <group> /opt/navidrome
sudo install -d -o <user> -g <group> /var/lib/navidrome

Dann muss das richtige Installationspaket (für meinen Raspi die ARM V7 - Version) ausgewählt und auf den Raspi geladen, entpackt und dem User sowie der Gruppe zugeordnet werden:

wget https://github.com/navidrome/navidrome/releases/download/v0.XX.0/navidrome_0.XX.0_Linux_x86_64.tar.gz -O Navidrome.tar.gz
sudo tar -xvzf Navidrome.tar.gz -C /opt/navidrome/
sudo chown -R <user>:<group> /opt/navidrome

Dann benötigt man lediglich noch zwei Textfiles, um eine Musiksammlungsablage zu definieren und einen Dienst in dem Linux-System einzurichten.

Ein Textfile mit dem Namen navidrome.toml muß im Verzeichnis /var/lib/navidrome mit dem Inhalt

MusicFolder = "<library_path>"

angelegt werden. Für Library-Path dann einfach das passende Verzeichnis auf dem Raspi oder einem von dort erreichbaren Speicherort eintragen.

Nun muss nur noch ein Service angelegt werden.

Am einfachsten benennt man diesen Service dann auch passend mit navidrome.service und legt den Dienst als Datei mit diesem Namen in /etc/systemd/system/ ab.

Der Inhalt von navidrome.service sollte folgender sein:

[Unit]
Description=Navidrome Music Server and Streamer compatible with Subsonic/Airsonic
After=remote-fs.target network.target
AssertPathExists=/var/lib/navidrome

[Install]
WantedBy=multi-user.target

[Service]
User=<user>
Group=<group>
Type=simple
ExecStart=/opt/navidrome/navidrome --configfile "/var/lib/navidrome/navidrome.toml"
WorkingDirectory=/var/lib/navidrome
TimeoutStopSec=20
KillMode=process
Restart=on-failure

# See https://www.freedesktop.org/software/systemd/man/systemd.exec.html
DevicePolicy=closed
NoNewPrivileges=yes
PrivateTmp=yes
PrivateUsers=yes
ProtectControlGroups=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
RestrictNamespaces=yes
RestrictRealtime=yes
SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap
ReadWritePaths=/var/lib/navidrome

# You can uncomment the following line if you're not using the jukebox This
# will prevent navidrome from accessing any real (physical) devices
#PrivateDevices=yes

# You can change the following line to `strict` instead of `full` if you don't
# want navidrome to be able to write anything on your filesystem outside of
# /var/lib/navidrome.
ProtectSystem=full

# You can uncomment the following line if you don't have any media in /home/*.
# This will prevent navidrome from ever reading/writing anything there.
#ProtectHome=true

# You can customize some Navidrome config options by setting environment variables here. Ex:
#Environment=ND_BASEURL="/navidrome"

Der Dienst kann dann gestartet und lokal mittels http://localhost:4533 überprüft werden:

sudo systemctl daemon-reload
sudo systemctl start navidrome.service
sudo systemctl status navidrome.service

Wenn das alles geklappt hat, dann kann der Dienst für den Systemstart eingetragen werden, damit bei jedem Raspi-Start auch der Navidrome-Dienst gestartet wird:

sudo systemctl enable navidrome.service

Das war es dann eigentlich schon, wenn man Musik nur im internen Netz (LAN/W-LAN) nutzen möchte.

Nun kann über das Notebook oder das Smartphone der URL eingeben werden (Port 4533) und der erste sich anmeldende User wird automatisch zum Administrator von Navidrome.

Als zweites habe ich dann direkt meine Frau für den Dienst eingerichtet:

Hier ist ein Screenshot von Navidrome im Browser zu sehen

Streamen auch wenn man unterwegs ist

Für den Zugriff von unterwegs muss dann lediglich ein dynamischer DNS-Dienst eingerichtet werden, um trotz wechselnder IP-Adresse (Intenetanbieter kappen alle 24 h die Verbindung und vergeben dann neue IP-Adressen) über denselben URL aus dem Internet erreichbar zu sein.

Da ich eine FRITZ!Box mein eigen nenne, ist dies sehr einfach mit Bordmitteln und dem My!Fritz-Dienst einrichtbar und zwar über die Menüpunkte Internet/Freigaben/Fritz!-Box-Dienste und Internet/Freigaben/Portfreigaben. Zuvor muß man bei AVM einen MyFritz!-Account angelegt haben, um diesen DynDNS-Dienst zu nutzen.

Es gibt eine kleine Übersicht von DynDNS-Diensten auf der Seite von ionos.

Mein Fazit

Da ich den Raspi und die FRITZ!Box sowie meine CDs schon besitze, habe ich keinerlei Kosten für dieses Projekt.

Einen Raspi erhält man für ca. 60-90 EUR. Einen Router sollte in nahezu jedem Haushalt vorhanden sein und freie DynDNS-Dienste kann man im Internet recherchieren, wenn der Routerhersteller keinen solchen Dienst anbietet.

Innerhalb eines Jahres hat man so die Kosten ggü. eines Streamingdienstes ungefähr herausgeholt, wenn man sowieso nur den “eigenen” Krams hört. Da bei mir alles bereits aus anderen Projekten vorhanden gewesen ist, erfreue ich mich einfach nur an dem eigenen Musikstreamingdienst.

BTW: Über LastFM kann man zwischendurch in die Werke weiterer ähnlicher KünstlerInnen reinhören und sich zwischendurch mal eine CD von den gesparten monatlichen Abokosten kaufen. Das freut auch die Künstler mehr.

Oder man spart das Geld, um die Künstler live zu erleben.