Installation#
Diese Anleitung führt dich Schritt für Schritt von Null bis zur laufenden Stream-Seite. Plane ca. 15–20 Minuten ein.
Zwei Wege — wähle deinen
Die Schritte unten beschreiben die Webhosting-Installation per FTP (der übliche Weg, kein technisches Vorwissen nötig). Hast du stattdessen einen eigenen Server mit Docker und möchtest den nutzen? Dann geht es schneller — spring direkt zur Docker-Installation weiter unten.
Voraussetzungen#
Bevor du startest, brauchst du:
| Anforderung | Details |
|---|---|
| Webhosting mit PHP 8.0+ | Die meisten Hoster (Hetzner, IONOS, All-Inkl, Strato …) erfüllen das. PHP-Erweiterungen curl, openssl, mbstring, json müssen aktiv sein (Standard bei fast allen). |
| Cron-Job-Möglichkeit | Zum automatischen Aktualisieren der Streams alle 60 s. Fast jedes Hosting-Panel bietet das (cPanel, Plesk, KIS …). |
| HTTPS / SSL | Pflicht. Bei den meisten Hostern per Let's Encrypt 1-Klick aktivierbar. |
| Twitch-Developer-Account | Kostenlos. Liefert Client-ID + Secret für die Stream-Abfrage. → Anleitung |
| FTP- oder Datei-Manager-Zugang | Zum Hochladen der Dateien. |
Ohne HTTPS funktioniert das Admin-Panel nicht sicher
Session-Cookies werden nur über HTTPS mit dem Secure-Flag gesetzt.
Aktiviere SSL vor dem ersten Login.
Schritt 1 — Dateien hochladen#
- Entpacke das gekaufte ZIP-Archiv lokal.
- Lade alle Dateien per FTP (z. B. FileZilla)
oder den Datei-Manager deines Hosters in das Webroot-Verzeichnis hoch
(meist
htdocs/,public_html/oderwww/).
Die Struktur sieht danach so aus:
public_html/
├── index.html ← öffentliche Stream-Seite
├── admin.php ← Admin-Panel
├── setup.php ← Setup-Wizard (einmalig)
├── fetch.php ← Cron-Worker
├── site-config.php
├── proxy.php
├── twitch.php
├── default-logo.png
├── favicon.png
├── .htaccess ← wichtig! (siehe Hinweis)
└── ...
Versteckte .htaccess nicht vergessen
Die Datei .htaccess beginnt mit einem Punkt und ist im FTP-Client oft
ausgeblendet. Aktiviere „versteckte Dateien anzeigen" und lade sie mit hoch —
sie schützt config.php, data.json & Co. vor direktem Zugriff aus dem Web.
Schritt 2 — Twitch-API vorbereiten#
Du brauchst eine Client-ID und ein Client-Secret von Twitch. Die komplette Anleitung mit Screenshots:
Halte beide Werte bereit — du gibst sie im nächsten Schritt in den Wizard ein.
Schritt 3 — Setup-Wizard#
Rufe im Browser auf:
Der Wizard führt dich durch 5 Schritte:
Prüft automatisch PHP-Version, Erweiterungen und Schreibrechte. Alles grün? → Weiter.
Schreibrechte
Falls ein Punkt rot ist: das Verzeichnis braucht Schreibrechte
(CHMOD 755 für Ordner, 644 für Dateien — bei den meisten Hostern Standard).
Trage Client-ID und Client-Secret ein. Der Wizard holt damit automatisch ein App-Token und macht einen Live-Test gegen die Twitch-API. Erfolg = grünes Häkchen.
Übersicht der Einstellungen. Hier wird der Verschlüsselungs-Key generiert, mit dem Webhooks und 2FA-Secrets gesichert werden.
Lege dein erstes Admin-Konto an:
- Benutzername: 3–32 Zeichen (A–Z, 0–9,
_,-) - Passwort: mindestens 12 Zeichen (16+ mit Sonderzeichen empfohlen)
Dieses Konto hat vollen Zugriff. 2FA kannst du direkt nach dem Login aktivieren.
Der Wizard sperrt sich selbst (.setup_complete) und kann nicht erneut
missbraucht werden. Du wirst zum Admin-Panel weitergeleitet.
Sicherheits-Gate
Der Wizard erzeugt beim ersten Aufruf einen einmaligen Token und ist nach Abschluss gesperrt. So kann niemand nach dir ein zweites Admin-Konto anlegen.
Schritt 4 — Cron-Job einrichten#
Damit die Stream-Liste sich automatisch aktualisiert, muss fetch.php
regelmäßig laufen (empfohlen: jede Minute).
Docker-Installation? Diesen Schritt überspringen
Bei der Docker-Installation läuft fetch.php
bereits automatisch über einen eigenen worker-Container — hier ist
nichts weiter zu tun.
Variante A — über das Hosting-Panel (cPanel/Plesk)#
Lege einen neuen Cron-Job an, der jede Minute Folgendes ausführt:
Den exakten Pfad zeigt dir dein Hoster (oft /home/USER/public_html/).
Als Intervall „jede Minute" bzw. * * * * * wählen.
Variante B — klassischer crontab (eigener Server / VPS)#
Zeile hinzufügen:
Erster Lauf
Nach dem ersten Cron-Lauf (max. 60 s) erscheinen die Streams auf der öffentlichen Seite. Vorher zeigt sie „niemand live" — das ist normal.
Test ohne Warten#
Du kannst fetch.php einmalig manuell über SSH anstoßen:
Schritt 5 — Erste Konfiguration#
Logge dich in https://deine-domain.de/admin.php ein und richte ein:
- Branding — Community-Name, Logo, Favicon
- Twitch-Filter — Kategorie(n) + Sprache wählen
- Stream-Präfixe — das Tag, das deine Streamer im Titel tragen (leer lassen = alle Streams der Kategorie)
- Community-Links — Discord, YouTube, Twitch, Shop …
- Design — Farben & Verläufe nach Wunsch
Jedes Feld hat ein ℹ️-Symbol mit Erklärung, was rein muss und wo es auf der öffentlichen Seite erscheint.
Vollständige Konfigurations-Referenz
Manuelle Installation (ohne Wizard)#
Falls du den Wizard überspringen willst (z. B. für automatisierte Deployments):
-
Lege eine
config.phpim Webroot an: -
Lege
users.jsonmit deinem Admin an (Passwort-Hash viapassword_hash('deinpw', PASSWORD_DEFAULT)). - Erstelle eine leere
.setup_complete-Datei, um den Wizard zu sperren. - Cron wie oben einrichten.
Empfohlen bleibt der Wizard
Er generiert Key, Token und Hash korrekt und macht den Twitch-Live-Test — weniger Fehlerquellen.
Docker-Installation#
Alternative zum Webhosting-Upload: läuft auf jedem Server mit Docker (VPS, Root-Server, Cloud-Instanz). Kein Webhosting-Paket nötig, kein manueller Cron-Job.
Voraussetzungen#
| Was | Details |
|---|---|
| Ein Server mit Docker | VPS reicht (z. B. Hetzner, Contabo, DigitalOcean, Hostinger). Docker installieren — viele Hoster bieten fertige „Docker"-Server-Images beim Bestellen an. |
| Eine Domain | Ein A-Record deiner Domain zeigt auf die IPv4-Adresse dieses Servers. |
| Port 80 + 443 frei | Es darf noch kein anderer Webserver/Proxy auf diesem Server laufen. |
Schnellstart#
Das Standard-Setup bringt seinen eigenen Reverse-Proxy mit und holt sich automatisch ein kostenloses SSL-Zertifikat (Let's Encrypt) — du musst vorher nichts weiter einrichten.
cp .env.example .env
nano .env # STREAM_DOMAIN + STREAM_ACME_EMAIL eintragen
docker compose -f docker-compose.standalone.yml up -d --build
Nach ca. 30–60 Sekunden (Traefik holt das Zertifikat) öffne:
...und folge dem Setup-Wizard — identisch zur
Webhosting-Installation. Den Cron-Schritt
kannst du überspringen: der worker-Container führt fetch.php bereits
automatisch alle 60 Sekunden aus.
Fertig konfigurieren
Weiter geht's genau wie oben beschrieben: Erste Konfiguration im Admin-Panel — Branding, Twitch-Filter, Präfixe, Links, Design.
Läuft bei dir schon ein Reverse-Proxy?#
Hast du bereits einen eigenen Traefik laufen und willst keinen zweiten
Prozess auf Port 80/443? Nutze stattdessen die normale
docker-compose.yml und trage dein bestehendes Docker-Netzwerk sowie
deinen Cert-Resolver-Namen in die Labels ein. Details dazu stehen direkt
im Kopf-Kommentar der Datei sowie in docker/README.md im Paket.
Update auf eine neue Version#
git pull # oder: neue Dateien aus dem Update-Paket hochladen
docker compose -f docker-compose.standalone.yml up -d --build --force-recreate
Troubleshooting#
Zertifikat kommt nicht / Seite zeigt „Nicht sicher":
Prüfe, ob der DNS-A-Record wirklich auf die richtige Server-IP zeigt und
Port 80 und 443 von außen erreichbar sind (Firewall prüfen). Danach
docker compose -f docker-compose.standalone.yml logs -f traefik — dort
steht der genaue Fehler.
„port is already allocated": Ein anderer Webserver/Proxy belegt Port 80/443 bereits — siehe „Läuft bei dir schon ein Reverse-Proxy?" oben.
Geschafft ✅#
Deine Stream-Seite läuft. Weiter mit: