Internetradio

Vorbereitung

Zuerst laden wir uns das aktuelle Raspbian herunter. Zur Erstellung dieser Anleitung war es Raspbian Buster. Ich habe mich für die Variante mit Desktop entschieden.
https://www.raspberrypi.org/downloads/raspbian/

Das heruntergeladene Image wird mit einer geeigneten Software (z.B. Etcher) auf die SD-Karte übertragen. Weitere Infos dazu unter
https://www.raspberrypi.org/documentation/installation/installing-images/README.md.

Bevor wir den Pi starten können muss noch SSH aktiviert werden. Dazu erstellen wir uns eine Datei mit dem Namen ssh und kopieren diese auf die SD-Karte. Weitere Infos dazu unter https://www.raspberrypi.org/documentation/remote-access/ssh/README.md

Als nächstes wird die SD-Karte in einen RaspberryPi (in meinem Fall ein 3B+) gesteckt. Der Raspberry ist via LAN-Kabel eingebunden. Einschalten…

Nun müssen wir die IP-Adresse herausbekommen, welche der DHCP unserem RaspberryPi vergeben hat. Schaut dazu am einfachsten in Eure Router oder benutzt einen Netzwerkscanner auf dem Smartphone (z.B. Fing). In dieser Anleitung verwende ich die Adresse 192.168.1.74.

Über das Terminal verbindet Ihr Euch mit dem RaspberryPi

ssh 192.168.1.74 -l pi

der Pi antwortet in etwa so

The authenticity of host '192.168.1.74 (192.168.1.74)' can't be established. ECDSA key fingerprint is SHA256:JCO/RbFGRdoLxp8Bc+xtblaiJkPAoo0Btz+pmTG6h+Q. Are you sure you want to continue connecting (yes/no)?

Die Frage beantworten wir mit yes und geben nun dass Passwort raspberry ein.

Den Hinweis

SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

nehmen wir ernst und vergeben uns mit

passwd

ein neues Passwort. Wie man ein starkes Passwort generiert habe ich hier erläutert.

Im nächsten Schritt bringen wir das frisch installierte Raspbian erstmal auf den aktuellen Stand.

sudo apt-get update

sudo apt-get upgrade

sudo reboot

Der letzte Befehl startet den RaspberryPi neu. Im Anschluss stellen wir die SSH-Verbindung wieder mit

ssh 192.168.1.74 -l pi

her und geben das oben neu vergebene Passwort ein.

Nun mach wir uns daran das frisch aufgesetzte System zu konfiguren. Mit Hilfe von

sudo raspi-config

nehmen wir nun folgende Einstellungen vor.

  1. 2 Network Option → Hostname → raspberrypi ändern in musicbox
  2. 4 Localisation Options → I1 Change Locale → de_DE.UTF-8 UTF-8 aktivieren und en_GB.UTF-8 UTF-8 deaktivieren
  3. 4 Localisation Options → I1 Change Timezone → Europe → Berlin
  4. 5 Interfacing Option → P3 VNC – VNC aktivieren

Die abschließende Frage ob der RaspberryPi neu gestartet werden soll beantworten wir mit Yes. Nach dem Neustart verbinden wir uns via SSH wieder mit dem RaspberryPi.

ssh 192.168.1.74 -l pi

 

SAMBA Fileserver installieren

Damit wir später auch MP3s auf unser Internetradio ablegen können wird nun ein SAMBA Server eingerichtet. Damit stellt der RaspberryPi dann ein Netzlaufwerk zur Verfügung auf das wir von Windows oder MacOS aus darauf zugreifen können.

sudo apt-get install samba

Die Abfrage ob das Paket dhcp-client installiert werden soll beantworten wir mit Ja.

Nun legen wir noch ein paar Verzeichnisse an, in welches wir später die Musikdateien, Playlisten etc. ablegen wollen.

sudo mkdir /music

sudo mkdir /music/playlists

sudo mkdir /music/podcasts

Damit wir später auch als anonymer User darauf zugreifen können ändern wir gleich noch die Zugriffsrechte der Verzeichnisse.

sudo chmod -v 777 /music

sudo chmod -v 777 /music/playlists

sudo chmod -v 777 /music/podcasts

Jetzt ist die Einrichtung von SAMBA an der Reihe. Mit einem

sudo nano /etc/samba/smb.conf

öffnen wir die Konfigurationsdatei und ergänzen am Ende folgende Einträge

[music]
comment = Musik
path = /music
browseable = yes
read only = no
guest ok = yes

Abgespeichert wird mit Strg+S und mit Strg+X wird nano beendet.

Nun starten wir den SAMBA-Dienst neu

sudo systemctl restart smbd

und können nun im LAN z.B. von Windows aus über Laufwerke → Netzlaufwerk verbinden auf die Freigabe zugreifen.

 

