Files
vdo.ninja-docker/README.md
2026-04-19 21:34:38 +02:00

7.1 KiB
Raw Blame History

🐳 VDO.Ninja Docker

Automatisiertes Docker Image für VDO.Ninja die kostenlose, browserbasierte Peer-to-Peer-Video-Streaming-Lösung.

Dieses Repository baut täglich ein aktuelles Docker Image aus dem originalen VDO.Ninja-Quellcode und stellt es über die Gitea Container Registry bereit.


📋 Übersicht

VDO.Ninja (ehemals OBS.Ninja) ermöglicht es, Video- und Audiostreams direkt im Browser zu teilen ohne Server, ohne Accounts, ohne Software-Installation. Es wird häufig in Kombination mit OBS Studio verwendet, um Gäste remote in Livestreams einzubinden.

Da das Original-Repository kein offizielles Docker Image anbietet, übernimmt dieses Projekt den automatisierten Build und die Bereitstellung als Docker Container.

Features

  • 🔄 Täglicher automatischer Build Prüft täglich um 20:00 Uhr auf neue Commits
  • 🧠 Intelligenter Update-Check Baut nur, wenn sich im Upstream etwas geändert hat
  • 🏷️ Versionierte Tags Jedes Image wird mit Upstream-Version (z.B. v29.0) und latest getaggt
  • 🪶 Leichtgewichtig Basiert auf nginx:alpine für minimale Imagegröße
  • 🔒 Security Headers Nginx-Konfiguration mit Sicherheits-Headern
  • 📦 Gzip-Komprimierung Optimierte Auslieferung der statischen Dateien
  • ❤️ Healthcheck Integrierter Docker-Healthcheck

🚀 Schnellstart

Docker Run

docker run -d \
  --name vdo-ninja \
  -p 8080:80 \
  --restart unless-stopped \
  git.techniverse.net/scriptos/vdo-ninja:latest

Danach ist VDO.Ninja unter http://localhost:8080 erreichbar. Alle verfügbaren Versionen findest du in der 📦 Container Registry.

Docker Compose

Eine fertige docker-compose.yml liegt im Repository:

docker compose up -d

Oder manuell erstellen:

services:
  vdo-ninja:
    image: git.techniverse.net/scriptos/vdo-ninja:latest
    container_name: vdo-ninja
    restart: unless-stopped
    ports:
      - "8080:80"

⚙️ Konfiguration

🔌 Ports

Container-Port Beschreibung
80 HTTP (Nginx Webserver)

Der Container lauscht intern auf Port 80. Über -p oder ports: kann dieser auf einen beliebigen Host-Port gemappt werden.

🔐 Reverse Proxy (empfohlen)

Wichtig: WebRTC benötigt eine sichere Verbindung (HTTPS). Für den produktiven Einsatz sollte ein Reverse Proxy mit TLS-Terminierung vorgeschaltet werden.

Beispiel: Traefik (via Docker Labels)

services:
  vdo-ninja:
    image: git.techniverse.net/scriptos/vdo-ninja:latest
    container_name: vdo-ninja
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.vdo-ninja.rule=Host(`vdo.example.de`)"
      - "traefik.http.routers.vdo-ninja.entrypoints=websecure"
      - "traefik.http.routers.vdo-ninja.tls.certresolver=letsencrypt"
      - "traefik.http.services.vdo-ninja.loadbalancer.server.port=80"
    networks:
      - proxy

networks:
  proxy:
    external: true

Beispiel: Caddy

vdo.example.de {
    reverse_proxy vdo-ninja:80
}

🔄 Automatische Updates

Der Gitea Workflow (.gitea/workflows/daily-docker.yml) prüft täglich um 20:00 Uhr (MESZ) ob es neue Commits im originalen VDO.Ninja Repository gibt.

So funktioniert der Update-Check:

  1. 🔍 Versions-Tag abrufen Der neueste Versions-Tag (z.B. v29.0) wird via git ls-remote vom Upstream abgefragt
  2. 🏷️ Registry prüfen Es wird geprüft, ob ein Image mit diesem Versions-Tag bereits in der Registry existiert
  3. 🏗️ Nur bei neuer Version bauen Ein neues Image wird nur gebaut, wenn die Version noch nicht vorhanden ist
  4. 📤 Push zur Registry Das fertige Image wird mit latest und dem Versions-Tag in die Registry gepusht

Zeitplan

Zeitzone Uhrzeit
MESZ (Sommerzeit) 20:00 Uhr
MEZ (Winterzeit) 19:00 Uhr
UTC 18:00 Uhr

Der Workflow kann jederzeit auch manuell über die Gitea-Oberfläche gestartet werden (workflow_dispatch).


📦 Image-Tags

Tag Beschreibung
latest Immer das neueste Build
vX.Y VDO.Ninja Upstream-Version (z.B. v29.0)

Beispiel: Bestimmte Version verwenden

# Immer die neueste Version
docker pull git.techniverse.net/scriptos/vdo-ninja:latest

# Bestimmte Version pinnen
docker pull git.techniverse.net/scriptos/vdo-ninja:v29.0

🏗️ Manuell bauen

Das Image kann auch lokal gebaut werden:

# VDO.Ninja Quellcode klonen
git clone --depth 1 https://github.com/steveseguin/vdo.ninja vdo-ninja-source

# Docker Image bauen
docker build -t vdo-ninja:local .

# Container starten
docker run -d -p 8080:80 --name vdo-ninja vdo-ninja:local

🛡️ Secrets & Variablen

Folgende Secrets und Variablen müssen in Gitea konfiguriert sein:

Secrets

Name Beschreibung
REGISTRY_USER Benutzername für die Container Registry
REGISTRY_TOKEN Token/Passwort für die Container Registry

Variablen

Name Beschreibung Beispiel
REGISTRY_URL URL der Container Registry https://git.techniverse.net

🗂️ Projektstruktur

.
├── .gitea/
│   └── workflows/
│       └── daily-docker.yml    # 🔄 Gitea Workflow (täglicher Build)
├── Dockerfile                  # 🐳 Docker-Bauanleitung
├── nginx.conf                  # ⚙️ Nginx-Konfiguration
├── docker-compose.yml          # 🚀 Compose-Datei für einfaches Deployment
├── .dockerignore               # 🚫 Dateien die nicht ins Image gehören
├── LICENSE                     # 📄 MIT-Lizenz (dieses Repo)
└── README.md                   # 📖 Diese Datei

📄 Lizenz

Dieses Repository (Dockerfile, Workflow, Konfiguration) steht unter der MIT-Lizenz.

VDO.Ninja selbst steht unter der AGPL-3.0-Lizenz.


Link
🌐 VDO.Ninja https://vdo.ninja
📦 Original-Repository https://github.com/steveseguin/vdo.ninja
📖 VDO.Ninja Dokumentation https://docs.vdo.ninja
🐳 Docker Image (Registry) git.techniverse.net/scriptos/vdo-ninja

License License | Matrix Matrix | Mastodon Mastodon