Schnellstart

Du hast einen frischen Linux-Server und willst DGNCast Panel in Betrieb nehmen? In unter 10 Minuten fertig.

Vorbereitungen (einmalig durch Heiko)

  1. 1
    DGNCast-Lizenz anlegen Lizenz für die Server-Domain des Kunden eintragen (wird von Heiko erledigt).
  2. 2
    HDEncoder-Lizenz anlegen HDEncoder-Lizenz für dieselbe Domain – wird von Heiko eingetragen.
  3. 3
    DNS-Eintrag setzen A-Record für die Panel-Domain auf die Server-IP. DNS muss propagiert sein bevor der Installer läuft.

Installation (als Root auf dem Server)

ssh root@dein-server.de
curl -fsSL https://cast.dgnshop.com/setup/install.sh | bash

Der Installer fragt interaktiv nach Domain, E-Mail und Admin-Passwort. Fertig nach ca. 5–8 Minuten.

Fertig!

Nach der Installation erreichst du das Panel unter https://deine-domain.de/admin. Direkt als Nächstes: DGNCast-Server verbinden →

Nicht-interaktiv (für Automation)

INSTALL_DOMAIN=panel.kunde.de \
INSTALL_EMAIL=admin@kunde.de \
PANEL_ADMIN_PASS='langes-passwort' \
bash -c "$(curl -fsSL https://cast.dgnshop.com/setup/install.sh)"

Voraussetzungen

Server-Anforderungen

AnforderungMinimumEmpfohlen
BetriebssystemDebian 12 / Ubuntu 22.04Debian 13 / Ubuntu 24.04 LTS
RAM1 GB2 GB
Disk10 GB20 GB+
ZugangRoot (SSH)Root (SSH)
Empfohlener HosterHetzner CX22 (ca. 5 EUR/Monat)

DNS-Voraussetzung

Du brauchst einen A-Record für deine Panel-Domain, der auf die Server-IP zeigt:

panel.deine-domain.de.  IN  A  1.2.3.4
Wichtig

Der DNS muss vollständig propagiert sein bevor du den Installer startest. Sonst schlägt Let's Encrypt fehl. Warte mindestens 5 Minuten nach dem Setzen des Eintrags.

Lizenzen (durch Heiko einzutragen)

Vor dem Install müssen zwei Lizenzen im Backend eingetragen sein:

  1. DGNCast-Lizenz – mit der exakten Panel-Domain als Scope (wird von Heiko eingetragen)
  2. HDEncoder-Lizenz – selbe Domain wie die DGNCast-Lizenz (wird von Heiko eingetragen)

Der Installer zieht die Lizenzen automatisch, du musst nichts eintragen.

Plesk-Server

Der Installer erkennt Plesk automatisch (/usr/local/psa oder /opt/psa). Apache-VHost und UFW werden dann übersprungen. Die Anleitung für die manuelle Konfiguration findest du nach der Installation unter /opt/dgncast-panel-php/PLESK-SETUP.txt.

Server installieren

Installer-Befehl

ssh root@dein-server.de
curl -fsSL https://cast.dgnshop.com/setup/install.sh | bash

Interaktive Abfragen

Was der Installer macht (12 Phasen, ca. 5–8 Min.)

  1. Konfiguration sammeln + DGNCast-Lizenz vom Lizenzserver ziehen
  2. System-Pakete: curl, wget, jq, PHP 8.5 + Extensions
  3. HDEncoder PHP-Extension installieren + Lizenz automatisch freigeben
  4. Apache 2 + SSL-Module aktivieren
  5. Certbot für Let's Encrypt
  6. Node.js 22 LTS + ffmpeg
  7. Systemd-User + Panel-Verzeichnis /opt/dgncast-panel-php
  8. Panel-Tarball entpacken
  9. DGNCast-Server-Tarball entpacken + npm install
  10. Zwei systemd-Services starten (Panel Port 8090, DGNCast-Server Port 8010)
  11. Apache-VHost + SSL-Zertifikat + UFW-Firewall
  12. Verifikations-Report generieren
Verifikations-Report

Am Ende erscheint in der FERTIG-Box ein Link zu einem HTML-Report. Dort siehst du alle 10 Checks auf einen Blick (Services, SSL, Lizenz, PHP-Extensions, ...).

Nach der Installation

Das Panel ist erreichbar unter:

https://deine-panel-domain.de/admin

