MPD einfach über den Browser steuern

MyMPD auf dem Raspberry Pi installieren (MPD im Browser)

Zum Musikhören nutze ich MPD auf meinem Raspberry Pi im Heimnetzwerk. Zur Steuerung und Organisation der eigenen digitalen Musiksammlung gibt es diverse Apps bzw. Programme. Es geht jedoch auch sehr gut im Browser – mit MyMPD. So hatte ich diese Web-Oberfläche installiert.

Früher nutzte ich Kodi zum Videoschauen und Musikhören bzw. um meine MP3s zu organisieren. Da ich Videos nun über einen separaten SmartTV schaue, konnte mein Raspberry Pi entschlackt werden: Ich nutze nun einfach den schlichten MPD zum Organisieren bzw. zum Hören meiner digitalen Musiksammlung.

Raspberry Pi mit IR-Diode an Wand geschraubt, Kabel und Kabelkanäle daneben montiert

Ich liebe meinen kleinen Raspberry Pi. Natürlich nutze ich diesen noch für viele weitere Dinge als nur zum Musikhören x.

x Er ist direkt an meine 70er-Jahre-Stereoanlage angeschlossen. Eine Ton-Wiedergabe via Bluetooth ist (parallel) natürlich auch möglich.

Allein: MPD bietet keine grafische Benutzeroberfläche. Alles würde (via dem kleinen Zusatzprogramm ›MPC‹) über die Konsole laufen bzw. über simple Steuerbefehle mittels einer IR-Fernbedienung am Raspberry Pi. Für das Organisieren und Durchsuchen der eigenen Musiksammlung benötigt man natürlich eine grafische Oberfläche. Am einfachsten gelingt dies mit einer entsprechenden Android-App oder via einer Windows App wie ›MPDCtrl‹.

Das ist MyMPD

Mit myMPD von Jürgen Mang steht jedoch auch eine sehr attraktive grafische Anwendung bereit, welche direkt im Browser läuft. Man muss sich auf den Klienten also keine spezielle Software installieren, wenn auf diesen eh bereits ein Browser vorhanden ist – wovon auszugehen ist:

Screenshot von MyMPD (Web-Client für mpd) mit den Bildern einiger Alben

Das schaut richtig gut aus und auch technisch funktioniert myMPD richtig gut. Man kann beispielsweise auch grafisch die einzelnen Ausgabe-Kanäle schalten (Bluetooth, HifiBerry, Webausgabe, …).

Bildschirmfoto: MymPD Dashboard im Browser

MyMPD bietet auch eine editierbare Startseite (Dashboard) mit individuellen Verknüpfungen. Hier kann man dann Schnellzugriffe für die jeweiligen Datenquellen anlegen. Jeden dieser Eintrag kann man farblich stylen bzw. je ein eigenes Icon wählen.

MyMPD auf dem Raspberry Pi installieren

Offenbar gibt es myMPD nicht via Repository. Anfangs kompilierte ich das Programm selber (s. u.). Aber der elegante und deutlich einfachere Weg ist vermutlich über Docker Compose – ja weil alle Abhängigkeiten bzw. zusätzliche Software hier bereits vorhanden sind bzw. on the fly und „gekapselt“ mitgeliefert werden. Man benötigt hierzu nur eine kleine Textdatei:

docker-compose.yml
services:
  mympd:
    image: ghcr.io/jcorporation/mympd/mympd:latest
    container_name: mympd
    restart: unless-stopped
    user: "1000:1000"
    network_mode: host
    volumes:
      - /run/mpd:/run/mpd
      - /home/pi/USB-Stick/00_Musik/00_mpd/mympd-data/workdir:/var/lib/mympd
      - /home/pi/USB-Stick/00_Musik/00_mpd/mympd-data/cachedir:/var/cache/mympd
      - /home/pi/USB-Stick/00_Musik:/home/pi/USB-Stick/00_Musik:ro
      - /home/pi/USB-Stick/00_Musik/00_mpd/playlists:/home/pi/USB-Stick/00_Musik/00_mpd/playlists
    environment:
      - TZ=Europe/Berlin
      - MYMPD_SSL=false # kein SSL

Natürlich muss man die Pfade je an die eigene Verzeichnisstruktur anpassen bzw. diese Ordner erstellen. Nach einem docker compose up -d startet der Container und das war’s auch schon. Auch nach einem Neustart ist MyMPD via Browser erreichbar – i. d. R. unter http://IP.des.Gerätes:8080/

Hinweis: MyMPD startet hier unter dem User „mympd“. Man müsste evtl. dafür sorgen, dass die Dateien, auf die MyMpd zugreifen soll, für diesen Nutzer auch lesbar / beschreibbar sind (Stichwort: Nutzerrechte).


Ohne Docker kann man das Programm auch selber kompilieren. Dies ist aufwendiger. In dieser Sache bin ich tatsächlich so ein richtiger Anfänger. Aber ich hatte es dann tatsächlich geschafft. In der offiziellen Anleitung hatte ich mich jedenfalls nicht zurecht gefunden .

