Files
vdo.ninja-docker/README.md

237 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🐳 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) |
<p align="center">
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
</p>
<p align="center">
<img src="https://assets.techniverse.net/f1/logos/small/license.png" alt="License" width="15" height="15"> <a href="./LICENSE">License</a> | <img src="https://assets.techniverse.net/f1/logos/small/matrix2.svg" alt="Matrix" width="15" height="15"> <a href="https://matrix.to/#/#community:techniverse.net">Matrix</a> | <img src="https://assets.techniverse.net/f1/logos/small/mastodon2.svg" alt="Mastodon" width="15" height="15"> <a href="https://social.techniverse.net/@donnerwolke">Mastodon</a>
</p>