Owncast – Der eigene Livestream-Server

In dieser Anleitung erstellen wir einen eigenen Livestream-Server mit Owncast.
Damit können wir unser eigenes „Twitch“ oder „Trovo“ aufsetzen.

Was brauchen wir dafür?
– Einen Linux-Server
– Vollen Root-Zugang
– Minimum 1 CPU-Kern
– Minimum 1GB RAM
– Minimum 20GB Speicherplatz
– Optional aber Empfohlen: Eine statische IP und Domain
Hinweis: Wer die Kodierung in andere Auflösungen nutzen möchte, benötigt deutlich mehr Ressourcen. Dafür kann ich aber keine Empfehlung geben, da diese Werte sehr variabel sind.

Los gehts!

1. Server Updaten

# apt update && apt upgrade -y

2. Notwendige Software installieren:

# apt install curl nano wget htop iftop unzip -y

3. Extra Benutzer für Owncast erstellen:

# adduser livestream

4. Melde dich mit diesem Nutzer an:

# su livestream

5. Downloade dir das Installationsscript von Owncast und führe es aus:

# curl -s https://owncast.online/install.sh | bash

6. Wechsel nun in den Ordner und führe Owncast aus:

# cd owncast
# ./owncast

7. Öffne einen Browser und rufe deine IP des Servers oder direkt die Domain auf. Füge dahinter den Port 8080 dazu, da Owncast in der Standardkonfiguration über Port 8080 läuft.
http://123.123.123.123:8080 | http://deine-domain.com:8080
Mit /admin kommst du in den Administrationsbereich.
http://123.123.123.123:8080/admin | http://deine-domain.com:8080/admin
Benutzername: admin
Passwort: abc123

Bis hier her, haben wir Owncast nun gestartet. Für Tests reicht dieses Setup erst einmal aus. Wer damit aber wirklich „online“ gehen möchte, sollte den Server noch absichern und den Owncast-Server in den Autostart schieben, damit er bei jedem Serverneustart auch automatisch läuft.
Daher gehts jetzt weiter!

8. Stoppe den Owncast Server wieder
STRG + C

9. Werde wieder Root

# exit

10. Installiere folgende Pakete:

# apt install nginx python3 python3-venv libaugeas0 ufw -y

11. Installiere den Certbot, um ein SSL-Zertifikat auszustellen:

# python3 -m venv /opt/certbot/
# /opt/certbot/bin/pip install --upgrade pip
# /opt/certbot/bin/pip install certbot certbot-nginx
# ln -s /opt/certbot/bin/certbot /usr/bin/certbot

12. Lass ein Zertifikat für deine Domain erstellen:

# certbot --nginx

13. Entferne die Default-Konfiguration von nginx:

# rm /etc/nginx/sites-enabled/default

14. Lege eine neue Konfiguration an und befülle sie mit folgendem Inhalt:

# nano /etc/nginx/sites-enabled/domain.com
server {
    listen 80;
    listen [::]:80;
    access_log  /var/log/nginx/owncast.domain.com.access.log;
    error_log   /var/log/nginx/owncast.domain.com.error.log;
    server_name owncast.domain.com;
    # enforce https
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name owncast.domain.com;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_pass http://127.0.0.1:8080;
    }

        # ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
        # ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;

}

Ersetze hier überall owncast.domain.com gegen deine Domain!
Speichere dann die Konfiguration ab.

15. Prüfe, ob Fehler in nginx vorhanden sind:

# nginx -t

16. Starte nginx neu

# service nginx restart

17. Erstelle nun 3 Firewall-Regeln, damit SSH, HTTP und HTTPS erlaubt sind:

# ufw allow 22/any comment 'SSH'
# ufw allow 80/any comment 'HTTP'
# ufw allow 443/any comment 'HTTPS'
# ufw allow 1935/any comment 'RTMP'
# ufw enable

Damit sperren wir den Port 8080. Somit kann niemand mehr unverschlüsselt Owncast erreichen.

18. Wechsel nun in den SystemD-Ordner und lege eine neue Service-Datei an:

# cd /etc/systemd/system
# nano owncast.service

19. Befülle sie mit folgendem Inhalt:

[Unit]
Description=Owncast Service
After=network.target
 
[Service]
Type=forking
WorkingDirectory=/pfad/zum/server
User=benutzername
Group=benutzername
ExecStart=/pfad/zum/server/owncast
Restart=on-failure
RestartSec=10
 
[Install]
WantedBy=multi-user.target

Ändere hierbei folgendes ab:
WorkingDirector = Gebe hier den Pfad an, wo Owncast liegt (z.B. /home/benutzername/owncast)
User = Gebe den Benutzername an, der Owncast ausführen soll – Der Aus Schritt 3
Group = Gebe den Benutzername an, der Owncast ausführen soll – Der Aus Schritt 3
ExecStart= Gebe hier den Pfad an, wo Owncast mit der ausführbaren Datei liegt (z.B. /home/benutzername/owncast/owncast

20. Aktiviere den Service und starte ihn

# systemctl enable owncast.service
# systemctl start owncast.service

Du kannst über z.B. OBS Studio jetzt zu deinem Server streamen!
Deine RTMP-URL ist nun die IP oder Domain des Servers:
rtmp://123.123.123.123/live ODER rtmp://deine-domain.com/live
Dein Key ist: abc123


WICHTIG:

Melde dich nun im Admin-Panel an und ändere deinen Key im Bereich „Configuration“ ab, damit sich keine fremden Personen bei deinem Server anmelden und Streamen können!

Qualitätsauswahl

Um deinen Zuschauern eine Qualitätsauswahl zu ermöglichen, kannst du bei „Configuration -> Video Configuration“, verschiedene Qualitätsoptionen einrichten.
Bedenke allerdings, dass das umwandeln des Streams in andere Auflösungen, jede Menge Performance benötigt. Wie viel, hängt immer von den Einstellungen ab, die du gesetzt hast.
In der Standardkonfiguration ist schon eine Konvertierung aktiv! Dort wird dein Input auf maximal 800kbps heruntergestuft. Du solltest also diese Einstellungen dringend anpassen.
Daher nutze hier mein Vorschlag für die Auflösungsvarianten:
QUELLE:
Lege eine Variante „Quelle“ an und setze bei „Advanced Settings“ den Haken bei „Video Passthrough“. Dies leitet dein orginal Stream einfach durch. Das benötigt absolut keine Rechenleistung beim Server. Dies wird bei 1CPU-Servern dringend empfohlen!

720p:
– CPU or GPU Utilization = High
– Video Bitrate = 3500kbps
– Resolution = 1280×720
– FPS = 30 oder 60

480p:
– CPU or GPU Utilization = High
– Video Bitrate = 1500kbps
– Resolution = 852×480
– FPS = 30

480p:
– CPU or GPU Utilization = High
– Video Bitrate = 800kbps
– Resolution = 640×360
– FPS = 30

Spiele mit den Werten herum, bis deine Auslastung des Servers in einem angenehmen Rahmen ist. Je mehr Auflösung du zur Verfügung stellst, um so mehr Power wird benötigt.


Schreibe einen Kommentar

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