Mopidy installieren

Zuerst fügen wir die Mopidy Quellen der Anwendungsverwaltung hinzu und installieren das Basispaket in dem wir folgende Befehle nacheinander im Terminal eingeben:

wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -

sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/buster.list

sudo apt-get update

sudo apt-get install mopidy

Im nun folgenden Schritt starten wir Mopidy erstmalig

mopidy

und warten ein paar Sekunden bis die Ausgabe

Creating dir file:///home/pi/.local/share/mopidy/http

erfolgt ist um das Programm nun mit Ctrl+C wieder zu unterbrechen. Mopidy legt im Hintergrund ein paar Pfade und Dateien an, welche wir später bearbeiten. Wer später Mopidy als Service laufen lassen möchte fügt in diesem Schritt den User mopidy noch der Gruppe video hinzu.

sudo adduser mopidy video

Damit wir Mopidy später über eine Weboberfläche (Webclients) steuern können muss diese entsprechend auch installiert sein. Ich haben mich für Iris und Mobile entschieden.

sudo python3 -m pip install Mopidy-Iris

sudo python3 -m pip install Mopidy-Mobile

Weitere mögliche Webclients wären MusicBox-Webclient, Simple-Webclient, Moped oder Mopify um nur einige zu benennen. Eine Übersicht gibt es hier.

Wer auf Mopidy auch mit externen MPD-Clients (z.B. ncmpcpp) zugreifen möchte sollte sich unbedingt noch Mopidy-MPD installieren.

sudo python3 -m pip install Mopidy-MPD

Nun können je nach Bedarf weitere Addons installiert werden:

# Spotify support
sudo apt-get install mopidy-spotify

# Podcast support
sudo python3 -m pip install Mopidy-Podcast
sudo python3 -m pip install Mopidy-Podcast-iTunes

# Last.FM scrobbling support
sudo python3 -m pip install Mopidy-Scrobbler

# Soundcloud support
sudo python3 -m pip install Mopidy-SoundCloud

# TuneIn support
sudo python3 -m pip install Mopidy-TuneIn

# YouTube support
sudo python3 -m pip install Mopidy-YouTube

Wenn alle gewünschten Addons installiert sind bearbeiten wir nun die Konfigurationsdatei mopidy.conf. Diese liegt für den angemeldeten User im Ordner /home/user/.config/mopidy (Beispiel für pi: /home/pi/.config/mopidy/mopidy.conf). Soll Mopidy später als Service unter dem User mopidy laufen gilt der Pfad /etc/mopidy/mopidy.conf.

Egal für welche Variante ihr Euch entscheidet – in der mopidy.conf werden alle zentralen Einstellungen und die der Addons verwaltet. Wir öffnen die Datei mit

sudo nano /etc/mopidy/mopidy.conf bzw.

sudo nano /home/pi/.config/mopidy/mopidy.conf

Im Abschnitt [core] werden die benutzen Verzeichnisse definiert

Wer Mopidy als Service laufen lassen möchte verwendet folgende Einstellung,

[core]
cache_dir = /var/cache/mopidy
config_dir = /etc/mopidy
data_dir = /var/lib/mopidy

wer Mopidy als User pi startet verwendet stattdessen

[core]
cache_dir = $XDG_CACHE_DIR/mopidy
config_dir = $XDG_CONFIG_DIR/mopidy
data_dir = $XDG_DATA_DIR/mopidy

in beiden Varianten gefolgt von

max_tracklist_length = 10000
restore_state = false

Alle weiteren Einstellungen am besten so wie bei mir übernehmen.

[logging]
verbosity = 1
format = %(levelname)-8s %(asctime)s [%(process)d:%(threadName)s] %(name)s\n %(message)s
color = true


mixer = software
mixer_volume = 90
output = autoaudiosink
buffer_time = 1000

[local]
media_dir = /music

[file]
enabled = true
media_dirs = /music
excluded_file_extensions =
.directory
.html
.jpeg
.jpg
.log
.nfo
.pdf
.png
.txt
.zip
show_dotfiles = false
follow_symlinks = false
metadata_timeout = 1000

[http]
enabled = true
hostname = 0.0.0.0
port = 6680
zeroconf = Mopidy HTTP server on $hostname
csrf_protection = true
default_app = mopidy

[mpd]
enabled = true
hostname = 0.0.0.0
port = 6600
password =
max_connections = 20
connection_timeout = 60
zeroconf = Mopidy MPD server on $hostname
command_blacklist =
listall
listallinfo
default_playlist_scheme = m3u

[m3u]
enabled = true
base_dir = /music
default_encoding = latin-1
default_extension = .m3u8
playlists_dir = /music/playlists

[softwaremixer]
enabled = true

[tunein]
enabled = true
timeout = 5000