Login: Benutzername admin, Passwort wie beim Install eingegeben.

Erster Schritt nach dem Login

Den DGNCast-Server verbinden! Ohne das können keine Streams angelegt werden. Weiter mit: DGNCast-Server verbinden →

DGNCast-Server verbinden

Das Panel verwaltet Streams, der eigentliche Streaming-Dienst ist der DGNCast-Server – ein Node.js-Dienst der nach der Installation bereits läuft.

Standard-Konfiguration (alles auf einem Server)

Wenn Panel und DGNCast-Server auf demselben Rechner laufen (Normalfall nach automatischer Installation):

FeldWert
Base URLhttp://127.0.0.1:8010
API-Usernameadmin
API-PasswortDein Panel-Admin-Passwort (gleich wie beim Login)
Anzeigenamez.B. Hauptserver
Tipp: Auto-Ausfüllen

Im Panel unter Server → Neuen Server verbinden gibt es den Button "Felder mit Standardwerten ausfüllen" – ein Klick, dann nur noch das Passwort eingeben und auf Verbinden & Test klicken.

API-Passwort nachschlagen

Falls du das Passwort nicht mehr weißt, findest du es auf dem Server:

cat /opt/dgncast/config.json | grep password

Verbindungstest schlägt fehl?

Externer Server (fortgeschritten)

Du kannst auch einen DGNCast-Server auf einem anderen Rechner verbinden. Trage als Base URL die externe IP oder Domain ein, z.B. http://stream.deine-domain.de:8010. Port 8010 muss in der Firewall freigegeben sein.

Sicherheitshinweis

Wenn der DGNCast-Server extern erreichbar ist, unbedingt ein starkes API-Passwort verwenden und Port 8010 nur für bekannte IPs freigeben.

Pläne anlegen

Pläne definieren die Ressourcen die einem Stream oder Kunden zur Verfügung stehen (Bitrate, Hörer-Slots, Speicher).

Neuen Plan anlegen

  1. 1
    Im Panel: Pläne → Neuen Plan erstellen
  2. 2
    Name vergeben (z.B. "Starter 128k", "Pro 320k")
  3. 3
    Bitrate-Limit in kbps, max. gleichzeitige Hörer und Speicher-Kontingent eintragen
  4. 4
    Speichern

Typische Plan-Konfigurationen

PlanBitrateHörerSpeicher
Starter128 kbps50500 MB
Standard192 kbps2002 GB
Pro320 kbpsunbegrenzt10 GB
Hinweis

Pläne können nachträglich geändert werden. Die Änderung greift beim nächsten Stream-Neustart.

Kunden anlegen Nur Reseller-Tier

Im Reseller-Tier kannst du Unterkonten für deine Kunden anlegen. Jeder Kunde sieht nur seine eigenen Daten und Streams.

Neuen Kunden anlegen

  1. 1
    Im Panel: Kunden → Neuen Kunden anlegen
  2. 2
    Name, E-Mail und Passwort eingeben
  3. 3
    Plan zuweisen (vorher anlegen unter Pläne anlegen)
  4. 4
    Optional: Ablaufdatum für zeitbegrenzte Accounts
  5. 5
    Erstellen

Kunden sperren / löschen

Unter Kunden → [Kundenname] → Bearbeiten kannst du Plan, Passwort und Status ändern. Gesperrte Kunden können sich nicht mehr einloggen, ihre Streams werden angehalten.

Standard-Tier

Im Standard-Tier gibt es keine Kundenverwaltung – du verwaltest direkt deine eigenen Streams. Die Kunden-Funktion ist ausschließlich im Reseller-Tier verfügbar.

Streams anlegen

Ein Stream entspricht einem Radiosender. Du kannst mehrere Streams parallel betreiben.

Neuen Stream anlegen

  1. 1
    Im Panel: Streams → Neuen Stream anlegen
  2. 2
    Stream-Name und Beschreibung eingeben
  3. 3
    Bitrate wählen (muss im Plan-Limit liegen)
  4. 4
    Mount-Point festlegen, z.B. /radio oder /live
  5. 5
    Passwort für Broadcastsoftware setzen
  6. 6
    Stream erstellen

Sendesoftware verbinden

Verbindungsdaten für BUTT, MIXXX, SAM Broadcaster, Liquidsoap & Co. (Icecast2-kompatibel):

