AUDIO JADAT Anleitungen Produktionen Noten Impressum
AUDIO JADAT Produktionen Noten Anleitungen Impressum
Header

Internet Livestream einrichten

Vorraussetzungen

Um eine Veranstaltung über einen Internetradiostream zu auszustrahlen, empfangen und zu hören werden 3 Instanzen benötigt auf die hier eingegangen werden soll. Dies sind:

Im folgenden wird eine grundlegende Einrichtung vorgenommen und dokumentiert, die in vielfacherweise erweiterbar ist, für viele Leser jedoch schon ausreichen sollte.
Das Ziel ist es möglichst einfach ein laufendes System herzurichten und es dabei auch zu verstehen.

Der Verteiler

Um einen Server zu betreiben, wird zuerst die passende Hardware benötigt.
Es ist möglich einen Raspberry Pi, einen alten PC oder Laptop oder einen gemieteten Server zu benutzen. Wichtig ist hierbei das er eine echte eigene IPv4-Adresse besitzt, da dies heutzutage bei einen Standard Internetanschluss nicht mehr selbstverständlich ist, sondern oft vom Anbieter gebündelt wird. In dieser Anleitung gehen wir deshalb von einem vServer aus, dieser hat ideale Vorraussetzungen und selbstverständlich eine IPv4 Adresse.
Anbei Anbieter, deren vServer ich bereits erfolgreich dazu benutzt habe.

Diese beiden sind hier nur beispielhaft, es gibt auch viele weitere Anbieter. Falls die Wahl zwischen mehr RAM oder mehr Speicher getroffen werden muss, würde ich zu mehr RAM raten, falls viele Hörer erwartet werden. In der Regel werden vServer in 48h oder weniger zur Verfügung gestellt.
Erfahrungswerte zeigen, dass mit 8 GB RAM und 100 Mbit/s 150 Zuhörer und mehr möglich sind. Wobei die Bandbreite bei einem 128kbps MP3-Stream hierbei noch lange nicht ausgeschöpft ist.
Als Betriebssystem sollte ein Linux-Betriebsystem verwendet werden, wie z.B. Ubuntu 18.04 oder die neue Version Ubuntu 20.04.

Um den vServer auch zu benutzten, müssen die entsprechenden Programme installiert werden. Zum Betrieb eines Webservers über den eine Webseite abgerufen wird, muss z.B. Apache oder Nginx installiert werden. Zum Betrieb eines Webradios wird Icecast oder Shoutcast benötigt. Für das aktuelle Beispiel werden wir Icecast benutzen.

Einloggen auf dem Server

Sobald der bestellte Server betriebsbereit ist, werden die jeweiligen Zugangsdaten vom Betreiber mitgeteilt.
Wichtig sind folgende beiden Informationen: Die IP-Adresse sowie das root-Passwort (Passwort des Benutzers root).
Zum einloggen kann i.d.R. das Terminal bei jedem üblichen Linux oder Mac benutzt werden oder auch die PowerShell unter Windows. Des Weitern ist es möglich Apps wie z.B. termius auf dem iPad zu verwenden.
Vorsicht bei der PowerShell von Windows, da Sie teilweise sehr ähnliche Farben für den Text und den Hintergrund verwendet, sodass das lesen nahezu unmöglich wird. Alternativ kann unter Windows ein Programm wie zB. PuTTY (Download) verwendet werden.
Folgender Aufruf muss in dem Terminal(Linux/Mac) oder in der PowerShell(Windows) eingetippt werden um sich einzuloggen (Mit der richtigen Server-IP).
Beispiel:
ssh root@5.132.136.2

Das Format ist hierbei: ssh Benutzername@IP-Adresse
Beim ersten Anmelden kommt eine Meldung das diese Verbindung nicht bekannt ist. Dies kann bestätigt werden. Wenn alles erfolgreich war, wird der Server sie willkommen heißen.
Unter Linux ist es nicht üblich mit dem root Nutzer zu arbeiten, da er für alles Adminrechte hat. Aus eigener Erfahrung wird er auch bei Hackern/Hackertools besonders häufig probiert.
Wer das nicht glaubt und sich selbst vergewissern will kann es gerne tun. Mit folgendem Befehl sehen sie live alle fehlgeschlagenen Loginversuche (Kann übersprungen werden):
tail -F /var/log/auth.log

