Restreamer 2 installieren – Dein eigener Server für Multistreaming

Mit dieser Anleitung möchte ich dir kurz und knapp erklären, wie du Restreamer in der Version 2 installieren und nutzen kannst.
Ich habe HIER bereits eine Anleitung für Version 1 erstellt.
Restreamer ist ein fertiger Stream-Server, welcher in einem Docker Container läuft.
Es können mehrere Bildquellen angezapft werden und auch zu meheren Zielen das Signal gesendet werden.
Somit kannst du z.B. deine Überwachungskameras ums Haus an Restreamer anbinden, oder einfach direkt mit z.B. OBS Studio zum Server streamen.
Das Bild kann dann auf Plattformen wie Twitch, YouTube, Kick, PeerTube, … oder anderen RTMP-Zielservern simultan gesendet werden.
Alles ist OpenSource und kostenfrei nutzbar.
Reicht ein Stream nicht, binde einfach einen zweiten dazu ein.
Alle Informationen zum Projekt, gibt es HIER.




1. Vorbereitung

Wir benötigen folgendes:
– Ein Linux-System (Debian, Ubuntu, …)
– 1GB RAM
– Eine gute Netzwerkanbindung*
– Vollen Root-Zugriff
– Docker
– Ein paar MB freien Speicherplatz (~2GB reicht)
– OPTIONAL: Für Kodierarbeiten ist eine schnelle CPU oder passende Grafikkarte erforderlich

*Alle welche die Streams von Zuhause aus hochladen möchten und z.B. keinen Server im Rechenzentrum als „Verteilserver“ haben, benötigen pro Stream mehr Bandbreite!
Hast du also 5 Streams á 6000kbps Datenrate, benötigtst du min. 30000kbps Upload (30Mbits)!

2. Installation von Docker

Wir benötigen Docker, damit Restreamer installiert werden kann.
Ich habe hier einmal die Schnellstart-Anleitung für Debian 10 / 11 / 12.

# apt install apt-transport-https ca-certificates curl gnupg lsb-release -y
# curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# apt update
# apt install docker-ce docker-ce-cli containerd.io -y

3. Restreamer Downloaden + Starten

Restreamer können wir mit einem Befehl direkt starten lassen.
Doch bevor wir dies tun, kannst du hier einen passenden Startbefehl für dein System aussuchen.
Denn Restreamer kann auch die Grafikkarten nutzen, damit ggf. Encodier-Arbeit auf die Grafikkarten ausgelagert werden.
Sofern deine GPU das unterstützt, kannst du dies natürlich nutzen.
Beachte die Hinweise unter den Befehlen.

OHNE GRAFIKKARTE:
Passend für AMD64/ARMv7/ARM64

# docker run -d --restart=always --name restreamer -v /opt/restreamer/config:/core/config -v /opt/restreamer/data:/core/data -p 8080:8080 -p 8181:8181 -p 1935:1935 -p 1936:1936 -p 6000:6000/udp datarhei/restreamer:latest

FÜR DEN RASPBERRY PI:

# docker run -d --restart=always --name restreamer-rpi -v /opt/restreamer/config:/core/config -v /opt/restreamer/data:/core/data --privileged -p 8080:8080 -p 8181:8181 -p 1935:1935 -p 1936:1936 -p 6000:6000/udp datarhei/restreamer:rpi-latest

Tipp: Willst du an deinem Raspberry Pi eine USB-Webcam nutzen, verwende auf jeden Fall diesen Container!
Tipp 2: Hast du ein anderen ARM-Einplatinen-Computer (z.B. mit RockChip), nutze auch das Image für den Raspberry Pi, wenn die Hardwarebeschleunigung und USB-Geräte nutzen möchtest.

FÜR NVIDIA-GPUS:
CUDA-Support wird benötigt.

# docker run -d --restart=always --name restreamer-cuda -v /opt/restreamer/config:/core/config -v /opt/restreamer/data:/core/data --runtime=nvidia --privileged -p 8080:8080 -p 8181:8181 -p 1935:1935 -p 1936:1936 -p 6000:6000/udp datarhei/restreamer:cuda-latest

FÜR INTEL-GPUs:
VAAPI-Support wird benötigt.

# docker run -d --restart=always --name restreamer-vaapi -v /opt/restreamer/config:/core/config -v /opt/restreamer/data:/core/data -v /dev/dri:/dev/dri --privileged -p 8080:8080 -p 8181:8181 -p 1935:1935 -p 1936:1936 -p 6000:6000/udp datarhei/restreamer:vaapi-latest

