2026-04-24 10:17:55 +00:00
2026-03-30 19:32:47 +00:00
2026-03-05 11:04:20 +00:00
2026-03-30 19:24:50 +00:00
2026-04-24 10:17:55 +00:00
2026-03-09 20:37:56 +00:00
2026-04-21 14:27:07 +00:00
2026-04-21 14:52:30 +00:00
2026-04-24 10:17:55 +00:00
2026-04-21 14:52:30 +00:00
2026-03-15 19:01:48 +00:00
2026-03-04 14:18:33 +00:00
2026-04-22 14:36:59 +00:00
2026-04-21 14:27:07 +00:00
2026-04-24 10:17:55 +00:00
2026-04-24 10:17:55 +00:00
2026-04-07 19:12:40 +00:00
2026-03-14 13:18:44 +00:00

Ripster

Ripster ist eine lokale Web-Anwendung für halbautomatisches Disc-Ripping, Audiobook-Verarbeitung und Datei-Konvertierung. Plugin-basierte Architektur mit MakeMKV + HandBrake + FFmpeg, inklusive Metadaten-Auswahl, Track-Review, Queue, Skripten/Ketten und Job-Historie.


Was Ripster kann

Disc-Ripping & Encoding

  • Disc-Erkennung mit Pipeline-Status in Echtzeit (WebSocket)
  • Medienprofil-Erkennung (Blu-ray/DVD/CD/Sonstiges) aus Device-/Filesystem-Heuristik
  • Metadaten-Suche und Zuordnung über OMDb
  • MakeMKV-Analyse und Rip (mkv oder backup) mit profilspezifischen Settings
  • HandBrake-Review und Encoding mit Track-Auswahl, User-Presets, Extra-Args
  • Audio-CD-Ripping mit cdparanoia + Encoding nach FLAC/MP3/Opus/Vorbis (experimentell)

Audiobook-Verarbeitung

  • AAX/Audible-Dateien verarbeiten (Activation Bytes, DRM-Handling)
  • FFmpeg-basiertes Kapitel-Splitting
  • Ausgabeformate: M4B, MP3, FLAC mit Metadaten
  • MusicBrainz-Metadaten-Lookup

Datei-Converter

  • Generische Audio/Video-Dateien konvertieren (MKV, MP4, FLAC, MP3, u. v. m.)
  • Datei-Explorer mit Upload, Umbenennen, Verschieben, Löschen
  • Automatischer Verzeichnis-Scan (Polling konfigurierbar)

Automatisierung & Verwaltung

  • Pre- und Post-Encode-Ausführungen (Skripte und/oder Skript-Ketten)
  • Pipeline-Queue mit Job- und Nicht-Job-Einträgen (script, chain, wait)
  • Cron-Jobs für Skripte/Ketten (inkl. Logs und manueller Auslösung)
  • Aktivitäts-Tracking: Laufende und abgeschlossene Aktionen in Echtzeit im Ripper
  • Download-Queue: Ausgabedateien als ZIP herunterladen
  • Historie mit Re-Encode, Review-Neustart, File-/Job-Löschung und Orphan-Import
  • Hardware-Monitoring (CPU/RAM/GPU/Storage) im Ripper

Tech-Stack

  • Backend: Node.js, Express, SQLite, WebSocket (ws) Plugin-Architektur
  • Frontend: React, Vite, PrimeReact
  • Externe Tools: makemkvcon, HandBrakeCLI, mediainfo, ffmpeg/ffprobe, cdparanoia

Dokumentation

Voraussetzungen

  • Debian 11/12 oder Ubuntu 22.04/24.04
  • root-Rechte + Internetzugang
  • optisches Laufwerk (oder gemountete Quelle) für Disc-Ripping
  • Netzwerk-Zugang für Audiobook-Upload und Datei-Converter optional

Schnellstart (install.sh)

Auf Debian 11/12 oder Ubuntu 22.04/24.04 (root erforderlich):

