Raspberry Pi mit Alpine Linux und MPD als Streaming Server

  gun630   Lesezeit: 4 Minuten  🗪 3 Kommentare

12 Jahre alter Raspberry Pi dient als Streaming Server, mit Alpine Linux und MPD.

raspberry pi mit alpine linux und mpd als streaming server

Das Schöne an Linux ist, dass es für fast jede Hardware und fast jeden Anwendungsfall Lösungen gibt. In meinem Fall ist das ein alter Raspberry Pi 1b mit 512 MB RAM, der schon eine Weile in einer Ecke verstaubte. Ich habe ihn mittels Alpine Linux und MPD zu einem Streaming-Server umgerüstet, um übers Internet meine Lieblings-Radiosender zu hören und meine lokale Musiksammlung abzuspielen. Der Server erweitert nun mein aus analogen Zeiten stammendes HiFi-Equipment.

Der Raspi ist schon gehörig in die Jahre gekommen, verrichtet aber mit dem installierten Alpine Linux und MPD zuverlässig seine Arbeit. Alpine Linux ist eine schlanke und gehärtete Distribution, die auf musl libc und busybox setzt. Sie verwendet einen eigenen Paketmanager apk, das OpenRC Init System und skriptgesteuerte Setups. Zudem werden alle Userland-Binärdateien als Position Independent Executables (PIE) mit Stack Smashing-Schutz kompiliert. Diese proaktiven Sicherheitsfunktionen verhindern die Ausnutzung ganzer Klassen von Zero-Day- und anderen Sicherheitslücken. Hier wurde das KISS-Prinzip konsequent umgesetzt: "keep it simple, stupid!" und "keep it simple [and] safe" :-)

Die minimale Installation (ohne Desktop versteht sich) benötigt 130 MB auf der SD-Karte und etwa 40 MB an Hauptspeicher. Neben MPD habe ich noch einen OpenSSH Server, Wireguard und UFW installiert, um den Server gesichert erreichen und warten zu können. In der Konstellation werden etwa 200 MB an RAM benötigt, es sind also noch Ressourcen frei für spätere Erweiterungen.

Auf der Webseite von Alpine Linux stehen verschiedene Downloads für Raspberry Pi zur Verfügung, je nachdem welches Modell man hat. Neben ARM-Prozessoren werden auch X86, PPC und S390 unterstützt. Alpine Linux ist auch für virtuelle Maschinen interessant und beliebt, um z. B. Container aufzusetzen.

Der Raspi ist headless konfiguriert, das System startet dann auch ohne angeschlossenen Monitor und Tastatur und wird via ssh verwaltet, was für meinen Einsatzzweck als Streaming Server erwünscht ist. Wenn man möchte, kann das System auch im diskless mode aufgesetzt werden, was bedeutet, dass das gesamte Betriebssystem mit allen Anwendungen zunächst in den Arbeitsspeicher geladen wird und dann nur von dort aus läuft. Ich habe darauf verzichtet, da der RAM auf dem alten Raspi begrenzt ist.

Die Installation von Alpine Linux wird hier beschrieben: https://docs.alpinelinux.org/user-handbook/0.1a/index.html

Nachdem Alpine Linux läuft, kann MPD bequem mit apk installiert werden. Zusätzlich wird der OpenRC-Dienst installiert: root# apk add mpd root# apk add mpd-openrc

Neben MPD muss ALSA, wahlweise mit PulseAudio oder Pipewire, installiert und konfiguriert werden. Eine gute Anleitung für die Konfiguration von MPD mit OpenRC gibt es hier: https://wiki.gentoo.org/wiki/MPD

Nachdem MPD und ALSA konfiguriert und einsatzbereit sind, wird der Raspberry Pi mit Klinke-auf-Chinch-Kabel mit dem Verstärker verbunden. Für audiophile Ansprüche sind Digital-Analog-Wandler für die Raspberries verfügbar. Mein Raspi ist via Ethernet-Kabel mit meinem Router verbunden, da er keine WLAN-Schnittstelle besitzt. Die IP-Adresse ist fest vergeben, um den Service im LAN verfügbar zu machen. Es gibt diverse Client-Software für unterschiedliche Betriebssysteme, die für die Fernsteuerung des Servers genutzt werden kann. Der Client verbindet sich nun mit dem Server und wenn alles klappt, kann man aus einem weltweiten Reservoir an Radiostationen seine Favoriten wählen. Man kann auch seine Musiksammlung in das konfigurierte Musikverzeichnis des Servers, z. B. mit scp, hochladen und abspielen. Es ist sogar möglich, Musik via HTTP an den Server und damit an die Anlage zu senden (HTTP-Streaming).

Alpine Linux ist eine gehärtete und sichere Distribution, die aufgrund ihres schlanken Designs für ältere Hardware prädestiniert ist und alten Raspberries neues Leben einhauchen kann. Neben MPD kommen auch andere Einsatzzwecke infrage, wie z. B. als VPN-Gateway, PiHole oder als Monitoring-Server. Mit Alpine Linux läuft mein 12 Jahre alter Raspi auch heute noch einwandfrei!

Quellen:
https://www.raspberrypi.com/
https://www.alpinelinux.org/
https://docs.alpinelinux.org/user-handbook/0.1a/index.html
https://www.musicpd.org/
https://wiki.gentoo.org/wiki/MPD
https://de.wikipedia.org/wiki/KISS-Prinzip

Tags

Raspberry Pi, Alpine Linux, MPD, Streaming Server

V wie Vendetta
Geschrieben von V wie Vendetta am 19. April 2024 um 13:08

Ja, Alpine ist eine schöne und schlanke Distro, die sich hervorragend für alte Hardware eignet. Die Sicherheit wurde vor kurzem ja auch unter Beweis gestellt, denn wer kein systemd oder glibc benutzt, hatte auch keine Probleme mit der xz-Backdoor. Wie immer zahlt es sich aus, unter dem Radar zu bleiben. ;)

Schön, dass die Installation mittlerweile so unkompliziert klappt? ARM-Geräte waren ja schon immer etwas problematisch, was den Bootvorgang angeht und von Tow-Boot habe ich schon lange nichts mehr gehört.

gun630
Geschrieben von gun630 am 19. April 2024 um 14:49

Die Installation verlief halbwegs unkompliziert, nur am Anfang wollte das System nicht booten. Habe die boot-Partition von FAT16 auf FAT32/lba geändert (boot flag nicht vergessen), danach ging es. Im Wiki gibt es viele Anleitungen, ich habe mich von folgender leiten lassen:

https://wiki.alpinelinux.org/wiki/Classic_install_or_sys_mode_on_Raspberry_Pi#Update_boot_partition_(keep_system_partition/setup-alpine_layout)

neffets
Geschrieben von neffets am 19. April 2024 um 15:52

Weil Alpine so schön schlank ist, hat es sich quasi zum Standard-Grundsystem für Docker-Container gemausert. Mit "unter dem Radar fliegen" ist also nicht mehr...