# Optionaler Remote-Transcode-Worker — für eine GPU-Maschine im Netz (Linux). # Für Windows gibt es den nativen Weg: RippyWorkerSetup.exe (Einstellungen → Worker). # # ══ DAS ENTSCHEIDENDE: der Worker muss die Dateien SEHEN ══════════════════════ # Rippy schickt ihm Pfade wie /app/media/rippy//title_t00.mkv — Pfade # INNERHALB des Rippy-Containers. Dieser Container muss dieselben Daten unter # GENAU DEMSELBEN Pfad haben, sonst nimmt er die Aufgabe an und lehnt sie # Millisekunden später ab („Keine Roh-MKVs gefunden" — genau so passiert am # 26.07.2026, Job 95afdc89). # # Richtigstellung 26.07.2026: Hier stand vorher „mount -t nfs # :/srv/rippy /mnt/rippy". Das geht NICHT — auf der Rippy-Maschine # läuft kein NFS- und kein Samba-Server, sie ist selbst nur Client der NAS. # Der Weg, der funktioniert: DIESELBE Freigabe einhängen, die auch Rippy nutzt. # # Auf der GPU-Maschine: # 1. Dieses Repo klonen (oder nur dieses File + Zugriff aufs Registry-Image) # 2. Die Freigabe einhängen, die Rippy als Arbeitsverzeichnis UND Ablage # benutzt (Einstellungen → Ripping). Heißt sie in Rippy „rippy", liegt # sie dort unter /app/media/rippy — also z. B.: # mount -t cifs //NAS/rippy /mnt/rippy-freigabe -o guest,iocharset=utf8 # 3. Unten RIPPY_HOST setzen, den Freigabe-Pfad im volumes-Block anpassen # und starten: # RIPPY_HOST=192.168.178.162 docker compose \ # -f deploy/remote-transcode-worker.yml up -d --build # # Passt der Pfad im Container nicht (weil die Freigabe woanders hängt), gibt es # als Ausweg RIPPY_PATH_MAP — dieselbe Übersetzung, die der Windows-Worker # nutzt, Format: /app/media/rippy=/mnt/anderer-pfad (Paare per „;"). # Den fertigen Wert nennt GET /worker-setup/pfad-map. # # Der Worker meldet seine Encoder-Fähigkeiten automatisch — er taucht danach # unter Einstellungen → Worker auf. Er bedient NUR die transcode-Queue; # gerippt wird weiterhin dort, wo das Laufwerk hängt. services: transcode-worker: build: context: .. dockerfile: docker/worker/Dockerfile command: ["celery", "-A", "celery_app", "worker", "--loglevel=info", "-Q", "transcode", "-n", "gpu-worker@%h"] environment: - REDIS_URL=redis://${RIPPY_HOST:?RIPPY_HOST setzen}:6379/0 - DATABASE_URL=postgresql://rippy:rippy@${RIPPY_HOST}:5432/rippy - RIP_OUTPUT_DIR=/app/media - RAW_DIR=/app/temp/raw # Anzeigename in Einstellungen → Worker — z. B. den Maschinennamen # setzen: WORKER_NAME=gaming-pc docker compose -f … up -d - WORKER_NAME=${WORKER_NAME:-transcode-worker} # Serien-Episoden-Matching fragt die Rippy-API nach Laufzeiten - API_URL=http://${RIPPY_HOST}:8000 # Nur nötig, wenn die Freigabe hier NICHT unter demselben Pfad liegt wie # in Rippy. Fertigen Wert holen: curl http://${RIPPY_HOST}/api/worker-setup/pfad-map - RIPPY_PATH_MAP=${RIPPY_PATH_MAP:-} volumes: # LINKS der Pfad auf DIESER Maschine, RECHTS der Pfad, den Rippy nennt. # Rechts muss stehen, was in Rippy als Speicherziel heißt: ein Ziel # namens „rippy" ist dort /app/media/rippy. Prüfen mit # curl http:///api/worker-setup/pfad-map - /mnt/rippy-freigabe:/app/media/rippy devices: # GPU für Hardware-Encoding (AMD/Intel: /dev/dri; NVIDIA: nvidia-runtime) - /dev/dri:/dev/dri restart: unless-stopped