EinstellungWert
Server / Hostdeine-panel-domain.de
Port8010
Mount/radio (dein Mount-Point)
PasswortStream-Passwort (wie beim Anlegen gesetzt)
ProtokollIcecast2
Stream-URL für Hörer

Dein Stream ist erreichbar unter http://deine-panel-domain.de:8010/radio. Diese URL kannst du in deine Webseite einbetten.

Auto-DJ & Playlist

Der Auto-DJ ist das automatische Musikprogramm deines Senders. Immer wenn gerade kein DJ live sendet, spielt der Auto-DJ deine hochgeladenen Titel ab – rund um die Uhr, ohne dass jemand davorsitzen muss. So ist dein Sender 24 Stunden am Tag auf Sendung.

Sobald sich ein echter DJ mit seiner Sendesoftware verbindet, schaltet der Server automatisch von der Auto-DJ-Musik auf den Live-DJ um. Geht der DJ wieder offline, springt der Auto-DJ nach wenigen Sekunden von selbst wieder ein. Du musst dafür nichts umschalten.

Voraussetzung: Auto-DJ muss aktiv sein

Der Auto-DJ wird pro Stream vom Betreiber (Admin) freigeschaltet. Wenn du im Tab Musik die Meldung „AutoDJ ist deaktiviert“ siehst, wende dich an deinen Anbieter, damit er den Auto-DJ für deinen Stream einschaltet. Erst danach kannst du Titel hochladen.

Schritt 1: Zur Musik-Verwaltung wechseln

  1. 1
    Im Panel deinen Stream öffnen (auf den Stream klicken).
  2. 2
    Oben auf den Reiter Musik klicken. Hier verwaltest du die komplette Auto-DJ-Playlist.

Schritt 2: Titel hochladen

Es gibt zwei Wege, Musik hinzuzufügen – beide führen zum selben Ziel:

  1. 1
    Per Drag & Drop: Ziehe eine oder mehrere Musikdateien direkt vom Datei-Explorer in das große Feld „Dateien hierher ziehen“.
  2. 2
    Oder per Auswahl: Auf Dateien auswählen klicken und im Fenster die gewünschten Titel markieren (mehrere gleichzeitig mit gedrückter Strg- bzw. Cmd-Taste).
  3. 3
    Der Upload startet sofort. Ein Fortschrittsbalken zeigt dir an, wie viele MB von wie vielen schon übertragen sind. Bei vielen oder großen Dateien kann das einen Moment dauern.
  4. 4
    Sobald der Upload fertig ist, lädt die Seite neu und die neuen Titel erscheinen in der Liste Dateien darunter. Der Auto-DJ bezieht sie automatisch in die Wiedergabe ein.

Unterstützte Dateiformate

FormatHinweis
MP3Empfohlen – klein, überall kompatibel
OGGGute Qualität bei kleiner Dateigröße
FLAC / WAVVerlustfrei, aber große Dateien
M4A / AACWerden ebenfalls akzeptiert

Pro Datei sind maximal 500 MB erlaubt, mehrere Dateien gleichzeitig sind kein Problem.

Titel löschen

  1. 1
    In der Datei-Liste hinter dem Titel auf Löschen klicken und die Sicherheitsabfrage bestätigen.
  2. 2
    Mehrere auf einmal: links die Häkchen setzen (oder „Alle auswählen“) und über die Sammel-Leiste löschen.
Tipp für guten Klang rund um die Uhr

Lade genug Titel hoch (mindestens ein paar Stunden Material), damit der Auto-DJ abwechslungsreich bleibt und sich nichts ständig wiederholt. Die Wiedergabe-Reihenfolge mischt der Server automatisch. Achte darauf, dass alle Titel etwa gleich laut sind – sehr leise und sehr laute Songs direkt nacheinander wirken unprofessionell.

DJ-Zugänge

Ein DJ-Zugang ist ein eigener Benutzername mit Passwort für jeden Moderator oder DJ, der bei dir live senden darf. Jeder DJ bekommt seinen eigenen Zugang – so musst du nie ein gemeinsames Passwort herumreichen, und du siehst später, wer wann gesendet hat.

Schritt 1: Einen DJ-Zugang anlegen

  1. 1
    Im Panel den Stream öffnen und oben auf den Reiter Zugang klicken.
  2. 2
    Im Bereich Neuen DJ anlegen ausfüllen:
