SHOUTcast-Internetradio selbst betreiben

Einen eigenen Internetradiosender aufzusetzen ist technisch überschaubarer als man denkt. Dieser Beitrag erklärt die Grundkomponenten: SHOUTcast DNAS als Streaming-Server, Icecast als Alternative, und wie Clients und Encoder zusammenspielen.

Architektur eines Streaming-Setups

Ein Internetradio-Setup besteht aus drei Schichten:

  • Encoder/Quelle: Erzeugt den Audiostrom (sc_trans, Liquidsoap, BUTT, Mixxx)
  • Streaming-Server: Nimmt den Feed entgegen und verteilt ihn an Hörer (SHOUTcast DNAS, Icecast)
  • Clients: Spielen den Stream ab (Browser, VLC, Winamp, native Apps)

SHOUTcast DNAS installieren

# SHOUTcast DNAS v2 herunterladen (Nullsoft/Radionomy)
wget https://download.nullsoft.com/shoutcast/tools/sc_serv2_linux_x64-latest.tar.gz
tar xzf sc_serv2_linux_x64-latest.tar.gz -C /opt/shoutcast/

# Minimalste Konfiguration (sc_serv.conf):
portbase=8000
password=quellenpasswort
adminpassword=adminpasswort
maxlisteners=50
streamtitle=Mein Radio
streamurl=http://meinserver.example.com

SHOUTcast als systemd-Dienst

[Unit]
Description=SHOUTcast DNAS v2
After=network.target

[Service]
Type=simple
User=shoutcast
ExecStart=/opt/shoutcast/sc_serv /opt/shoutcast/sc_serv.conf
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target

Mehrere Streams (Mounts)

SHOUTcast DNAS v2 unterstützt mehrere Stream-IDs parallel. Jede ID kann einen anderen Encoder als Quelle haben:

# Stream 1: MP3, 128k
streamid_1=1
streampath_1=/stream

# Stream 2: AAC+, 64k
streamid_2=2
streampath_2=/stream-mobile

Reverse Proxy mit nginx

Um den Stream über Port 80/443 zugänglich zu machen, eignet sich nginx als Reverse Proxy:

location /stream {
    proxy_pass http://127.0.0.1:8000/stream;
    proxy_set_header Host ;
    proxy_set_header X-Real-IP ;
    # Wichtig für Live-Streams: kein Puffern
    proxy_buffering off;
    proxy_cache off;
}

Player-Einbindung

Die einfachste Einbindung in eine Website nutzt das HTML5-Audio-Element:

<audio controls>
  <source src="https://meinserver.example.com/stream" type="audio/mpeg">
  Dein Browser unterstützt kein HTML5-Audio.
</audio>

Für Autoplay mit Fallback und Reconnect bei Verbindungsabbruch empfiehlt sich eine JavaScript-Lösung oder AzuraCast als Frontend — das integriert Player, Playlist-Anzeige und Jingle-Scheduling in einer Web-Oberfläche.

Bandbreite kalkulieren

Faustregel: Bitrate × gleichzeitige Hörer = Upload-Bedarf. 128 kbps × 50 Hörer = ~6,4 Mbit/s Upload dauerhaft. Wer mehr Reichweite will, sollte auf CDN-Relay-Dienste oder verteilte Icecast-Relays setzen.