wget -qO install.sh https://raw.githubusercontent.com/Mboehmlaender/ripster/main/install.sh
sudo bash install.sh

Alternativ direkt per Pipe:

curl -fsSL https://raw.githubusercontent.com/Mboehmlaender/ripster/main/install.sh | sudo bash

install.sh übernimmt u. a.:

  • Node.js 20 (falls nötig)
  • Basistools inkl. mediainfo, ffmpeg, ffprobe
  • CD-Ripping-Tools (cdparanoia, flac, lame, opus-tools, vorbis-tools)
  • MakeMKV
  • HandBrake CLI (Auswahl Standard/CPU oder GPU/NVDEC-Binary für HW-Encoding)
  • nginx
  • Repository-Checkout, npm-Install, Frontend-Build, systemd-Service (ripster-backend)

Danach ist Ripster unter http://<Server-IP> erreichbar.

Wichtige Optionen:

sudo bash install.sh --branch dev          # Branch wählen (Default im Skript: dev)
sudo bash install.sh --dir /opt/ripster    # Installationspfad
sudo bash install.sh --user ripster        # Service-User
sudo bash install.sh --port 3001           # Backend-Port
sudo bash install.sh --host 192.168.1.10   # Host/IP für nginx/CORS
sudo bash install.sh --no-makemkv          # MakeMKV überspringen
sudo bash install.sh --no-handbrake        # HandBrake überspringen
sudo bash install.sh --no-nginx            # nginx-Setup überspringen
sudo bash install.sh --reinstall           # Update (Daten bleiben erhalten)
sudo bash install.sh --help                # Hilfe anzeigen

Konfiguration

UI-Settings (empfohlen)

Die meisten Einstellungen werden in der App unter Settings gepflegt und in SQLite gespeichert:

  • Pfade: Raw Ausgabeordner, Film Ausgabeordner, Log Ordner (jeweils mit Blu-ray/DVD/Audiobook-Varianten)
  • Pfade Converter: Converter Raw-Ordner, Converter Ausgabe (Video), Converter Ausgabe (Audio)
  • Tools: MakeMKV Kommando, HandBrake Kommando, Mediainfo Kommando, FFmpeg Kommando, FFprobe Kommando
  • Profile: medientyp-spezifische Felder für Blu-ray/DVD/Sonstiges (z. B. Preset, Zusatzargumente, Ausgabeformat)
  • Audiobook: Output-Template, RAW-Template
  • Converter: erlaubte Endungen, Auto-Scan-Intervall, Output-Templates
  • Queue/Monitoring: Parallele Jobs, Hardware Monitoring aktiviert, Hardware Monitoring Intervall (ms)
  • Benachrichtigungen: PushOver

Umgebungsvariablen

Backend (backend/src/config.js):

  • PORT (Default: 3001)
  • DB_PATH (Default: backend/data/ripster.db)
  • LOG_DIR (Default: backend/logs)
  • CORS_ORIGIN (Default: *)
  • LOG_LEVEL (debug|info|warn|error, Default: info)

Frontend (Vite):

  • VITE_API_BASE (Default: /api)
  • VITE_WS_URL (optional, überschreibt automatische WS-URL)
  • optional für Remote-Dev: VITE_PUBLIC_ORIGIN, VITE_ALLOWED_HOSTS, VITE_HMR_PROTOCOL, VITE_HMR_HOST, VITE_HMR_CLIENT_PORT

Logs und Daten

Log-Ziel ist primär der in den Settings gepflegte log_dir.

  • Backend-Logs: <log_dir>/backend/backend-latest.log und Tagesdateien
  • Job-Logs: <log_dir>/job-<id>.process.log
  • DB: backend/data/ripster.db

Hinweis: Beim DB-Init wird das Schema geprüft und fehlende Elemente werden migriert.

Projektstruktur