Nach 1 Minute sollten schon die ersten Versuche zu sehen sein. Mit Strg+C lässt sich diese Anzeige beenden.

Neuen Benutzer anlegen

Mit folgendem Befehl legen wir einen neuen Benutzer mit dem Benutzernamen radio an sowie sein sicheres Passwort:

adduser radio

Es werden mehrere weitere Informationen abgefragt, die auch leer gelassen werden können.
Damit er mithilfe des Passworts auch Aktionen ausführen kann die root-Rechte erfordern, fügen wir ihn der Gruppe sudo hinzu.

usermod -aG sudo radio

Nun wechseln wir in den neuen Benutzer:
su radio

Falls wir nicht ohnehin im home-Verzeichnis sind, wechseln wir dahin:
cd /home/radio


An dieser Stelle eine Kurzübersicht der Befehle:

Ab jetzt sollten wir zum einloggen den neuen Benutzer (mit unserer IP) benutzen:

ssh radio@5.132.136.2

Webradiosoftware Icecast installieren

Um nun Icecast zu installieren starten wir die Installation wie folgt:

sudo apt-get install icecast2

Alle Anfragen sind zu bestätigen und das Passwort einzugeben.
Anschließend erscheint folgende Oberfläche:

Screenshot

Hier mit der TAB-Taste Yes auswählen und mit der Konfiguration beginnen.
Bei der Frage nachdem Icecast2 hostname kann die Adresse eingetragen werden, die der Server hat. Ist aber nicht so wichtig.
Bitte die vergebenen Passwörter sicher gestalten und notieren. Das source Passwort ist hierbei für den Sender und besonders wichtig.

Erster Zwischentest

Prinzipiell sollte der Server nun funktionsfähig sein, deshalb werden wir dies jetzt Mal testen.
Gebe folgende URL in einen beliebigen Browser ein (mit deiner Server-IP):
http://5.132.136.2:8000

Daraufhin sollte eine leere Statusseite von Icecast im Browser erscheinen.
Wenn dies der Fall ist kann ein Teststream mit folgenden Zugangsdaten gestartet werden: Nach dem Starten des Streams sollte dieser (mit deiner IP) im Browser unter folgender Adresse zu erreichen sein:
http://5.132.136.2:8000/stream

Konfigurationseinstellungen ändern

Um zB. die maximale Zuhörerzahl zu erhöhen und weitere Modifikationen vorzunehmen muss die Konfigurationsdatei geändert werden. Diese öffnen wir mit einem Editor wie zB. vim oder nano wie folgt:

sudo nano /etc/icecast2/icecast.xml

In der nun geöffneten Datei befindet sich im Abschnitt ‹limits› die Angabe clients. Der hier eingetragene Zahlenwert ist die maximale Zuhörerzahl, diese kann bei Bedarf angepasst werden. Die Navigation erfolgt über die Pfeiltasten der Tastatur. Mit STRG+O wird die Datei gespeichert, dieser Vorgang muss mit Enter bestätigt werden. Die Icecastpasswörter können auch in dieser Datei geändert werden. Anschließend können wir die Datei mit STRG+X wieder schließen. Grundsätzlich ist der Stream nun funktionsfähig und kann mit dem Link eingesetzt werden.

Unterbrechungsfreier Stream

Der Stream hat aber noch einiges an Verbesserungspotential.
Sobald er nicht verfügbar ist stoßen die Hörer auf eine 404-Errorseite. Stattdessen ist es möglich ohne Sendung eine Playlist, Stille oder auch andere Streams 24h/7 abzuspielen. Des Weitern werden wir auch eine einfache Möglichkeit einbauen, einen anderen Stream zu kopieren. Dies hat den Vorteil, dass die Hörer unseres Streams über die gleiche Adresse die andere Veranstaltung hören können und wir die andere Veranstaltung deren Stream wir weiterleiten entlasten (Dies muss natürlich abgesprochen werden!).

Möglichkeiten Dateien mit dem Server auszutauschen