Was muss geändert werden?
Damit Restreamer auf deinem System läuft, dürfen sich die Ports nicht überschneiden. Achte daher darauf, dass die Ports nicht von anderen Anwendungen gerade genutzt werden.
Port 8080 = Über diesen Port ist das Webinterface via HTTP erreichbar
Port 8181 = Über diesen Port ist das Webinterface via HTTPS erreichbar, sofern ein Zertifikat korrekt hinterlegt wurde
Port 1935 = Dieser Port wird für den Empfang von RTMP-Streams genutzt
Port 1936 = Dieser Port wird für den Empfang von RTMPS-Streams genutzt
Port 6000 = Dieser Port wird für den Empfang von SRT-Streams genutzt

Meine Empfehlung ist es, die Ports für RTMP, RTMPS und SRT so zu belassen. Es kann vorkommen, dass bei der Stream-Software der Port nicht angepasst werden kann und immer diese Standardports genutzt werden. So ersparst du dir lästige Probleme.

4. Restreamer im Webbrowser öffnen

Rufe nun deine Restreamer-Instanz in einem Webbrowser auf.
Nutze dazu einfach die IP-Adresse des Servers, oder falls vorhanden die Domain.
Über HTTP ist der Server z.B. so erreichbar:

http://192.168.1.100:8080

Wenn du ein Zertifikat eingespielt hast, ist über HTTPS ist der Server z.B. so erreichbar:

https://192.168.1.100:8181


Du kannst mit dem Link „Did you mean to go to the admin panel?“ direkt zum Admin-Login kommen.

Du musst beim ersten Aufrufen des Admin-Bereiches ein Kennwort festlegen, damit sich nicht jeder so einfach auf deine Instanz aufschalten kann.
Setze daher ein sicheres Kennwort.

Fertig!
Restreamer ist nun installiert und kann eingerichtet werden.


5. Stream einrichten

Restreamer kann auf unterschiedlichen Arten mit einem Livestream versorgt werden.
Richte passend zur deiner Quelle einen Stream ein.

Netzwerk-Quelle: Wenn eine Kamera eine URL zur Verfügung stellt, womit ein Videosignal abgefangen werden kann, nutze diese Option.
RTMP-Server: Restreamer startet ein RTMP-Server, damit du mit Anwendungen wie OBS oder einer Smartphone-App zu Restreamer direkt streamen kannst.
SRT Server: Restreamer startet einen SRT-Server, damit du mit passenden Anwendungen zu Restreamer direkt streamen kannst.
Hardwaregerät: Wenn du eine USB-Kamera angeschlossen hast, kannst du hierüber diese anzapfen.

Falls der SRT oder RTMP-Server noch nicht aktiviert ist, weist dich Restreamer darauf hin, dies zuerst zu tun.

Nach der Aktivierung, musst du den Einrichtungsprozess noch einmal starten.

Du kannst nur ein Stream einrichten, sofern ein Stream bereits an Restreamer gesendet wird.
Das einrichten eines „leeren“ Streams ist nicht möglich.
Sobald du also die Stream-URL erhalten hast, musst du den Stream z.B. in OBS Studio starten, damit der Einrichtungsprozess abgeschlossen werden kann.

Wenn du zu einem (oder mehreren) Ziel streamen willst, kannst du schon vorgefertigte Profile nutzen.
Restreamer kennt schon einige URLs von diversen Plattformen.
Du musst in diesen Fällen nur z.B. dein Streamschlüssel oder Login angeben, um Live gehen zu können.
Die passende URL wird automatisch eingegeben.
Weiter unten findest du aber passende Vorlagen, um z.B. eine RTMP-URL manuell eingeben zu können.

Du kannst auch bevor das Bild zum Ziel gesendet wird, dies konvertieren lassen.
Bei „Quelle & Encoding“ kannst du die Konvertierung einstellen.
Wenn du deine Grafikkarte hierfür nutzen möchtest, achte darauf, dass du den korrekten Docker Container gestartet hast.
Das kodieren über die CPU kann sehr schnell sehr fordernd werden. Wer eine super Qualität bei hoher Auflösung haben möchte, benötigt eine sehr starke CPU.


Hinweis 1: Wer z.B. über den Restream-Server das Bild in eine andere Auflösung rendern möchte, kann dies zum aktuellen Zeitpunkt 01.11.2023 nicht tun. Aktuell unterstützt Restreamer nur das „ändern“ der Datenrate für Bild und Ton, die Bilder pro Sekunde (FPS) und den Schlüsselbild-Intervall (Keyframe). Das Anpassen der Auflösung steht aber bereits auf der Wunschliste.

Hinweis 2: Hast du z.B. Proxmox, VMware oder HyperV installiert und darin eine virtuelle Maschine oder einen Container installiert, in welchem dann Restreamer läuft, kannst du natürlich versuchen die Grafikkarte durchzureichen. Wie genau das funktioniert, musst du für dein eingesetztes System aber selbst herausfinden!

