In diesem Artikel zeige ich dir wie du deinen Raspberry Pi nutzen kannst um deine eigene Musiksammlung über das Internet zu streamen, ähnlich wie du auch über Spotify Musik streamen kannst. Genau dies ist möglich mit der Software Cherrymusic, um dessen Installation und Konfiguration es in diesem Artikel geht. In der hier beschriebenen Konfiguration wird nginx als reverse-proxy genutzt um Cherrymusic aus dem Internet zu erreichen. Eine direkte Erreichbarkeit ist bei Cherrymusic auch möglich.

Installation vorbereiten

Damit Cherrymusic korrekt funktioniert, solltest du vorher folgende Pakete installieren:

  • sudo apt install python3
    Python ist die Programmiersprache, mit der Cherrymusic programmiert wurde und mit dessen Interpreter es auch ausgeführt wird.
  • sudo apt install ffmpeg imagemagick lame python3-unidecode
    Diese Pakete benötigst du, damit Cherrymusic mit verschiedenen Audiocodecs umgehen kann.
  • sudo apt install git
    Git ist eine Versionskontrollsoftware, mit der du Cherrymusic herunterladen und updaten kannst.
  • sudo apt install python3-pip
    Ein Paketmanager für Python.
  • sudo pip3 install cherrypy
    Cherrypy ist die Webserversoftware auf der Cherrymusic aufbaut. Du kannst Cherrypy entweder selbst mit diesem Befehl installieren oder beim ersten Start von Cherrymusic die Option auswählen, Cherrypy nur lokal für Cherrymusic zu installieren.

Aus Sicherheitsgründen wird empfohlen, Cherrymusic unter einem eigenen User laufen zu lassen:

  • sudo adduser cherrymusic
  • su cherrymusic Zu user cherrymusic wechseln
  • git clone --branch devel git://github.com/devsnd/cherrymusic.git ~/cherrymusic-devel Damit wird nun Cherrymusic ins home Verzeichnis vom user cherrymusic in den Ordner cherrymusic-devel heruntergeladen. Es wird hierbei der branch development genutzt. Ich habe bisher keine negativen Erfahrungen mit der Stabilität gemacht und kann ihn deshalb weiterempfehlen.

Cherrymusic konfigurieren

Zuerst wird Cherrymusic gestartet, damit es die Konfigurationsdateien anlegt.

  • cd ~/cherrymusic-devel/
  • ./cherrymusic

Unter /home/cherrymusic/.config/cherrymusic/cherrymuic.conf existiert nun eine Konfigurationsdatei. Diese enthält unter anderem:

  • basedir = Hier kann entweder ein direkter Pfad zu deiner Musiksammlung angegeben werden oder ein Ordner in dem du Links zu verschiedenen Orten mit Musik sammelst. z.B. so
    mkdir ~/.local/share/cherrymusic/basedir
    ln -s PATH_TO_MUSIC_COLLECTION ~/.local/share/cherrymusic/basedir/MUSIC_COLLECTION
    dann basedir so angeben:
    basedir = /home/cherrymusic/.local/share/cherrymusic/basedir
  • port = 8080 ist später wichtig für die nginx Konfiguration
  • localhost_only = True Damit wird cherrymusic nur über den nginx reverse proxy erreichbar sein und nicht direkt von außen.
  • rootpath = /cherrymusic Dies ist die Pfadangabe für die reverse proxy Auflösung.
  • ssl_enabled = False Da die SSL Verschlüsselung von nginx gemacht wird, braucht Cherrymusic dies nicht tun.

Cherrymusic ist fertig konfiguriert und kann gestartet werden.
cd ~/cherrymusic-devel/
./cherrymusic&
Mit exit wird der user cherrymusic wieder verlassen.
Damit Cherrymusic automatisch startet, falls der Raspberry Pi rebootet kannst du noch in der Datei /etc/crontab folgende Zeile einfügen:
@reboot cherrymusic cd /home/cherrymusic/cherrymusic-devel; /home/cherrymusic/cherrymusic-devel/cherrymusic

nginx konfigurieren

Im Folgenden wird nginx für Cherrymusic so konfiguriert, dass es sich in jene Konfiguration, die ich in dem Artikel über nginx beschrieben habe, einfügt. Beispielsweise läuft Cherrymusic hinter einem reverse proxy mit der domain example.com. Dafür wird folgende Datei erstellt: /etc/nginx/sites-available/example.com_81.conf
Mit dem Inhalt:

server {
	listen localhost:81;
	root /var/www;
	server_name example.com;
	location = / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ =404;
	}
	
	location ^~ /cherrymusic {
		proxy_redirect     off;
		proxy_set_header   Host $host;
		proxy_set_header   X-Real-IP $remote_addr;
		proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header   X-Forwarded-Host $server_name;
		proxy_pass         http://127.0.0.1:8080;
	}
}

Hier ist nochmal der Port 8080 und die location Angabe /cherrymusic zu sehen. Um die Konfiguration zu aktivieren muss noch ein Link erstellt werden und nginx neugestartet werden.
sudo ln -s /etc/nginx/sites-available/example.com_81.conf /etc/nginx/sites-enable/
sudo service nginx restart
Fertig! Cherrymusic ist nun unter example.com/cherrymusic erreichbar.

zu diesem Artikel auf steemit.com