Um unsere Audiodateien für den Livestream auf den Server zu kopieren, können wir ftp,scp,ftps oder auch https mit einem Webserver usw. nutzen.
Achtung! Jede Schnittstelle die wir einrichten erleichtert uns die Arbeit, bietet aber Hackern auch weiteres Angriffspotential!.
Die recht sichere und verschlüsselte Methode (unter Linux) per scp funktioniert wie folgt (Beispiel):
scp Quelldatei.txt user@ZielServerIP:/home/user/

Der Nachteil hierbei ist, dass dies für jede Datei gemacht werden muss bzw. eine Schleife geschrieben werden muss. Das würde an dieser Stelle aber zu weit gehen. Eine einfache Variante unter Ubuntu ist das öffnen im Dateimanager (Nautilus). Hier kann man auf das Plus für andere Orte klicken und durch eintragen der Serverdaten, diesen ähnlich wie einen USB-Stick einbinden.
Screenshot
Unter Windows ist es zu empfehlen ein passendes Programm wie z.B. WinSCP oder FileZilla Client zu nutzen (Download). Oder unter Linux/Windows und Mac kann FileZilla Client benutzt werden (Download). Nach der Installation können die bereits bekannten Anmeldedaten benutzt werden. Im folgenden ein Beispiel mit FileZilla. Screenshot Es ist egal welche, jedoch sollte nach diesem Abschnitt eine Möglichkeit zur Verfügung stehen, eigene Dateien mit dem Server auszutauschen. Falls dies nicht klappt oder nicht gewünscht ist, können auch die vorgefertigten Beispieldateien benutzt werden.

Liquidsoap Einrichtung und Installation

Um liquidsoap zu installieren geben wir folgendes im Terminal ein:
sudo apt install liquidsoap

Nach der Installation erstellen wir einen Ordner für das Radioskript, die Playback Audiodateien usw.
mkdir webradio

Anschließend wechseln wir in diesen Ordner mit folgendem Befehl:
cd webradio

Nun laden wir uns ein bestehendes Radioskript herunter, dieses wird hier zur freien Verfügung gestellt.
wget https://audio-jadat.de/anleitungen/internetradio/radio.liq

Mit dem Befehl ls können wir nun kontrollieren ob sich die Datei tatsächlich im Ordner befindet.
ls

Es sollte sich die Datei radio.liq im Ordner befinden. Diese öffnen wir nun mit einem Editor:
nano radio.liq

Im letzten Abschnitt der Datei, müssen wir nun unsere Daten eintragen. Der hier angegebene mountpoint ist der endgültige, welcher dann 24h/7 läuft. Mit STRG+O speichern wir und beenden mit STRG+X.

Security Audiodatei

Im Radioskript ist definiert, dass wenn weder ein Livestream noch eine Playlist verfügbar ist die Datei backup.mp3 abgespielt werden soll. Diese muss nun zwingend in den Ordner gelegt werden. Der Inhalt kann frei gestaltet werden, denkbar wäre eine Meldung die darauf hinweist das technische Probleme vorliegen (falls wir eine Playlist erstellen wollen). Oder das der Livestream noch nicht begonnen hat. Oder ganz einfach Stille, in diesem Fall können wir eine passende MP3 wie folgt herunterladen:
wget https://audio-jadat.de/anleitungen/internetradio/backup.mp3

Nun muss das Skript ausführbar gemacht werden:
chmod +x radio.liq

Und kann anschließend ausprobiert werden:
./radio.liq

Dieses Skript läuft natürlich nur, wenn wir aktuell am Server angemeldet sind und es noch nicht beendet haben. Diese Vorgehensweise eigenet sich aber gut für Tests, wenn etwas am Skript geändert wird. In Liquidsoap können z.B. feste Zeiten und Tage für bestimmte Playlists oder Titel festgelegt werden, Normalizer, Low-Cut usw. angewendet werden. Mehrere Streams in verschiedenen Qualitäten gesendet werden usw. Das aktuelle Skript ist nur ein einfaches Grundgerüst und darf gerne modifiziert und verändert werden.

Der 24h/7 Betrieb

