From 3e03153602adb78439dc4cea7017e610eb1fac58 Mon Sep 17 00:00:00 2001 From: Thomas Dannenberg Date: Sun, 24 Aug 2025 17:14:39 +0000 Subject: [PATCH] =?UTF-8?q?Kapitel=2013/Tutorial.md=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kapitel 13/Tutorial.md | 244 ----------------------------------------- 1 file changed, 244 deletions(-) delete mode 100644 Kapitel 13/Tutorial.md diff --git a/Kapitel 13/Tutorial.md b/Kapitel 13/Tutorial.md deleted file mode 100644 index 79c4e90..0000000 --- a/Kapitel 13/Tutorial.md +++ /dev/null @@ -1,244 +0,0 @@ -# 🛠️ Kapitel 13 – Clipper (Tutorial) - ---- - -## Einleitung -Clips sind der beste Weg, lange Streams in kurze, teilbare Highlights zu verwandeln. -Das Ziel dieses Kapitels: Wir bauen ein System, das neue Videos automatisch erkennt, sinnvolle Stellen analysiert, passende Highlights schneidet und die Ergebnisse in Nextcloud ablegt – komplett mit Titeln und Hashtags für jede Plattform. -Der Clipper selbst übernimmt dabei nur die technische Verarbeitung. Alles rund um Steuerung, Analyse und Benachrichtigungen läuft über **n8n** – so bleibt das System flexibel, ressourcenschonend und jederzeit erweiterbar. - ---- - -## Voraussetzungen -- **Proxmox LXC** mit Debian 12 (Bookworm) -- **Nextcloud** (Pflicht, Zielort für Clips & Metadaten) -- **n8n-Instanz** (Automatisierung, Steuerung Clipper, Analyse, Metadaten-Erzeugung) -- **Twitch-Entwickler-Account** inkl. API-Key (für VOD- und Clip-Zugriff) -- **Optional**: RTMP-Server, falls VODs lokal aufgezeichnet werden -- **Ressourcen für den LXC**: 1 vCPU, 512 MB RAM, 10 GB Speicher reichen aus -- **Grundwissen**: SSH-Verbindung, Nano-Editor, Basiskenntnisse in n8n - ---- - -## Vorbereitung -Bevor wir Clipper installieren, richten wir den Container sauber ein: - -1. **LXC erstellen** - - Debian 12, Name `clipper` - - Ressourcen wie oben (1 vCPU, 512 MB RAM, 10 GB Speicher) - -2. **System aktualisieren und Basis-Tools installieren** - ```bash - apt update && apt upgrade -y - apt install -y curl nano unzip ffmpeg inotify-tools - ``` - -3. **Zeitsynchronisation prüfen** - ```bash - timedatectl status - ``` - Eine saubere Zeitbasis ist entscheidend, da Clips später anhand exakter Sekundenmarken geschnitten werden. - - Wenn der Container standardmäßig auf UTC läuft, kann man die Zeitzone so ändern: - ```bash - timedatectl list-timezones | grep Europe - timedatectl set-timezone Europe/Berlin - timedatectl status - ``` - -Damit springt die Systemzeit sofort auf Europe/Berlin, und alle Logs sowie Schnittzeiten passen zur lokalen Zeit. - -4. **Ordnerstruktur vorbereiten** - ```bash - mkdir -p /srv/clipper/{watch,out,temp,logs} - ``` - - `watch` → Eingangsordner für neue Videos (über Nextcloud oder Twitch-Import) - - `out` → fertige Clips + Metadaten - - `temp` → Zwischenablagen für Analyse - - `logs` → Protokolle aller Abläufe - -Damit ist das Fundament gelegt: Der LXC ist vorbereitet, das System auf Stand, und die Ordnerstruktur für Clipper ist vorhanden. - ---- - -## Abschnitt 2 – Clipper-LXC einrichten (Basisdienste & Service-Skelett) - -In diesem Abschnitt bereiten wir den Container so vor, dass der Benutzer **clipper** alle Arbeiten übernimmt. Root wird nur für die Installation und Systemaufgaben genutzt. Danach wechseln wir bewusst in die Session von **clipper** und arbeiten dort weiter. So bleibt das System sauber getrennt und sicher. - ---- - -### Schritt 1: Benutzer und Verzeichnisse anlegen -Zuerst legen wir den Benutzer `clipper` an und bereiten die Arbeitsverzeichnisse vor. - -```bash -adduser clipper -# Passwort vergeben und die Standardfragen beantworten - -mkdir -p /srv/clipper/{watch,out,temp,logs,bin} -chown -R clipper:clipper /srv/clipper -chmod 750 /srv/clipper -``` - -Damit ist der Benutzer angelegt und besitzt alle notwendigen Verzeichnisse. - ---- - -### Schritt 2: Notwendige Pakete installieren -Als root installieren wir die benötigten Pakete. - -```bash -apt update && apt install -y ffmpeg jq python3 python3-venv curl unzip inotify-tools sudo -``` - -- **ffmpeg**: Kernwerkzeug für Analyse und Schnitt -- **jq**: JSON-Handling -- **python3/venv**: Virtuelle Umgebung für spätere Analyse-Tools -- **inotify-tools**: optional für lokale Hooks -- **sudo**: erlaubt clipper bei Bedarf Systembefehle auszuführen - ---- - -### Schritt 3: Benutzer clipper für sudo freischalten -Damit `clipper` bei Bedarf Befehle mit Administratorrechten ausführen kann, geben wir ihm Zugang zur Gruppe **sudo**. - -```bash -usermod -aG sudo clipper -``` - ---- - -### Schritt 4: In die Session des Benutzers clipper wechseln -Ab hier arbeiten wir direkt als Benutzer `clipper`. - -```bash -su - clipper -``` - ---- - -### Schritt 5: Konfigurationsdatei anlegen -Wir erstellen die Umgebungsvariablen-Datei, die später von allen Skripten genutzt wird. - -```bash -nano /srv/clipper/clipper.env -``` -Inhalt: -``` -CLIPPER_IN=/srv/clipper/watch -CLIPPER_OUT=/srv/clipper/out -CLIPPER_TMP=/srv/clipper/temp -CLIPPER_LOG=/srv/clipper/logs/clipper.log -EXPORT_VARIANTS="16x9,9x16" -``` - -Speichern mit **Strg+O**, bestätigen mit **Enter**, beenden mit **Strg+X**. - ---- - -### Schritt 6: Virtuelle Python-Umgebung vorbereiten -Noch immer als Benutzer `clipper` legen wir die virtuelle Umgebung an und installieren die ersten Pakete. - -```bash -python3 -m venv /srv/clipper/.venv -source /srv/clipper/.venv/bin/activate -pip install --upgrade pip -pip install numpy opencv-python-headless -``` - -Damit ist die Grundlage für spätere Analysen geschaffen. KI und STT binden wir später in Abschnitt 4 ein. - ---- - -### Schritt 7: Einstiegsskripte erstellen -Jetzt erstellen wir die beiden Einstiegspunkte `clipper-analyze` und `clipper-cut`. Sie liegen im Verzeichnis `/srv/clipper/bin/` und dienen n8n als Schnittstelle. - -**Analyse-Skript** -```bash -nano /srv/clipper/bin/clipper-analyze -``` -Inhalt: -```bash -#!/usr/bin/env bash -set -euo pipefail -ENV_FILE="/srv/clipper/clipper.env"; [ -r "$ENV_FILE" ] || { echo "ENV nicht lesbar: $ENV_FILE" >&2; exit 1; }; source "$ENV_FILE" -IN="$1" -JOBID="${2:-manual}" -mkdir -p "$CLIPPER_TMP/$JOBID" -echo "$(date '+%F %T') [ANALYZE] job=$JOBID file=$IN" | tee -a "$CLIPPER_LOG" -OUT_JSON="$CLIPPER_TMP/$JOBID/candidates.json" -echo '[]' > "$OUT_JSON" -echo "$OUT_JSON" -``` - -**Schnitt-Skript** -```bash -nano /srv/clipper/bin/clipper-cut -``` -Inhalt: -```bash -#!/usr/bin/env bash -set -euo pipefail -ENV_FILE="/srv/clipper/clipper.env"; [ -r "$ENV_FILE" ] || { echo "ENV nicht lesbar: $ENV_FILE" >&2; exit 1; }; source "$ENV_FILE" -IN="$1" -RANGES_JSON="$2" -JOBID="${3:-manual}" -mkdir -p "$CLIPPER_OUT/$JOBID" -echo "$(date '+%F %T') [CUT] job=$JOBID file=$IN ranges=$RANGES_JSON" | tee -a "$CLIPPER_LOG" -exit 0 -``` - -Speichern beide Male mit **Strg+O**, bestätigen mit **Enter**, beenden mit **Strg+X**. - -Rechte setzen: -```bash -chmod +x /srv/clipper/bin/clipper-* -``` - ---- - -### Schritt 8: Skripte testen -Wir testen die beiden Einstiegspunkte. - -**Analyse-Test:** -```bash -/srv/clipper/bin/clipper-analyze /srv/clipper/watch/demo.mp4 job-001 -``` - -**Schnitt-Test:** -```bash -/srv/clipper/bin/clipper-cut /srv/clipper/watch/demo.mp4 /srv/clipper/temp/job-001/ranges.json job-001 -``` - -Logs prüfen: -```bash -tail -n 50 /srv/clipper/logs/clipper.log -``` - ---- - -### Schritt 9: Logrotation einrichten -Zum Abschluss richten wir die automatische Log-Rotation ein. Dafür wechseln wir kurz zurück zu root. - -```bash -exit # zurück zu root -nano /etc/logrotate.d/clipper -``` -Inhalt: -``` -/srv/clipper/logs/*.log { - rotate 14 - daily - missingok - notifempty - compress - delaycompress - copytruncate -} -``` - ---- - -**Ergebnis Abschnitt 2:** -- Benutzer **clipper** ist vollständig eingerichtet und übernimmt die Arbeit. -- Skripte `clipper-analyze` und `clipper-cut` laufen fehlerfrei in seiner Session. -- n8n kann später direkt als Benutzer `clipper` per SSH einsteigen und die Skripte aufrufen.