FeldWas eintragen
UsernameKurzer Anmeldename, z.B. bob (Buchstaben, Zahlen, Punkt, Bindestrich)
PasswortSicheres Passwort (mindestens 4 Zeichen, gerne länger)
AnzeigenameName, der im Sender erscheint, z.B. DJ Bob
  1. 3
    Auf DJ anlegen klicken. Der neue Zugang erscheint sofort in der Liste Bestehende DJs.

Schritt 2: Der DJ verbindet sich und geht live

Der DJ trägt seine Zugangsdaten in seine Sendesoftware (z.B. BUTT, MIXXX, SAM Broadcaster) ein. Sobald er auf „Verbinden“ klickt, übernimmt er automatisch die Sendung – der Auto-DJ pausiert so lange. Trennt der DJ die Verbindung, läuft der Auto-DJ nach wenigen Sekunden von selbst weiter.

Einstellung in der SendesoftwareWert
Server / Hostdeine-panel-domain.de
Port8010
Mountder Mount-Point des Streams, z.B. /radio
Benutzerder DJ-Username (z.B. bob)
Passwortdas DJ-Passwort
ProtokollIcecast2

Hörer trennen

Falls nötig (z.B. bei einem technischen Problem), kannst du im Tab Zugang über Hörer trennen alle aktuellen Hörer auf einmal vom Stream werfen. Sie können sich danach sofort wieder verbinden – das ist nur ein „Reset“ der Verbindungen, kein Sperren.

Einen DJ-Zugang entfernen

In der Liste Bestehende DJs hinter dem jeweiligen DJ auf Löschen klicken. Der Zugang ist danach sofort ungültig – der DJ kann sich nicht mehr verbinden.

Passwörter sicher behandeln

Gib jedem DJ einen eigenen Zugang und teile die Passwörter nur über einen sicheren Weg mit. Wenn ein DJ nicht mehr sendet, lösche seinen Zugang. Mit dem Auge-Symbol neben dem Passwortfeld kannst du das eingegebene Passwort kurz sichtbar machen, um Tippfehler zu vermeiden.

Statistiken & Hörer

Im Tab Statistiken jedes Streams siehst du auf einen Blick, wie gut dein Sender läuft – wie viele Leute gerade zuhören, wie viele es heute waren und wann am meisten los war.

Die Zahlen im Überblick

KennzahlBedeutung
Aktive HörerWie viele Leute gerade jetzt live zuhören.
Sessions heuteWie oft heute insgesamt jemand eingeschaltet hat (jede Verbindung zählt).
Peak 24hDie höchste Zahl gleichzeitiger Hörer in den letzten 24 Stunden.
Hörer-SessionsGesamtzahl der Verbindungen über den ganzen Zeitraum.

Letzte Hörer-Sessions

Darunter findest du eine Liste der zuletzt verbundenen Hörer mit IP-Adresse, Format (MP3/OGG), Startzeit, Hördauer und verwendetem Player. So erkennst du z.B., ob Hörer lange dranbleiben oder schnell wieder weg sind.

Gesamt-Übersicht im Dashboard

Auf der Startseite des Panels (Dashboard) werden die wichtigsten Zahlen über alle deine Streams zusammengefasst: Hörer jetzt, Hörer heute und der 24-Stunden-Peak. Ideal für den schnellen Blick am Morgen.

Deinen Sender teilen

Jeder Stream hat eine öffentliche Player-Seite mit eingebautem Web-Player. Den Link findest du in den Stream-Einstellungen. Teile ihn mit deinen Hörern oder binde den Stream direkt in deine Webseite ein:

ZweckAdresse
Player-Seite (zum Teilen)der Player-Link aus den Stream-Einstellungen
Direkter Stream (für die eigene Webseite)http://deine-panel-domain.de:8010/radio
Wann gibt es Zahlen?

Statistiken entstehen nur, wenn der Stream läuft (Auto-DJ aktiv oder ein DJ live) und tatsächlich jemand zuhört. Ein frisch angelegter Sender ohne Hörer zeigt also überall 0 – das ist normal und kein Fehler.

Troubleshooting

Panel nicht erreichbar

systemctl status dgncast-panel-php
systemctl status apache2
journalctl -u dgncast-panel-php -n 50

DGNCast-Server läuft nicht

systemctl status dgncast-server
journalctl -u dgncast-server -n 50
# Manuell testen:
curl http://127.0.0.1:8010/api/status

HDEncoder-Fehler (Panel leer oder PHP-Fehler)