Hinweis 3: Einige Streamprotokolle unterstützen bis zum aktuellen Zeitpunkt (01.11.2023) kein IPv6! Versuche daher eine saubere Verbindung über IPv4 mit dem Server herzustellen, um Probleme zu vermeiden.


Ich konnte mit Restreamer bereits zu folgenden Plattformen erfolgreich streamen:
Twitch, YouTube, Kick.com, PeerTube, DailyMotion, Trovo und D.Live

8 Kommentare

  1. Danke für das tolle Tutorial, eine Frage: Ist es dir schon mal gelungen, Restreamer 2 in mehreren Containern laufen zu lassen? Ich bin damit bisher jedesmal gescheitert, es gibt zwar eine Anleitung von Datareigh selbst dazu, die führt aber spätestens, wenn man versucht, den zweiten RTMP-Stream zu schicken, zum Fehler.

    • Hi!
      Ja das ist ohne Probleme möglich, sofern du den Docker Container ohne GPU-Support nutzt.
      Du musst nur die Ports abändern, diese dürfen nicht doppelt genutzt werden.
      Deine zwei Befehle sehen etwa so aus:
      # docker run -d --restart=always --name restreamer -v /opt/restreamer/config:/core/config -v /opt/restreamer/data:/core/data -p 8080:8080 -p 8181:8181 -p 1935:1935 -p 1936:1936 -p 6000:6000/udp datarhei/restreamer:latest
      # docker run -d --restart=always --name restreamer2 -v /opt/restreamer2/config:/core/config -v /opt/restreamer2/data:/core/data -p 8082:8080 -p 8183:8181 -p 1937:1935 -p 1938:1936 -p 6002:6000/udp datarhei/restreamer:latest

      Ich selbst habe es direkt in Portainer gemacht und da läuft es ohne Probleme.

  2. Hallo Hoerli,

    vielen Dank, hat super geklappt, habe jetzt 4 Streams parallel laufen und das klappt dank deiner Hilfe auch super 🙂

    Jetzt habe ich noch folgendes Problem: Wenn ich den RTMP-Server in Restreamer aktiviere, dann kann ich den „Application“-Teil ja in den Einstellungen vorgeben, den Streamkey (eine GUID mit dem Postfix .stream“ vergibt Restreamer dann automatisch. Jetzt scheint Restreamer diesen Streamkey aber von Zeit zu Zeit zu wechseln, wann er das tut kann ich nicht ganz nachvollziehen ich habe nur festgestellt, wenn ich den Restreamer 24 Stunden durchlaufen lasse, dann habe ich, wenn ich wieder auf die WebGUI von Restreamer gehe, andere Stream-Keys, das ist in der Praxis natürlich schwierig zu managen. Ich habe bisher auch keine Möglichkeit gefunden, diesen Streaming-Key in der Konfiguration vorzugeben oder explizit zu setzen, den Token kann ich vorgeben, aber nicht den Streaming-Key. Siehst du da eine Möglichkeit, diesen Streaming-Key zu setzen?

    Danke und viele Grüße
    Eric

  3. Hoi Hörli,
    vielen Dank. Läuft soweit perfekt. Einzig die Raspberry Pi High Quality Camera krieg ich nicht zu laufen. Wird auch nicht angezeigt im Restramer. Habe es über die Hardwaregerät versucht. Klappt nicht. Du kannst mir bestimmt weiterhelfen.
    Danke und Gruss
    Kurt

    • Hi Kurt,
      hab leider keine Pi Camera, daher kann ich hierzu nichts sagen.
      Am besten mal die Entwickler direkt anschreiben, die können da sicher weiterhelfen 🙂

  4. Hallo Hörli,

    gibt e evtl. eine Möglichkeit die Latenz (Versatz) runter zu nehmen. Wir wollen das in ein Lok (H0) einbauen und als Kamerazug streamen auf Messen z.B. jedoch hat der Stream ein Versatz von über einer Minute was etwas zu lang ist.

    • Hi!
      Eine Minute Versatz ist schon „viel“. Das habe ich bei mir in der Regel nicht.
      Es kommt aber auch auf die Kamera an, ob diese eine Art Puffer aufbaut.
      Restreamer selbst lässt sich der Puffer nur begrenzt anpassen.
      Hierfür einfach mal bei der Quelle mit der Segmentlänge, Listengröße, Verzögerung bei Wiederherstellen und Zeitüberschreitung spielen.
      Am Ende kann aber das Wiedergabegerät ebenfalls ein Puffer aufbauen, was sich über Restreamer nicht regeln lässt.

  5. Ok der restreamer läuft auf einen Pi zero mit der kleine Pizero Kamera. Im moment rufe ich nur den Restreamer per IP auf und schaue mir das Video an.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.