Schlagwort: cherrymusic

  • 05 Raspberry Pi – selbst Musik streamen mit Cherrymusic

    05 Raspberry Pi – selbst Musik streamen mit Cherrymusic

    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:

    • MARKDOWN_HASH6ed08f3b08906156ac56d5bdedb406e0MARKDOWNHASH
      [Python](https://de.wikipedia.org/wiki/Python
      (Programmiersprache)) 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.