php -m | grep hdencoder
# Falls leer: .ini prüfen
ls /etc/php/8.5/*/conf.d/ | grep hdencoder
# Notfall-Repair:
find /usr/lib/php -name hdencoder.so
echo 'extension=hdencoder.so' > /etc/php/8.5/mods-available/hdencoder.ini
phpenmod -v 8.5 hdencoder
systemctl restart dgncast-panel-php

Let's Encrypt schlägt fehl

Häufigste Ursache

DNS noch nicht propagiert. Prüfen: dig +short deine-domain.de A – muss die Server-IP zurückgeben.

# Zertifikat manuell anfordern:
certbot --apache -d deine-panel-domain.de

Lizenz-Fehler beim Install

Wende dich in diesem Fall direkt an Heiko – er kann den Lizenzstatus prüfen und korrigieren.

Alle Services neu starten

systemctl restart dgncast-panel-php dgncast-server apache2

Installer erneut ausführen

Der Installer ist idempotent – kann auf einem bestehenden Server nochmal ausgeführt werden.

curl -fsSL https://cast.dgnshop.com/setup/install.sh | bash

FAQ

Kann ich das Panel auf einem Plesk-Server installieren?

Ja. Der Installer erkennt Plesk automatisch. Die VHost-Konfiguration machst du dann manuell nach der Anleitung in /opt/dgncast-panel-php/PLESK-SETUP.txt.

Welche Sendesoftware wird unterstützt?

Alles Icecast2-kompatible: BUTT, MIXXX, SAM Broadcaster, Rocket Broadcaster, Liquidsoap, Traktor (mit Plugin) u.v.m.

Können Panel und DGNCast-Server auf verschiedenen Servern laufen?

Ja. Du kannst unter Server → Neuen Server verbinden beliebige externe URLs eintragen. Port 8010 muss in der Firewall freigegeben sein.

Wie viele Hörer kann ein Server verkraften?

Abhängig von der Netzwerkbandbreite. Faustformel: 1 Mbit/s Upload = ca. 7 Hörer bei 128 kbps. Ein Hetzner CX22 (20 TB Traffic) reicht für die meisten kleinen bis mittleren Sender.

Was passiert wenn meine Lizenz abläuft?

Das Panel zeigt eine Warnung an. Kontakt: support@dgnshop.com

Gibt es eine API?

Der DGNCast-Server hat eine REST-API intern auf Port 8010. Das Panel selbst hat aktuell keine öffentliche API.

Wie sichere ich die Konfiguration?

Siehe Backup & Wiederherstellung.

Backup & Wiederherstellung

Was sichern?

Datei / VerzeichnisInhaltWichtigkeit
/opt/dgncast-panel-php/config.jsonAdmin-PW, Lizenz, DB-PfadKritisch
/opt/dgncast-panel-php/data/SQLite-DB mit Streams, Kunden, ServernKritisch
/opt/dgncast/config.jsonDGNCast-Server-Konfiguration, API-PWWichtig
/etc/letsencrypt/SSL-ZertifikateOptional (erneuerbar)

Backup-Skript

#!/bin/bash
STAMP="$(date +%F-%H%M)"
BACKUP="/root/backups/panel-$STAMP"
mkdir -p "$BACKUP"
cp /opt/dgncast-panel-php/config.json "$BACKUP/"
cp -r /opt/dgncast-panel-php/data/ "$BACKUP/data/"
cp /opt/dgncast/config.json "$BACKUP/dgncast-config.json"
tar czf "$BACKUP.tar.gz" "$BACKUP/" && rm -rf "$BACKUP"
echo "Backup: $BACKUP.tar.gz"

Cronjob (täglich um 3 Uhr)

# crontab -e
0 3 * * * /root/backup-panel.sh >> /var/log/panel-backup.log 2>&1

Wiederherstellung

systemctl stop dgncast-panel-php
tar xzf /root/backups/panel-DATUM.tar.gz -C /tmp/
cp /tmp/panel-DATUM/config.json /opt/dgncast-panel-php/
cp -r /tmp/panel-DATUM/data/ /opt/dgncast-panel-php/data/
chown -R dgncast-panel-php:dgncast-panel-php \
  /opt/dgncast-panel-php/data \
  /opt/dgncast-panel-php/config.json
systemctl start dgncast-panel-php
Offsite-Backup

Kopiere das .tar.gz regelmäßig auf einen anderen Server oder in Cloud-Storage. Die Konfigurationsdateien sind sehr klein (< 1 MB).