Schnellstart
Du hast einen frischen Linux-Server und willst DGNCast Panel in Betrieb nehmen? In unter 10 Minuten fertig.
Vorbereitungen (einmalig durch Heiko)
-
1DGNCast-Lizenz anlegen Lizenz für die Server-Domain des Kunden eintragen (wird von Heiko erledigt).
-
2HDEncoder-Lizenz anlegen HDEncoder-Lizenz für dieselbe Domain – wird von Heiko eingetragen.
-
3DNS-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.
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
| Anforderung | Minimum | Empfohlen |
|---|---|---|
| Betriebssystem | Debian 12 / Ubuntu 22.04 | Debian 13 / Ubuntu 24.04 LTS |
| RAM | 1 GB | 2 GB |
| Disk | 10 GB | 20 GB+ |
| Zugang | Root (SSH) | Root (SSH) |
| Empfohlener Hoster | – | Hetzner 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
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:
- DGNCast-Lizenz – mit der exakten Panel-Domain als Scope (wird von Heiko eingetragen)
- 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
- Panel-Domain – z.B.
panel.deine-domain.de - E-Mail – für Let's Encrypt-Zertifikat
- Admin-Passwort – mindestens 12 Zeichen, unbedingt notieren!
Was der Installer macht (12 Phasen, ca. 5–8 Min.)
- Konfiguration sammeln + DGNCast-Lizenz vom Lizenzserver ziehen
- System-Pakete: curl, wget, jq, PHP 8.5 + Extensions
- HDEncoder PHP-Extension installieren + Lizenz automatisch freigeben
- Apache 2 + SSL-Module aktivieren
- Certbot für Let's Encrypt
- Node.js 22 LTS + ffmpeg
- Systemd-User + Panel-Verzeichnis
/opt/dgncast-panel-php - Panel-Tarball entpacken
- DGNCast-Server-Tarball entpacken + npm install
- Zwei systemd-Services starten (Panel Port 8090, DGNCast-Server Port 8010)
- Apache-VHost + SSL-Zertifikat + UFW-Firewall
- Verifikations-Report generieren
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.
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):
| Feld | Wert |
|---|---|
| Base URL | http://127.0.0.1:8010 |
| API-Username | admin |
| API-Passwort | Dein Panel-Admin-Passwort (gleich wie beim Login) |
| Anzeigename | z.B. Hauptserver |
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?
- Läuft der DGNCast-Server?
systemctl status dgncast-server - Läuft er auf Port 8010?
ss -tlnp | grep 8010 - Stimmt das Passwort mit
/opt/dgncast/config.jsonüberein?
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.
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
-
1Im Panel: Pläne → Neuen Plan erstellen
-
2Name vergeben (z.B. "Starter 128k", "Pro 320k")
-
3Bitrate-Limit in kbps, max. gleichzeitige Hörer und Speicher-Kontingent eintragen
-
4Speichern
Typische Plan-Konfigurationen
| Plan | Bitrate | Hörer | Speicher |
|---|---|---|---|
| Starter | 128 kbps | 50 | 500 MB |
| Standard | 192 kbps | 200 | 2 GB |
| Pro | 320 kbps | unbegrenzt | 10 GB |
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
-
1Im Panel: Kunden → Neuen Kunden anlegen
-
2Name, E-Mail und Passwort eingeben
-
3Plan zuweisen (vorher anlegen unter Pläne anlegen)
-
4Optional: Ablaufdatum für zeitbegrenzte Accounts
-
5Erstellen
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.
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
-
1Im Panel: Streams → Neuen Stream anlegen
-
2Stream-Name und Beschreibung eingeben
-
3Bitrate wählen (muss im Plan-Limit liegen)
-
4Mount-Point festlegen, z.B.
/radiooder/live -
5Passwort für Broadcastsoftware setzen
-
6Stream erstellen
Sendesoftware verbinden
Verbindungsdaten für BUTT, MIXXX, SAM Broadcaster, Liquidsoap & Co. (Icecast2-kompatibel):
| Einstellung | Wert |
|---|---|
| Server / Host | deine-panel-domain.de |
| Port | 8010 |
| Mount | /radio (dein Mount-Point) |
| Passwort | Stream-Passwort (wie beim Anlegen gesetzt) |
| Protokoll | Icecast2 |
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.
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
-
1Im Panel deinen Stream öffnen (auf den Stream klicken).
-
2Oben 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:
-
1Per Drag & Drop: Ziehe eine oder mehrere Musikdateien direkt vom Datei-Explorer in das große Feld „Dateien hierher ziehen“.
-
2Oder per Auswahl: Auf Dateien auswählen klicken und im Fenster die gewünschten Titel markieren (mehrere gleichzeitig mit gedrückter Strg- bzw. Cmd-Taste).
-
3Der 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.
-
4Sobald 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
| Format | Hinweis |
|---|---|
| MP3 | Empfohlen – klein, überall kompatibel |
| OGG | Gute Qualität bei kleiner Dateigröße |
| FLAC / WAV | Verlustfrei, aber große Dateien |
| M4A / AAC | Werden ebenfalls akzeptiert |
Pro Datei sind maximal 500 MB erlaubt, mehrere Dateien gleichzeitig sind kein Problem.
Titel löschen
-
1In der Datei-Liste hinter dem Titel auf Löschen klicken und die Sicherheitsabfrage bestätigen.
-
2Mehrere auf einmal: links die Häkchen setzen (oder „Alle auswählen“) und über die Sammel-Leiste löschen.
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
-
1Im Panel den Stream öffnen und oben auf den Reiter Zugang klicken.
-
2Im Bereich Neuen DJ anlegen ausfüllen:
| Feld | Was eintragen |
|---|---|
| Username | Kurzer Anmeldename, z.B. bob (Buchstaben, Zahlen, Punkt, Bindestrich) |
| Passwort | Sicheres Passwort (mindestens 4 Zeichen, gerne länger) |
| Anzeigename | Name, der im Sender erscheint, z.B. DJ Bob |
-
3Auf 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 Sendesoftware | Wert |
|---|---|
| Server / Host | deine-panel-domain.de |
| Port | 8010 |
| Mount | der Mount-Point des Streams, z.B. /radio |
| Benutzer | der DJ-Username (z.B. bob) |
| Passwort | das DJ-Passwort |
| Protokoll | Icecast2 |
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.
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
| Kennzahl | Bedeutung |
|---|---|
| Aktive Hörer | Wie viele Leute gerade jetzt live zuhören. |
| Sessions heute | Wie oft heute insgesamt jemand eingeschaltet hat (jede Verbindung zählt). |
| Peak 24h | Die höchste Zahl gleichzeitiger Hörer in den letzten 24 Stunden. |
| Hörer-Sessions | Gesamtzahl 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:
| Zweck | Adresse |
|---|---|
| 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 |
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
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
- Heiko hat die Lizenz noch nicht für diese Domain eingetragen
- Der A-Record zeigt noch nicht auf diesen Server
- Tippfehler in der Domain beim Installer-Dialog
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 / Verzeichnis | Inhalt | Wichtigkeit |
|---|---|---|
/opt/dgncast-panel-php/config.json | Admin-PW, Lizenz, DB-Pfad | Kritisch |
/opt/dgncast-panel-php/data/ | SQLite-DB mit Streams, Kunden, Servern | Kritisch |
/opt/dgncast/config.json | DGNCast-Server-Konfiguration, API-PW | Wichtig |
/etc/letsencrypt/ | SSL-Zertifikate | Optional (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
Kopiere das .tar.gz regelmäßig auf einen anderen Server oder in Cloud-Storage. Die Konfigurationsdateien sind sehr klein (< 1 MB).