Howto: Konfiguration des Music Player Daemon (MPD)

Ich nehme an dass Leser dieses Artikels schon mal vom MPD gehört haben, dennoch werde ich kurz erläutern, was er ist und kann, bzw. wofür man ihn einsetzt.

Der MPD ist ein Daemon, also ein *nix-Dienst, der Musik in den Formaten mp3, ogg, flac abspielen kann. Gesteuert werden kann er mit nahezu jedem Betriebssystem mit einem MPD-Client, wobei eine große Auswahl zur Verfügung steht. Was ist nun das besondere? Der Daemon selbst, der die Musik abspielt, ist unabhängig davon, ob ein Client verbunden ist. Beispielsweise ist es somit möglich einen Medien-PC einzurichten, der (dauerhaft) an eine Stereo-Anlage oder ein Surround-System angeschlossen ist. Diesen kann man sogar mit dem Handy steuern, entsprechende Apps gibt es für Android-Phones, iPhone und iPod Touch sowie Symbian-Handys.

Kommen wir zur Installation und Konfiguration. Ich selbst habe den MPD auf Arch Linux installiert. Die Vorgänge sollten aber bei jeder gängigen Distribution ähnlich sein. Ich gehe davon aus, dass ihr die Soundtreiber schon installiert habt, da die Soundkarte in der Regel bei der Installation von Linux automatisch erkannt wird. Ist dies nicht der Fall empfehle ich die Lektüre des entsprechenden Artikels im Ubuntuusers-Wiki und/oder dem Wiki eurer Distribution. Ich verwende auf allen Systemen in diesem Tutorial ALSA. Dementsprechend empfehle ich zunächst über den # alsamixer zu prüfen, ob die Kanäle nicht gemuted sind – dies ist nämlich standardmäßig der Fall und wird nach jedem Neustart auch wieder so gesetzt. Abhilfe schafft das speichern der Einstellungen, was ihr durch Ausführen von # alsactl -f /var/lib/alsa/asound.state store aktiviert.
Je nach Distribution kann man den alsamixer nur mit root-Rechten ausführen, was mich zur nächsten Voraussetzung bringt. Ihr solltet root-Rechte haben oder sudo nutzen können. Ich halte mich an die übliche Konvention, dass $ vor einem Befehl für Ausführung als User, # für die Ausführung mit root-Rechten steht.

Zunächst installiert man den MPD mit dem Paketmanager, unter Arch Linux ist dies pacman, bei Debian-Systemen bzw. Ubuntu nutzt ihr apt-get (oder alternativ aptitude), Fedora-Nutzer verwenden yum und müssen das RPMFusion-Repository aktiviert haben. Dazu führt man als Nutzer von Fedora 12, 13 oder 14 den etwas länglichen Befehl $ su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm' aus.
Der Befehl zum Installieren des MPD lautet je nach Distribution

Arch: # pacman -Sy mpd
Debian: # apt-get install mpd
Fedora: # yum install mpd

Nun legt ihr im Verzeichnis /etc eine Datei mpd.conf mit folgendem Inhalt an. Ich verwende hierzu den Editor nano.

# nano /etc/mpd.conf
playlist_directory "/var/lib/mpd/playlists"
music_directory "/voller/Pfad/zum/Musikordner"
port "6600"

log_file "/var/log/mpd.log"
db_file "/var/lib/mpd/mpd.db"

user "mpd"
state_file "/var/lib/mpd/state"
pid_file "/var/lib/mpd/pid"

audio_output {
   type "alsa"
   name "My ALSA Device"
}

Im Grunde solltet ihr alle Angaben übernehmen können, einzelne Anpassungen könnt ihr natürlich machen, wenn ihr sie für nötig haltet. Jedoch sollten alle angegebenen Pfade existieren! Wenn ihr den Abschnitt audio_output weglasst, wird die Soundausgabe automatisch erkannt, was zumindest bei mir funktioniert hat. Wichtig ist, dass der MPD die richtigen Zugriffsrechte hat. Ich verwende dazu # chmod -R a-x,a+rwX /voller/Pfad/zum/Musikordner. Das heißt im Klartext: Modifiziere im angegebenen Ordner und allen Unterordnern (-R) die Rechte so, dass jeder (a) auf allen Dateien und Ordnern die Rechte zur Ausführung entzogen bekommt (-x), gib anschließend allen Nutzern Lese- und Schreibrechte (+rw) sowie das Recht auf Unterordner zuzugreifen (+X). Dass das X groß ist, ist hier wichtig! Ebensogut könntet ihr den Musikordner auch an den User mpd chownen: # chown mpd:users /voller/Pfad/zum/Musikordner. Auch müsstet ihr dann gewährleisten, dass andere User, die in den Musikordner schreiben können sollen, Zugriff haben (was wiederum # chmod -R a-x,a+rwX /voller/Pfad/zum/Musikordner täte)