Um unser Radioskript rund um die Uhr laufen zu lassen, erstellen wir einen Dienst der diese Aufgabe ausführt.
Um den Dienst zu erstellen, gehen wir in das Diensteverzeichnis von systemd:
cd /etc/systemd/system/

Nun erstellen wir einen Dienst mit dem Namen 'liquidsoapradio.service'.
sudo nano liquidsoapradio.service

In dem sich nun öffnenden Editor geben wir folgendes ein oder kopieren es hinein. Dabei sollte darauf geachtet werden, dass es mit den Pfaden auf eurem Server übereinstimmt.
[Unit]
Description=LiquidSoap Stream
After=network-online.target

[Service]
ExecStart=/home/radio/webradio/radio.liq
Restart=always
WorkingDirectory=/home/radio/webradio
User=radio
Group=radio

[Install]
WantedBy=network-online.target

Mit STRG+O speichern wir den Dienst und schließen den Editor mit STRG+X.
Nun schreiben wir den Dienst in den Autostart indem wir folgendes eintippen und bestätigen:
sudo systemctl enable liquidsoapradio

Dies ist zwar nicht zwingend notwendig, da der Server normalerweise immer anbleibt, jedoch hilfreich da er manchmal im Falle von Wartungsarbeiten es Server-Hosters doch heruntergefahren wird. Sollte die Einstellung nicht mehr gewünscht sein kann sie mit demselben Befehl und 'disable' rückgängig gemacht werden.

Den Liquidsoap-Dienst steuern.

Folgende Befehle sind in der Praxis sehr hilfreich (Kommentar hinter der Raute):
sudo systemctl start liquidsoapradio #Startet den Dienst
sudo systemctl stop liquidsoapradio #Beendet den Dienst
sudo systemctl status liquidsoapradio #Zeigt den Status an
sudo systemctl restart liquidsoapradio #Startet den Dienst neu

Mit start und stop können wir den Stream an und ausschalten, wobei status anzeigt, ob der Dienst aktiv ist und läuft und auch Probleme anzeigt.
Mit restart lässt sich ein Neustart des Dienstes bewerkstelligen. Dies ist auch einen Versuch wert, falls der Stream aus unerklärlichen Gründen Probleme haben sollte.

Inbetriebnahme

Wir starten nun den stream mit dem Befehl:
sudo systemctl start liquidsoapradio

Nun kontrollieren wir den Status, der jetzt 'active (running)' sein sollte:
sudo systemctl status liquidsoapradio

Jetzt sollte auch der Stream der am Ende des radio.liq Skripts angegeben ist verfügbar sein und die Backup-Datei abspielen. Dies kann im Browser getestet werden, in unserem Fall ist nichts zu hören, da die Backup-Datei nur Stille enthielt.

Playlist konfiguieren

Um nun die Playlist zu erstellen, die abgespielt werden soll wechseln wir wieder in den erstellten Ordner.
cd /home/radio/webradio

Im Prinzip können wir nun eine Textdatei mit dem Namen playlist.m3u erstellen in der wir die Pfade zu den MP3 Dateien einzeln eintragen.
Dies werden wir uns aber etwas vereinfachen:
Wir erstellen einen Ordner mit dem Namen 'content':
mkdir content

In diesen kopieren wir alle MP3-Dateien die in die Playlist sollen (z.B mit FileZilla).
Wenn alle gewünschten Dateien enthalten sind, laden wir ein Skript herunter, dass aus den Dateien eine Playlist erstellt:
wget https://audio-jadat.de/anleitungen/internetradio/Create_Playlist.sh

Dann machen wir das Skript ausführbar und führen es aus:
sudo chmod +x Create_Playlist.sh
./Create_Playlist.sh

Nun müsste im Ordner eine Playlist mit dem Namen 'playlist.m3u' existieren. Die können wir mit ls kontrollieren.
Zum Schluss wird der Liquidsoapdienst neu gestartet und die Playlist wird geladen.
sudo systemctl restart liquidsoapradio

Das war es, jetzt sollte der Stream funktionieren und die Audiodateien wiedergeben und sobald eine Anmeldung mit dem dem mountpoint livestream.mp3 erfolgt, automatisch auf die Veranstaltung umschalten.