06 Raspberry Pi - selbst Musik streamen mit Cherrymusic

in deutsch •  last year  (edited)

Raspberry_Pi_Logo_cherrymusic.png

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 Beitrag auf gldhnchn.de

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Ich hatte bis jetzt noch nicht die Not, dass ich was hätte wegstreamen müssen, aber ich hätte gern zumindest lokale Dateien anhören wollen, aber wenn ich Kopfhörer in die Klinkenbuchse stecke, dann hört man nur ein dauerhaftes lautes Klingeln. Ob Musik gespielt wird, weiß ich nicht, das sie vielleicht nur übertönt wird.
Hast du dafür vielleicht eine Lösung? Habe einen Raspi 3b+

  ·  last year (edited)

Der analoge Audioausgang vom Pi ist qualitativ sehr schlecht, da die D/A-Wandlung mit sehr günstigen Komponenten erfolgt und keine zusätzlichen Filter verbaut sind. Ton über HDMI oder (W-)LAN ist da eher empfehlenswert.
Wenn es doch nicht anders geht dann kann man einfach eine USB Soundkarte anschließen oder sich so ein Audio Shield für den Pi holen (z.B. sowas), die dürften die Audioqualität des Analogen Ausgangs deutlich verbessern.

Danke. Ich wollte jetzt aber nicht wirklich was dazukaufen. Schade.

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by Elektr1ker from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.

Hallo

Du hast einen Upvote vom steem-bootcamp bekommen. Dieser stammt aus Kuratorenhand und wurde nicht via bot vergeben. Derzeit am Ruder: @arzon-cnaster
Weiter So!
Hier gehts zu unserem discord: https://discord.gg/PvkPGGd

Congratulations @gldhnchn! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @gldhnchn! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!