Weekly Snap: OpenNebula, PulseAudio, OTR & OSDC

weekly snap8 – 12 April was filled with announcements and tips for beyond the office – from music to messaging.
This week’s announcements included our promotion to first OpenNebula Premium Partner, MultiTech iSMS’ version 1.51.9 firmware release and a sold out OSDC.
Following with tips, Thomas recommended OTR for secure instant messaging as Matthias showed how to send emails with Node.js and Achim played music off his network with PulseAudio and Music Player Daemon (MPD).
Eva counted 9 days to the OSDC with Maciej Dobrazanski’s presentation on software decision making, noting where the grass is always greener.
She went on to thank our OSDC sponsors, Linux Magazin, Admin Magazin and Puppet Labs. Just 2 days to go – we look forward to seeing you all there!

Musik via Netzwerk mit Pulseaudio und MPD

Meine Musik spiele ich zuhause schon längere Zeit über Music Player Daemon (MPD) ab, auch weil damit ein streamen auf andere Geräte per HTTP ohne größeren Konfigurationsaufwand möglich ist. Clients gibt es wie Sand am Meer, auch für Android und iOS (MPDroid, MPaD, MPoD). Eine Steuerung der Musikwiedergabe ist somit ohne großen Aufwand von all meinen Geräten möglich. HTTP-Streams haben natürlich ihre schwächen. Ein “next Track” auf einem MPD-Client wird zwar auf dem MPD-Server sofort ausgeführt auf dem Client dauert es aber noch einige Sekunden bis der Cache abgespielt wurde und das neue Lied beginnt. Das nervt!
Besser wäre es natürlich wenn ich die Ausgaben aller Geräte im Netzwerk direkt ansteuern kann. Mit Pulseaudio funktioniert dies auch scheinbar schon länger, ich bin aber eher zufällig über die Möglichkeiten die Pulseaudio bietet gestolpert. Ubuntu setzt bereits länger auf Pulseaudio, somit ist auf meinen Geräten auch schon fast alles installiert was ich benötige.
Auf den Clients, z.B. ein Desktoprechner mit Soundanlage im Wohnzimmer, reicht es aus das Paket für PulseAudio Preferences (papref) zu installieren und ein paar Häckchen zu setzen, so dass die Ausgaben im Netzwerk angeboten werden.
kw15-paprefs
Mit Hilfe des .pulse-cookie kann dies auch mit Authentifizierung erfolgen. Auf dem MPD-Server ist dies unter /var/lib/mpd/.pulse-cookie zu finden. Dieses wird einfach in das Homeverzeichnis der Clients kopiert (pulseaudio läuft normalerweise mit dem aktuell eingeloggtem Benutzer).
Auf dem MPD-Server muss natürlich erstmals das Paket mpd installiert werden. Damit die Ausgabegeräte der Clients auch automatisch gefunden werden solltet ihr noch ein Zeroconf Paket installieren:

# apt-get install mpd pulseaudio-module-zeroconf

Die Ausgaben der Clients (auch Sinks genannt) müssen auf dem MPD-Server jetzt natürlich definiert werden (/etc/pulseaudio/client.conf). Das müsste auch in der GUI funktionieren, aber mein kleiner Musikserver hat kein X installiert.

$ vim /etc/pulse/default.pa:
 # Desktop mit supertollem Soundsystem dran
 load-module module-tunnel-sink server=1.2.3.4
 # Kleine Himbeere in der Küche
 load-module module-tunnel-sink server=1.2.3.5
# Findet die Ausgaben der Clients auch wenn diese nach Pulseaudio gestartet werden
 load-module module-zeroconf-discover

Will man die Ausgaben in Küche und Wohnzimmer synchronisieren, müssen diese noch zu einer gemeinsamen Sink zusammengeführt werden. Dazu ist in der default.pa folgender Eintrag nötig:

 # Gemeinsame Ausgabe
 load-module  module-combine-sink sink_name=Beide slaves=tunnel-sink.1.2.3.4,tunnel-sink.1.2.3.5

In der /etc/mpd.conf werden nun noch alle Ausgabegeräte definiert. Die ersten beiden Einträge benötigt man, dass man die Ausgaben in Wohnzimmer und Küche einzeln ansprechen kann und ein dritter Eintrag um die kombinierte Ausgabe anzusteuern. Hinweise zur allgemeinen Konfiguration von mpd liefert euch Google, aber eigentlich muss man nur den Pfad zur eigenen Musiksammlung angeben.

audio_output {
        type                    "pulse"
        name                    "Wohnzimmer Desktop"
        sink                    "tunnel-sink.1.2.3.4"
}
audio_output {
        type                    "pulse"
        name                    "Himbeere Küche"
        sink                    "tunnel-sink.1.2.3.5"
}
audio_output {
        type                    "pulse"
        name                    "Alle"
        sink                    "Beide"
}

Sobald man dann MPD startet (und man eine der Ausgaben aktiviert) wird von diesem ein Pulseaudio-Prozess gestartet (als Nutzer mpd). Bei den ersten Tests solltet ihr darauf achten, dass vorher noch kein pulseaudio-Prozess des Benutzers mpd läuft und dass der Benutzer mpd in den passenden Gruppen ist:

$ usermod -aG pulse,pulse-access mpd
$ id mpd
  uid=104(mpd) gid=29(audio) groups=29(audio),112(pulse),113(pulse-access)

Wenn man als Nutzer mpd pacmd list-sinks auführt werden alle definierten Sinks angezeigt. Achtung: Der mpd Nutzer hat normalerweise ein /bin/false als Shell in der passwd eingetragen.
Jetzt kann ich über die MPD-Clients die verschiedenen Ausgaben ein und ausschalten, am bequemsten ist das natürlich wenn man mit Smartphone oder Tablet auf der Couch sitzt. Pulseaudio bietet aber noch weitaus mehr, z.B. eine Unterstützung für AirPlay, aber in Zeiten von DLNA, AirPlay, Spotify, Google Music, Ubuntu One Music (…) ist das nur eine weitere Lösung um sein Eigenheim mit Musik zu versorgen!

Achim Ledermüller
Achim Ledermüller
Lead Senior Systems Engineer

Der Exil Regensburger kam 2012 zu NETWAYS, nachdem er dort sein Wirtschaftsinformatik Studium beendet hatte. In der Managed Services Abteilung ist unter anderem für die Automatisierung des RZ-Betriebs und der Evaluierung und Einführung neuer Technologien zuständig.