Etwas mehr Arbeit habt ihr, wenn ihr eine abweichende Konfiguration verwendet, dann müsst ihr nämlich einige Verzeichnisse an den User mpd chownen und die Rechte anpassen (den User mpd müsst ihr allerdings nicht erstellen). Verwendet ihr die obige Konfiguration, überspringt ihr folgenden Codeblock und fahrt mit der Anleitung danach fort! Ein Beispiel wann dies nötig ist, ist wenn ihr das Log nach /var/log/mpd.log schreiben wollt, wo für gewöhnlich nur root Schreibzugriff hat. Legt ihr die Datei aber mit touch dort eigenhändig an und chowned sie an mpd:mpd funktioniert das natürlich auch.

# touch /Pfad/zu/Log/mpd.log
# mkdir /Pfad/zum/Ordner/für/state_bzw._pid_und_db
# chown mpd:mpd /Pfad/zu/Log/mpd.log
# chown -R mpd:mpd /Pfad/zum/Ordner/für/state_bzw._pid_und_db  
# chmod a+w /Pfad/zu/Log/mpd.log
# chmod -R u=rwx,og=rx /Pfad/zum/Ordner/für/state_bzw._pid_und_db

Sollte einer der Befehle mit einer Meldung scheitern, dass der User mpd unbekannt sei, führt den Befehl erneut aus, nachdem ihr den mpd einmal gestartet habt. Bei meinen Tests auf Fedora musste ich das nicht, bei anderen Tests schon…

Interessanterweise nirgendwo angegeben – aber nötig – ist dass die MPD-Binary bestimmte Rechte hat. Sie muss in der Lage sein die gid zu setzen, da der MPD als User mpd laufen soll, selbst wenn dieser von root gestartet wird (zumindest halte ich es für sinnvoll, Programme nur als root laufen zu lassen, wenn es wirklich nötig ist). Das erreicht man mit

# chmod u+s /usr/bin/mpd

Wenn ihr diesen Befehl vergesst, werden euch beim Starten des MPD Meldungen in der Art von

cannot setgid for user „mpd“

um die Ohren fliegen.

Wenn ihr bei jedem Start des Rechners den MPD starten wollt, so tragt ihr unter Arch Linux in /etc/rc.conf bei den DAEMONS auch mpd ein.

Bei Debian führt ihr folgenden Befehl aus:

# update-rc.d mpd defaults

Fedora-Nutzer führen folgenden Befehl aus:

# chkconfig --level 345 mpd on

Wer den MPD steuern darf, kann mit Passwörtern geregelt werden. Hierzu fügt man der mpd.conf beliebig viele Einträge in folgendem Format hinzu

password "password@permissions"

Beispielsweise würde der Eintrag

password "foobar@read,add,control,admin"

dafür sorgen, dass jemand, der sich mit einem MPD-Client und Passwort „foobar“ anmeldet den MPD vollständig steuern könnte. Die folgenden Kontroll-Level können beliebig kombiert werden:

read: Anzeige der Datenbank, aktuellen Playlist und Status des MPD
add: Hinzufügen von Liedern und Playlists
control: Alle anderen Zugriffe auf Player und Playlists
admin: Datenbank-Updates und Beenden des MPD

Das beste natürlich zum Schluss: Startet den MPD indem ihr einfach $ mpd auf der Bash eingebt. Die Konfiguration erlaubt jedem Nutzer der Shell-Zugang zum MPD-Rechner hat, den MPD zu starten und mit $ mpd --kill wieder zu stoppen. Um das zu vermeiden, kann man die Berechtigungen der /usr/bin/mpd verändern. So schützt z.B. # chmod go-x /usr/bin/mpd davor, dass Benutzer, außer der Besitzer der Binary (i.d.R. root) diese ausführen.

Bei einem meiner Tests auf Fedora 14 erhielt ich beim Starten vom MPD folgende Fehlermeldung:

mpd: error while loading shared libraries: libxvidcore.so.4: cannot enable executable stack as shared object requires: Permission denied

Das Problem ist, dass SELinux zu restriktiv ist, meine Lösung ist (dauert einen Moment):
# setenforce 0; audit2allow -a -M mpdlib; semodule -i mpdlib.pp; setenforce 1

So, ich hoffe ich habe nichts Wichtiges vergessen und konnte erklären, wie man den MPD einrichet um Musik abzuspielen. Alles weitere sollte aus den grafischen Clients heraus möglich sein. Bei Fehlern, Problemen, Danksagungen und Verbesserungen steht euch die Kommentarfunktion zur Verfügung.

2 Antworten

  1. flo
    Veröffentlicht am 27. Februar 2011 um 03:01 | Permalink

    Hey,
    hammermäßig gute Übersicht!! ich hätte nur eine Frage: welchen Client für Symbian (S60v3) kennst du denn..? Ich benutze derzeit anyremote, wofür auf dem Server dann aber ein weiterer demon läuft…

  2. Veröffentlicht am 27. Februar 2011 um 14:52 | Permalink

    Hey,
    ich selbst habe keine Symbian-Clients ausprobiert, weil ich einen Androiden habe. In der im Artikel verlinkten Liste stand aber z.B. „mpdClientS60-qt“, ob es mehr und bessere gibt weiß ich nicht, aber wenn du unter dem Link MPD-Clients von oben oder auch sonst nen guten findest, würde ich mich über einen weiteren Kommentar freuen.