Ich gehe jetzt davon aus, dass Sie bereits MPD installiert- und eingerichtet haben. Das ist ja nicht so schwer und gut dokumentiert. Ein sudo apt update sollte auch kürzlich vorgenommen worden sein.

Um die grafische Benutzeroberfläche für den Browser (myMPD) installieren- bzw. kompilieren zu können, benötigen wir nun weitere Pakete:

sudo apt install cmake build-essential git libglib2.0-dev libsqlite3-dev libcurl4-openssl-dev libid3tag0-dev libmad0-dev

sowie:

sudo apt install libmpdclient-dev libavcodec-dev libavformat-dev libavutil-dev

und dann noch:

sudo apt install liblua5.4-dev
sudo apt install lua5.4

(Lua benötigt man für erweiterte Funktionen von MyMPD (Skripting).)

Vielleicht sind einige davon bei Ihnen ja bereits schon vorhanden.

Nun ziehen wir uns erst einmal den gesamten Quellcode von myMPD ins Home-Verzeichnis:

git clone https://github.com/jcorporation/mympd.git

Daraufhin müsste dort ein neuer Ordner entstanden sein, in den wir wechseln:

cd mympd

Jetzt beginnen wir mit dem Aufbau des Programms (mehrere Schritte):

mkdir build && cd build
cmake ..
make
sudo make install

MyMPD sollte nun installiert sein. Es stellt einen einfachen grafischen Konfigurationseditor für die Konsole bereit. Den rufen wir gleich auf:

sudo mympd-config

Obacht: Hier nach ›back‹ auf ›Apply‹ gehen, sonst wird nichts gespeichert. Ggf. müsste diese Config hier nicht via „sudo“ aufgerufen werden. Bitte ausprobieren, welcher Aufruf bzw. welche Änderung das gewünschte Resultat bringt. Sicherlich hat dies etwas mit dem Service zu tun (s. u.) bzw. damit, unter welchem Nutzer myMPD starten wird.

Denn vermutlich muss hier erst einmal SSL deaktiviert werden. Ansonsten möchte MyMPD stets über eine verschlüsselte Verbindung im Browser aufgerufen werden. Auf meinem Raspberry Pi habe ich so etwas aber nicht eingerichtet.

Änderungen in diesem Konfigurationseditor übernimmt man anschließend wieder mit sudo systemctl restart mympd. Solle sich hier die SSL-Voraussetzung nicht deaktivieren lassen, kann man dies auch manuell tun via: echo "false" > /var/lib/mympd/config/ssl.

Als nächstes erstellen wir einen Service, damit der kleine MyMPD-Server bei jedem Neustart vom Raspberry Pi ebenfalls startet:

sudo nano /etc/systemd/system/mympd.service

Dort tragen wir ein:

[Unit]
Description=myMPD Service
After=network.target mpd.service

[Service]
ExecStart=/usr/local/bin/mympd
Restart=always
User=root
Group=root
Environment=HOME=/home/pi

[Install]
WantedBy=multi-user.target

… und speichern via STRG + S und verlassen den Nano-Editor wieder via STRG + X.

Hinweis 1: Wie man sieht, starte ich den MyMPD-Dienst als root. Dies ist natürlich etwas prekär. Aber myMPD will ständig auf var/tmp zugreifen und ich weiß nicht, wie ich dies ansonsten lösen kann. Ich belasse es erst einmal so.

Hinweis 2: Mein Nutzer heißt pi. Wenn dies bei Ihnen anders ist, muss diese Zeile natürlich entsprechend angepasst werden.

Jetzt initialisieren wir diesen Dienst nacheinander mittels folgender Schritte:

sudo systemctl daemon-reload
sudo systemctl enable mympd
sudo systemctl start mympd

Jetzt sollte MyMPD unter einer Adresse wie http://IP-des-Raspberry:8080 auf jedem Browser im Heimnetzwerk erreichbar sein – und z. B. via VPN auch aus der Ferne, aus dem Internet.

Den Installationsordner im Home-Verzeichnis kann man nun natürlich wieder löschen. Den benötigen wir nicht mehr.

Bonus 1: Das eigene Spotify

MyMPD stellt übrigens ein eigenes Spotify zur Verfügung – also die Möglichkeit, die Tonausgabe auch über den Browser zu ermöglichen. Wenn man in seinem Router einen VPN-Zugang einrichtet oder den MyMPD-Port vom Raspberry nach Außen hin freigibt, hat man praktisch mit jedem Browser jederzeit Zugang via „Stream“ auf seine lokale Musiksammlung daheim. Hierzu muss in der /etc/mpd.conf bei den Ausgängen ein neuer hinzu gefügt werden:

audio_output {
type "httpd"
name "HTTP Stream"
encoder "lame"
port "8005"
bitrate "128"
format "44100:16:2"
always_on "yes"
tags "yes"
}

Nach einem Neustart von mpd selbst (sudo systemctl restart mpd) sowie sicherheitshalber auch von mympd sowie einer Änderung in den MyMPD-Einstellungen (dazu gleich mehr) hat man nun unten rechts einen neuen Ausgang zur Verfügung:

Sreenshot MyMPD Stream Ausgang