ripster/
  backend/
    src/
      plugins/          # Plugin-System (BluRay, DVD, CD, Audiobook, Converter)
      routes/
      services/
      db/
      utils/
  frontend/
    src/
      pages/            # Ripper, Settings, History, Converter, Downloads, Database
      components/
      api/
  db/schema.sql
  start.sh
  install.sh
  install-dev.sh

API-Überblick

Health

  • GET /api/health

Pipeline

  • GET /api/pipeline/state
  • POST /api/pipeline/analyze
  • POST /api/pipeline/rescan-disc
  • POST /api/pipeline/select-metadata
  • POST /api/pipeline/start/:jobId
  • POST /api/pipeline/confirm-encode/:jobId
  • POST /api/pipeline/cancel
  • POST /api/pipeline/retry/:jobId
  • POST /api/pipeline/reencode/:jobId
  • POST /api/pipeline/restart-review/:jobId
  • POST /api/pipeline/restart-encode/:jobId
  • POST /api/pipeline/resume-ready/:jobId
  • GET /api/pipeline/queue
  • POST /api/pipeline/queue/reorder
  • POST /api/pipeline/queue/entry
  • DELETE /api/pipeline/queue/entry/:entryId

Converter

  • GET /api/converter/tree
  • GET /api/converter/browse
  • POST /api/converter/scan
  • POST /api/converter/create-jobs
  • POST /api/converter/upload
  • POST /api/converter/jobs/from-selection
  • GET /api/converter/jobs
  • GET /api/converter/jobs/:jobId
  • POST /api/converter/jobs/:jobId/start
  • POST /api/converter/jobs/:jobId/cancel
  • DELETE /api/converter/jobs/:jobId
  • DELETE /api/converter/files
  • POST /api/converter/files/rename
  • POST /api/converter/files/move
  • POST /api/converter/files/folder

Downloads

  • GET /api/downloads
  • GET /api/downloads/summary
  • POST /api/downloads/history/:jobId
  • GET /api/downloads/:id/file
  • DELETE /api/downloads/:id

History

  • GET /api/history
  • GET /api/history/:id
  • GET /api/history/database
  • GET /api/history/orphan-raw
  • POST /api/history/orphan-raw/import
  • POST /api/history/:id/omdb/assign
  • POST /api/history/:id/delete-files
  • POST /api/history/:id/delete

Settings

  • GET /api/settings
  • PUT /api/settings/:key
  • PUT /api/settings
  • GET/POST/PUT/DELETE /api/settings/scripts...
  • GET/POST/PUT/DELETE /api/settings/script-chains...
  • GET/POST/PUT/DELETE /api/settings/user-presets...
  • POST /api/settings/pushover/test

Cron-Jobs

  • GET /api/crons
  • POST /api/crons
  • GET /api/crons/:id
  • PUT /api/crons/:id
  • DELETE /api/crons/:id
  • GET /api/crons/:id/logs
  • POST /api/crons/:id/run
  • POST /api/crons/validate-expression

Runtime-Aktivitäten

  • GET /api/activities
  • POST /api/activities/:id/cancel
  • POST /api/activities/:id/next-step
  • POST /api/activities/clear-recent

Troubleshooting

  • WebSocket verbindet nicht:
    • prüfen, ob Frontend über Vite-Proxy läuft (/ws -> Backend)
    • bei Reverse-Proxy Upgrade-Header für /ws setzen
  • Keine Disc erkannt:
    • in den Settings Laufwerksmodus auf Explizites Device stellen und Device Pfad setzen (z. B. /dev/sr0)
  • HandBrake/MakeMKV Fehler:
    • CLI-Binaries im PATH prüfen
    • Preset-Name mit HandBrakeCLI -z prüfen
  • Startfehler wegen Schema:
    • db/schema.sql vorhanden halten

Sicherheit

  • Keine echten Tokens/Passwörter ins Repository committen.
  • Lokale Secrets in .env oder in Settings pflegen, aber nicht versionieren.
S
Description
No description provided
Readme GPL-2.0 77 MiB
Languages
JavaScript 95.6%
CSS 3.1%
Shell 1.3%