# 🐳 VDO.Ninja Docker Automatisiertes Docker Image für [VDO.Ninja](https://github.com/steveseguin/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](https://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 ```bash 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](https://git.techniverse.net/scriptos/-/packages/container/vdo-ninja). ### Docker Compose Eine fertige `docker-compose.yml` liegt im Repository: ```bash docker compose up -d ``` Oder manuell erstellen: ```yaml 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) ```yaml 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](https://github.com/steveseguin/vdo.ninja) 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 ```bash # 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: ```bash # Docker Image bauen docker build -t vdo-ninja:local . # Container starten docker run -d -p 8080:80 --name vdo-ninja vdo-ninja:local ``` Der VDO.Ninja-Quellcode wird beim Build automatisch aus dem Upstream-Repository geladen. Ohne weitere Angaben wird der Default-Branch des Upstream-Repositories verwendet. Optional kann ein bestimmter Branch oder Tag gebaut werden: ```bash docker build \ --build-arg VDO_NINJA_REF=v29.0 \ -t vdo-ninja:v29.0 \ . ``` --- ## 🛡️ 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](./LICENSE). **VDO.Ninja** selbst steht unter der [AGPL-3.0-Lizenz](https://github.com/steveseguin/vdo.ninja/blob/master/AGPLv3.md). --- ## 🔗 Links | | 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](https://git.techniverse.net/scriptos/-/packages/container/vdo-ninja) |