Wer sich dafür interessiert: Ich habe auch einen Beitrag »Bluetooth-Lautsprecher mit dem Raspberry Pi verbinden« in die Welt gesetzt. Alle Ausgänge können sogar parallel laufen (allerdings je mit Buffer-Versatz).

Dieser Ausgang heißt hier ›HTTP Stream‹ und man sollte ihn mal aktivieren. Zuvor sollte man in den Browser-Einstellungen dafür sorgen, dass ein „Live-Ton“ überhaupt wiedergegeben werden kann. Nun müsste man noch im Webinterface von MyMPD in den Einstellungen ›Lokale Wiedergabe‹ aktivieren und den Port anpassen (wie zuvor in der etc/mpd.conf definiert → hier 8005). Ggf. mit den Einstellungen experimentieren (Automatische Wiedergabe?). Als nächstes müsste man – je nach Browser – unten rechts bei MyMPD noch auf dieses Symbol mit dem Dreieck und dem Rechteck klicken. Dort gibt es nämlich einen „Play-Knopf“. Den muss man anklicken, um den Stream zu starten. Nach einigen Sekunden (Buffer) sollte die aktuelle Wiedergabe auch über den Browser erfolgen. Ein Wechsel dauert immer etwas – bei mir leider so um die drei, vier Sekunden.

Den Stream kann man dann auch direkt im Browser aufrufen, z. B. via: http://192.168.178.2:8005/. Der Port ist der, den man in den Lokale-Wiedergabe-Einstellungen definiert hatte bzw. in der mpd.conf in den Ausgangseinstellungen für den HTTP-Stream. Die IP ist die des Raspberry Pi im Heimnetz. Im Browser müsste dann ein einfacher Player erscheinen.

Bonus 2: Die WebradioDB nutzen

Der Entwickler von MyMPD (Jürgen Mang) betreibt parallel die WebradioDB: Eine kuratierte Liste an diversen Internetradios. Jedem Eintrag ist u. a. (häufig) eine Beschreibung zum dem Internetradio hinzugefügt, ein Sender-Icon, das Herkunftsland und natürlich die genaue Stream-URL. MyMPD kann standardmäßig auf diese Liste zugreifen:

Bildschirmfoto: Webradio DB als Liste unter MyMPD im Browser

Plötzlich hat man eine ziemlich große Liste (derzeit fast 700 Einträge) an diversen Internetradios diverser Genres im Browser verfügbar. Man muss nur auf einen dieser Einträge klicken und sofort beginnt MPD mit der Wiedergabe. Selten war es einfacher, neue Radiostationen zu entdecken. Es gibt auch eine sehr praktische Favoritenfunktion. Beide Ansichten sollte man dann noch so konfigurieren, dass das jeweilige Sendersymbol und ggf. die Beschreibungen angezeigt werden.

Man kann (via GitHub) auch neue Stationen zum Hinzufügen einreichen. Ich hatte dies auch getan, weil zwei meiner Lieblingssender noch nicht in der Liste standen. Nach kurzer Zeit waren auch diese in der WebradioDB verfügbar. Allerdings musste ich den Raspberry neu starten, damit die neuen Sender in der Liste auftauchten.

Bonus 3: Interpretenbilder

MyMPD kann problemlos die Cover der Alben anzeigen – wenn diese Bilder in den Tags der Musikdateien enthalten sind. Aber bei Bildern für die Musiker gelingt dies offenbar nicht automatisch. Betrachten Sie eine spezifische Zeile oben in meiner docker-compose.yml: Sie definiert das workdir. In diesem Verzeichnis muss es dann einen Unterordner pics geben und darin einen Unterordner Artist. Und genau in diesem Ordner legt man alle Interpretenbilder ab. Dann können in der Künstler-Übersicht auch Bilder angezeigt werden:

Bildschirmfoto: MyMPD Interpreten-Übersicht mit Bilder

Diese Grafiken müssen jedoch exakt benannt werden: Und zwar genau so, wie der jeweilige Interpret auch von mpd gelesen wird (via Interpret-Tag in den Musikdateien). „The Beatles“ ist also etwas anderes als „the_beatles“. Werden diese Bilder korrekt eingelesen, hat man eine richtig schöne Interpretenübersicht und mpd /MyMPD fühlt sich optisch viel „persönlicher“ an.

Tipp: Zum Testen bzw. vor dem neu Laden der Seite sollte der Browsercache geleert werden, damit neue Bilder erscheinen können.


Eine schöne Sache das Ganze, funktional und grafisch sehr ansprechend. Nur die Tonausgabe direkt im Browser (eigenes Spotify) reagiert etwas träge auf z. B. Start-Stopp-Befehle. Vielleicht hat ja jemand einen Tipp, wie man dies beschleunigen könnte.

Kommentar schreiben

Hier gibt es die Möglichkeit für Resonanz. Pflichtfelder sind mit * markiert.

Kommentare erscheinen nicht sofort bzw. werden manuell freigegeben. Mit dem Absenden des Formulars stimmen Sie der Datenschutzerklärung zu bzw., dass Ihre eingegebenen Daten gespeichert werden. IP-Adressen werden dabei grundsätzlich nicht gespeichert.