Moblin, IRL Pro und ein Hardware-Encoder bündeln LTE, 5G und WLAN über einen SRTLA-Relay; OBS verteilt den Stream anschließend an Twitch, YouTube und weitere Plattformen

Ziel dieser Anleitung

Ein Smartphone, IRL Pro, BELABOX oder ein kompatibler Encoder sendet per SRTLA zum Ubuntu-Server. Der Docker-Container führt die Datenströme zusammen. OBS holt das Signal anschließend per SRT ab.

Smartphone / Encoder → SRTLA :8383/UDP → Docker-Receiver
                                               ├→ SRT-Wiedergabe :8282/UDP → OBS
                                               └→ Statistik :8181/TCP → Browser / NOALBS
Projektstand: Diese Anleitung verwendet bewusst das feste Image glowf1sh/srtla-receiver:v1.9-amd64. Das Image wurde seit längerer Zeit nicht aktualisiert und ist laut Anbieter nur für nichtkommerzielle Nutzung unter CC BY-NC vorgesehen.

Inhalt

1. Voraussetzungen und Architektur prüfen

Benötigt werden ein Ubuntu-Server mit öffentlicher IP oder passenden Routerfreigaben sowie ein Benutzer mit sudo-Rechten. Prüfe zuerst die Architektur:

dpkg --print-architecture

Bei amd64 verwendest du die Compose-Datei dieser Anleitung. Für ARM64 muss der Image-Tag zu v1.9-arm64 geändert werden.

2. Docker Engine und Compose installieren

Installiere Docker über das offizielle Docker-Repository:

sudo apt update
sudo apt install ca-certificates curl -y
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
sudo systemctl enable --now docker
sudo docker run --rm hello-world

Quelle: Docker Engine unter Ubuntu installieren.

3. SRTLA-Projekt und Compose-Datei erstellen

sudo mkdir -p /opt/srtla-receiver
sudo chown "$USER":"$USER" /opt/srtla-receiver
cd /opt/srtla-receiver
nano compose.yaml

Fertige compose.yaml herunterladen

services:
  srtla-receiver:
    image: glowf1sh/srtla-receiver:v1.9-amd64
    container_name: srtla-receiver
    restart: always
    environment:
      NOALBS_STARTUP: "false"
      LUSTATSBOT_STARTUP: "false"
      SRTLA_REC_STARTUP: "true"
      SLS_STARTUP: "true"
    ports:
      - "8181:8181/tcp"
      - "8282:8282/udp"
      - "8383:8383/udp"
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

NOALBS und der LiveU-Bot bleiben beim ersten Test deaktiviert. Dadurch lässt sich die eigentliche SRTLA-Strecke isoliert prüfen.

4. Container herunterladen und starten

cd /opt/srtla-receiver
sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps
sudo docker compose logs --tail=100
Erwartetes Ergebnis: Der Container srtla-receiver steht auf Up und die Logs enthalten keinen fortlaufenden Neustart oder Architekturfehler.

5. Ports und Firewall

PortProtokollAufgabe
8181TCPStatusseite für Browser und NOALBS
8282UDPSRT-Eingang und SRT-Wiedergabe
8383UDPSRTLA-Eingang für Bonding
sudo ufw allow OpenSSH
sudo ufw allow 8181/tcp
sudo ufw allow 8282/udp
sudo ufw allow 8383/udp
sudo ufw enable
sudo ufw status
Docker und UFW: Mit ports: veröffentlichte Container-Ports können UFW-Regeln umgehen und sind standardmäßig extern erreichbar. Begrenzungen müssen bei Bedarf zusätzlich über Router, Anbieter-Firewall oder die Docker-Kette DOCKER-USER erfolgen. Siehe offizielle Docker-Dokumentation.

Bei einem Server hinter einem Router müssen dieselben Ports zum Ubuntu-Server weitergeleitet werden. Achte besonders auf UDP: Eine TCP-Freigabe für 8282 oder 8383 funktioniert nicht.

6. Sender und Stream-ID konfigurieren

Ersetze DEIN_LANGER_KEY durch einen schwer erratbaren Wert. Der Container besitzt in diesem Aufbau keine eigene Publish-Key-Datenbank; der Streamname sollte deshalb nicht trivial sein.

Normales SRT über eine Verbindung

Server:    srt://DEINE-SERVER-IP:8282
Stream-ID: publish/live/DEIN_LANGER_KEY

SRTLA über mehrere Verbindungen

Server:    srt://DEINE-SERVER-IP:8383
Stream-ID: publish/live/DEIN_LANGER_KEY

Einige Apps, darunter bestimmte IRL-Pro-Konfigurationen, verwenden laut Image-Dokumentation stattdessen eine Adresse im Format srtla://DEINE-SERVER-IP:8282. Entscheidend ist die vom jeweiligen Sender erwartete SRTLA-Betriebsart.

7. Stream in OBS empfangen

Füge in OBS eine Medienquelle hinzu, deaktiviere „Lokale Datei“ und trage als Eingabe ein:

srt://DEINE-SERVER-IP:8282?streamid=play/live/DEIN_LANGER_KEY

Bei OBS auf demselben Rechner kann der Netzwerkpuffer sehr klein sein. Bei einem entfernten Server sind ein bis drei Megabyte ein sinnvoller Ausgangspunkt.

8. Statusseite und Datenfluss prüfen

http://DEINE-SERVER-IP:8181/stats

Zusätzlich helfen diese Befehle:

sudo docker compose ps
sudo docker compose logs -f --tail=100
sudo ss -ltnup | grep -E ':8181|:8282|:8383'

Wenn der Sender verbunden ist, die Statusseite aber keinen Publisher zeigt, prüfe Stream-ID, Protokoll und UDP-Port. Wenn der Publisher sichtbar ist, OBS aber kein Bild erhält, muss die Wiedergabe-ID exakt mit play/live/DEIN_LANGER_KEY übereinstimmen.

9. NOALBS für Szenenwechsel vorbereiten

Das Image enthält NOALBS 2.11.2. Für einen ersten stabilen Test bleibt es deaktiviert. Später kannst du eine gültige Konfiguration nach /apps/noalbs/config.json einbinden und NOALBS_STARTUP auf true setzen.

"streamServer": {
  "type": "SrtLiveServer",
  "statsUrl": "http://127.0.0.1:8181/stats",
  "publisher": "publish/live/DEIN_LANGER_KEY"
}

Die Szenennamen für normalen Empfang, geringe Bitrate und Offline müssen exakt den Namen in OBS entsprechen. Da die enthaltene NOALBS-Version älter ist, sollte die Einrichtung zunächst ohne Twitch-Bot erfolgen.

10. Wartung, Neustart und Entfernung

cd /opt/srtla-receiver

# Status und Logs
sudo docker compose ps
sudo docker compose logs --tail=200

# Container neu starten
sudo docker compose restart

# Image aktualisieren und Container neu erstellen
sudo docker compose pull
sudo docker compose up -d

# Container stoppen, Konfiguration behalten
sudo docker compose down
Versionshinweis: Verwende nicht unkontrolliert latest. Der feste Architektur-Tag macht Wiederherstellungen nachvollziehbar. Prüfe neue Versionen zuerst separat.

Originalprojekt und Detailangaben: glowf1sh/srtla-receiver auf Docker Hub.