Um Mopidy-Spotify nutzen zu können benötigen wir API Zugriff auf Spotify. Die client_id und das client_secretbekommt ihr hier.

[spotify]
enabled = true
username = DEIN_SPOTIFY_USERNAME
password = DEIN_SPOTIFY_PASSWORT
client_id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
client_secret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
bitrate = 160
volume_normalization = true
private_session = false
timeout = 10
allow_cache = true
allow_network = true
allow_playlists = true
search_album_count = 20
search_artist_count = 10
search_track_count = 50
toplist_countries =

Ähnlich ist es bei SoundCloud. Hier benötigen wir einen auth_token welchen wir hier bekommen.

[soundcloud]
enabled = true
explore_songs = 25
auth_token = x-xxxxx-xxxxxxxxx-xxxxxxxxxxxxxxx

Für den Zugriff auf Last.FM genügen Benutzername und Passwort.

[scrobbler]
enabled = true
username = DEIN_LASTFM_USERNAME
password = DEIN_LASTFM_PASSWORT

Etwas komplizierter wird es bei Youtube. Hierfür benötigen wir einen youtube_api_key. Eine einfaches Videotutorial wie man diesen erstellt bzw. bekommt gibt es hier.

[youtube]
enabled = true
youtube_api_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
api_enabled = false
threads_max = 16
search_results = 15
playlist_max_videos = 20

Nun werden noch die Podcast-Quellen eingerichtet. Die Datei podcasts.opml ist eine XML-Datei welche in meinem Beispiel im Ordner /music/podcasts liegt. Diese kann man ganz leicht selbst erstellen oder z.B. in iTunes erzeugen.

[podcast]
enabled = true
browse_root = /music/podcasts/podcasts.opml
browse_order = desc
lookup_order = asc
cache_size = 64
cache_ttl = 86400
timeout = 10

Noch einfacher geht es bei diesem Addon. Hier übernimmt Apple die Verwaltung des Podcast-Verzeichnisse und sortiert dieses für uns nach Genres. Da das Verzeichnis öffentlich ist wird auch keine weitere Authentifizierung benötigt.

[podcast-itunes]
enabled = true
base_url = http://itunes.apple.com/
country = DE
explicit = Yes
charts = audioPodcasts
charts_limit = 20
search_limit = 20
timeout = 10
retries = 3

Wurde Mopidy für einen User z.B. pi eingerichtet so lässt sich Mopidy durch einfach durch Eingabe von

mopidy

starten. Möchtet ihr Mopidy als Service starten bzw. später beim Hochfahren des RaspberryPis starten lassen so müssen wir es zunächst in die Liste der Systemdienste aufnehmen. Das geschieht ganz einfach mit

sudo systemctl enable mopidy

Danach können wir Mopidy mit

sudo systemctl start mopidy

starten. Das Programm läuft nun als Prozess im Hintergrund.

Bei beiden Varianten dauert es je nach Anzahl und Typ der aktivierten Module bis zu zwei Minuten bis Mopidy fertig geladen ist. Gerade bei Spotify werden im Hintergrund jede Menge Daten und Playlists geladen.

Den Webclient erreichen wir im Browser unter http://192.168.1.74:6680/. Wenn nichts schiefgegangen ist, begrüßt uns Mopidy mit folgendem Bild. Die jeweiligen installierten Webclients erreicht ihr mit Klick auf den Link – in unserem Beispiel iris oder mobile).

Feintuning

Die folgenden Erweiterungen können erst nach erfolgreicher Installation von Mopidy eingerichtet werden. In meinem Beispiel sind sie erst Tage bzw. Wochen später hinzugekommen.

ncmpcpp als Client

In unserer bisherigen Konfiguration wurden nur Webclients eingerichtet um Mopidy zu steuern. Mit ncmpcppgibt es ein Programm mit dem man Mopidy über ein Terminal steuern kann. Alle Funktionen sind möglich und man benötigt dafür kein Betriebssystem mit grafischer Benutzeroberfläche und auch keinen Browser.

In meinem Fall war es ein alter RaspberryPi 1B mit Monitor, welcher bisher in der Werkstatt für die Überwachungskamera zuständig war, der mit neuen Funktionen ausgestattet wurde. Zugriff auf Internet-Radiostreams, auf Spotify, SoundCloud, Youtube und das nur vom Terminal aus – das ist schon irgendwie cool.

Die Installation wird mit

sudo apt-get install ncmpcpp

gestartet und das war es auch schon. Wichtig ist, dass Mopidy-MPD installiert und der entsprechende Konfigurationsabschnitt in der mopidy.conf vorhanden ist. Eine Übersicht der Tastaturbelegung findet ihr hier.

Letzte Änderung — Kai Ortelt 2020/03/24 15:26