DOcs
This commit is contained in:
25
README.md
25
README.md
@@ -33,7 +33,30 @@ Ripster ist eine lokale Web-Anwendung für halbautomatisches Disc-Ripping mit Ma
|
||||
- `HandBrakeCLI`
|
||||
- `mediainfo`
|
||||
|
||||
## Schnellstart
|
||||
## Schnellstart (Produktion)
|
||||
|
||||
Auf Debian 11/12 oder Ubuntu 22.04/24.04 (root erforderlich):
|
||||
|
||||
```bash
|
||||
wget -qO install.sh https://raw.githubusercontent.com/Mboehmlaender/ripster/main/install.sh
|
||||
sudo bash install.sh
|
||||
```
|
||||
|
||||
Das Skript fragt interaktiv, ob HandBrake als Standard-Version (apt) oder mit GPU/NVDEC-Unterstützung (gebündeltes Binary) installiert werden soll.
|
||||
|
||||
Danach ist Ripster unter `http://<Server-IP>` erreichbar.
|
||||
|
||||
Wichtige Optionen:
|
||||
|
||||
```bash
|
||||
sudo bash install.sh --branch dev # anderen Branch installieren
|
||||
sudo bash install.sh --no-makemkv # MakeMKV überspringen
|
||||
sudo bash install.sh --reinstall # Update (Daten bleiben erhalten)
|
||||
```
|
||||
|
||||
## Entwicklungsumgebung
|
||||
|
||||
Für lokale Entwicklung mit Hot-Reload:
|
||||
|
||||
```bash
|
||||
./start.sh
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# API-Referenz
|
||||
# Anhang: API-Referenz
|
||||
|
||||
Ripster bietet eine REST-API für Steuerung/Verwaltung sowie einen WebSocket-Endpunkt für Echtzeit-Updates.
|
||||
|
||||
---
|
||||
REST- und WebSocket-Schnittstellen für Integration, Automatisierung und Debugging.
|
||||
|
||||
## Basis-URL
|
||||
|
||||
@@ -12,13 +10,6 @@ http://localhost:3001
|
||||
|
||||
API-Prefix: `/api`
|
||||
|
||||
Beispiele:
|
||||
|
||||
- `GET /api/health`
|
||||
- `GET /api/pipeline/state`
|
||||
|
||||
---
|
||||
|
||||
## API-Gruppen
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
@@ -73,45 +64,6 @@ Beispiele:
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
## Hinweis
|
||||
|
||||
## Authentifizierung
|
||||
|
||||
Es gibt keine eingebaute Authentifizierung. Ripster ist für lokalen Betrieb gedacht.
|
||||
|
||||
---
|
||||
|
||||
## Fehlerformat
|
||||
|
||||
Fehler werden zentral als JSON geliefert:
|
||||
|
||||
```json
|
||||
{
|
||||
"error": {
|
||||
"message": "Job nicht gefunden.",
|
||||
"statusCode": 404,
|
||||
"reqId": "req_...",
|
||||
"details": [
|
||||
{
|
||||
"field": "name",
|
||||
"message": "Name darf nicht leer sein."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`details` ist optional (z. B. bei Validierungsfehlern).
|
||||
|
||||
---
|
||||
|
||||
## Häufige Statuscodes
|
||||
|
||||
| Code | Bedeutung |
|
||||
|------|-----------|
|
||||
| `200` | Erfolg |
|
||||
| `201` | Ressource erstellt |
|
||||
| `400` | Ungültige Anfrage / Validierungsfehler |
|
||||
| `404` | Ressource nicht gefunden |
|
||||
| `409` | Konflikt (z. B. falscher Pipeline-Zustand, Job läuft bereits) |
|
||||
| `500` | Interner Fehler |
|
||||
Ripster hat keine eingebaute Authentifizierung und ist für lokalen, geschützten Betrieb gedacht.
|
||||
|
||||
30
docs/appendix/index.md
Normal file
30
docs/appendix/index.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Technischer Anhang
|
||||
|
||||
Dieser Bereich enthält die technische Referenz hinter dem Benutzerhandbuch.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- **Konfiguration**
|
||||
- komplette Feldreferenz
|
||||
- Umgebungsvariablen
|
||||
- **Pipeline intern**
|
||||
- Zustandsmodell
|
||||
- Encode-Planung
|
||||
- Playlist-Analyse
|
||||
- Pre-/Post-Encode-Ausführungen
|
||||
- **API-Referenz**
|
||||
- REST-Endpunkte
|
||||
- WebSocket-Events
|
||||
- **Architektur**
|
||||
- Backend-/Frontend-Aufbau
|
||||
- Datenbank
|
||||
- **Deployment**
|
||||
- Betrieb in Entwicklung und Produktion
|
||||
- **Externe Tools**
|
||||
- MakeMKV, HandBrake, MediaInfo
|
||||
|
||||
## Wann du in den Anhang wechselst
|
||||
|
||||
- du integrierst Ripster mit anderen Systemen
|
||||
- du betreibst mehrere Instanzen oder willst tiefer debuggen
|
||||
- du brauchst Feld-/API-/Schema-Details für Automatisierung
|
||||
@@ -1,6 +1,6 @@
|
||||
# Architektur
|
||||
# Anhang: Architektur
|
||||
|
||||
Ripster ist eine Client-Server-Anwendung mit REST + WebSocket.
|
||||
Ripster ist eine Client-Server-Anwendung mit REST + WebSocket und externen CLI-Tools.
|
||||
|
||||
---
|
||||
|
||||
@@ -40,26 +40,7 @@ graph TB
|
||||
|
||||
---
|
||||
|
||||
## Schichten
|
||||
|
||||
### Backend
|
||||
|
||||
- `src/index.js` (Bootstrapping, Routes, WS, Services)
|
||||
- `src/routes/*` (Pipeline, Settings, History, Crons)
|
||||
- `src/services/*` (Business-Logik)
|
||||
- `src/db/database.js` (Init/Migration)
|
||||
- `src/utils/*` (Parser, Dateifunktionen, Validierung)
|
||||
|
||||
### Frontend
|
||||
|
||||
- `App.jsx` + `pages/*` (Dashboard, Settings, History)
|
||||
- `components/*` (Status-/Review-/Dialog-Komponenten)
|
||||
- `api/client.js` (REST-Client)
|
||||
- `hooks/useWebSocket.js` (WS-Reconnect)
|
||||
|
||||
---
|
||||
|
||||
## Weiterführend
|
||||
## Details
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
# Konfiguration
|
||||
# Anhang: Konfiguration
|
||||
|
||||
Dieser Abschnitt ist die technische Referenz zu allen Konfigurationsarten in Ripster.
|
||||
|
||||
## Inhalte
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
@@ -6,7 +10,7 @@
|
||||
|
||||
---
|
||||
|
||||
Alle verfügbaren Einstellungen mit Typen, Standardwerten und Beschreibungen.
|
||||
Vollständige Liste aller UI-Settings (Typ, Default, Hinweise).
|
||||
|
||||
[:octicons-arrow-right-24: Einstellungsreferenz](settings-reference.md)
|
||||
|
||||
@@ -14,8 +18,12 @@
|
||||
|
||||
---
|
||||
|
||||
Umgebungsvariablen für Backend und Frontend.
|
||||
`backend/.env` und `frontend/.env` inkl. Prioritäten.
|
||||
|
||||
[:octicons-arrow-right-24: Umgebungsvariablen](environment.md)
|
||||
|
||||
</div>
|
||||
|
||||
## Zurück zum Handbuch
|
||||
|
||||
- [Benutzerhandbuch Überblick](../getting-started/index.md)
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
# Deployment
|
||||
# Anhang: Deployment
|
||||
|
||||
Technische Betriebsdokumentation für Entwicklung und Produktion.
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
@@ -6,7 +8,7 @@
|
||||
|
||||
---
|
||||
|
||||
Lokale Entwicklungsumgebung einrichten.
|
||||
Lokale Entwicklung mit Hot-Reload.
|
||||
|
||||
[:octicons-arrow-right-24: Entwicklung](development.md)
|
||||
|
||||
@@ -14,7 +16,7 @@
|
||||
|
||||
---
|
||||
|
||||
Ripster auf einem Server dauerhaft betreiben.
|
||||
Installation und Betrieb auf Servern.
|
||||
|
||||
[:octicons-arrow-right-24: Produktion](production.md)
|
||||
|
||||
|
||||
@@ -2,7 +2,117 @@
|
||||
|
||||
---
|
||||
|
||||
## Empfohlene Architektur
|
||||
## Automatische Installation (empfohlen)
|
||||
|
||||
Das mitgelieferte `install.sh` richtet Ripster vollautomatisch auf Debian/Ubuntu ein – inklusive Node.js, MakeMKV, HandBrake, nginx und systemd-Dienst.
|
||||
|
||||
**Unterstützte Systeme:** Debian 11/12, Ubuntu 22.04/24.04
|
||||
**Voraussetzung:** root-Rechte, Internetzugang
|
||||
|
||||
### Schnellstart via curl
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/Mboehmlaender/ripster/main/install.sh | sudo bash
|
||||
```
|
||||
|
||||
Oder mit wget:
|
||||
|
||||
```bash
|
||||
wget -qO- https://raw.githubusercontent.com/Mboehmlaender/ripster/main/install.sh | sudo bash
|
||||
```
|
||||
|
||||
!!! warning "Optionen nur via Datei"
|
||||
Beim Pipen von curl/wget können keine Argumente übergeben werden. Für benutzerdefinierte Optionen zuerst herunterladen und dann mit `sudo bash install.sh [Optionen]` ausführen.
|
||||
|
||||
### Optionen
|
||||
|
||||
| Option | Standard | Beschreibung |
|
||||
|--------|----------|--------------|
|
||||
| `--branch <branch>` | `main` | Git-Branch für die Installation |
|
||||
| `--dir <pfad>` | `/opt/ripster` | Installationsverzeichnis |
|
||||
| `--user <benutzer>` | `ripster` | Systembenutzer für den Dienst |
|
||||
| `--port <port>` | `3001` | Backend-Port |
|
||||
| `--host <hostname>` | Auto (Maschinen-IP) | Hostname/IP für die Weboberfläche |
|
||||
| `--no-makemkv` | – | MakeMKV-Installation überspringen |
|
||||
| `--no-handbrake` | – | HandBrake-Installation überspringen |
|
||||
| `--no-nginx` | – | nginx-Einrichtung überspringen |
|
||||
| `--reinstall` | – | Bestehende Installation aktualisieren (Daten bleiben erhalten) |
|
||||
| `-h`, `--help` | – | Hilfe anzeigen |
|
||||
|
||||
### Beispiele
|
||||
|
||||
```bash
|
||||
# Standard-Installation
|
||||
sudo bash install.sh
|
||||
|
||||
# Anderen Branch und Port verwenden
|
||||
sudo bash install.sh --branch dev --port 8080
|
||||
|
||||
# Ohne MakeMKV (bereits installiert)
|
||||
sudo bash install.sh --no-makemkv
|
||||
|
||||
# Bestehende Installation aktualisieren
|
||||
sudo bash install.sh --reinstall
|
||||
|
||||
# Ohne nginx (eigener Reverse-Proxy)
|
||||
sudo bash install.sh --no-nginx --host mein-server.local
|
||||
```
|
||||
|
||||
### Was das Skript erledigt
|
||||
|
||||
1. **Systemprüfung** – OS-Erkennung und Root-Check
|
||||
2. **Systempakete** – `curl`, `wget`, `git`, `mediainfo`, `udev` u. a.
|
||||
3. **Node.js 20** – via NodeSource, falls noch nicht installiert
|
||||
4. **MakeMKV** – aktuelle Version wird aus dem offiziellen Forum ermittelt und aus dem Quellcode kompiliert (kann mit `--no-makemkv` übersprungen werden)
|
||||
5. **HandBrake** – interaktive Auswahl:
|
||||
- **Option 1**: Standard (`apt install handbrake-cli`)
|
||||
- **Option 2**: Gebündelte GPU-Version mit NVDEC aus `bin/HandBrakeCLI`
|
||||
6. **Systembenutzer** `ripster` – ohne Login-Shell, Gruppen: `cdrom`, `optical`, `disk`, `video`, `render`
|
||||
7. **Repository** – klont Branch nach `--dir` (bei `--reinstall`: sichert DB, pullt, stellt DB wieder her)
|
||||
8. **npm-Abhängigkeiten** – Root, Backend (nur production), Frontend
|
||||
9. **Frontend-Build** – `npm run build` mit relativen API-URLs (nginx-kompatibel)
|
||||
10. **Backend `.env`** – wird automatisch generiert (bei `--reinstall` bleibt bestehende erhalten)
|
||||
11. **Berechtigungen** – `ripster:ripster` auf Installationsverzeichnis, `600` auf `.env`
|
||||
12. **systemd-Dienst** – `ripster-backend.service` erstellt, aktiviert und gestartet
|
||||
13. **nginx** – konfiguriert als Reverse-Proxy für Frontend, `/api/` und `/ws` (kann mit `--no-nginx` übersprungen werden)
|
||||
|
||||
### Nach der Installation
|
||||
|
||||
```bash
|
||||
# Status prüfen
|
||||
sudo systemctl status ripster-backend
|
||||
|
||||
# Logs verfolgen
|
||||
sudo journalctl -u ripster-backend -f
|
||||
|
||||
# Neustart
|
||||
sudo systemctl restart ripster-backend
|
||||
|
||||
# Aktualisieren
|
||||
sudo bash /opt/ripster/install.sh --reinstall
|
||||
```
|
||||
|
||||
**Zugriff:** `http://<Maschinen-IP>` (oder der mit `--host` angegebene Hostname)
|
||||
|
||||
### HandBrake-Modus (GPU/NVDEC)
|
||||
|
||||
Bei nicht-interaktiver Ausführung (Pipe von curl) wird automatisch die Standard-Version gewählt. Für die GPU-Version zuerst herunterladen:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/Mboehmlaender/ripster/main/install.sh -o install.sh
|
||||
sudo bash install.sh
|
||||
# → Interaktive Auswahl: Option 2 für NVDEC
|
||||
```
|
||||
|
||||
Das gebündelte Binary liegt unter `bin/HandBrakeCLI` und wird nach `/usr/local/bin/HandBrakeCLI` kopiert.
|
||||
|
||||
---
|
||||
|
||||
## Manuelle Installation
|
||||
|
||||
Die folgenden Abschnitte beschreiben die einzelnen Schritte für manuelle oder angepasste Setups.
|
||||
|
||||
### Empfohlene Architektur
|
||||
|
||||
```text
|
||||
Client
|
||||
|
||||
@@ -1,99 +1,71 @@
|
||||
# Konfiguration
|
||||
# Ersteinrichtung
|
||||
|
||||
Die Hauptkonfiguration erfolgt über die UI (`Settings`) und wird in SQLite gespeichert.
|
||||
Nach der Installation erfolgt die tägliche Konfiguration fast vollständig in der GUI unter `Settings`.
|
||||
|
||||
---
|
||||
## Ziel
|
||||
|
||||
## Pflichteinstellungen vor dem ersten Rip
|
||||
Vor dem ersten echten Job müssen Pfade, Tools und Metadatenzugriff sauber gesetzt sein.
|
||||
|
||||
### 1) Pfade
|
||||
## Reihenfolge (empfohlen)
|
||||
|
||||
| Einstellung | Beschreibung | Beispiel |
|
||||
|------------|-------------|---------|
|
||||
| `raw_dir` | Basisverzeichnis für RAW-Rips | `/mnt/ripster/raw` |
|
||||
| `movie_dir` | Basisverzeichnis für finale Encodes | `/mnt/ripster/movies` |
|
||||
| `log_dir` | Verzeichnis für Prozess-/Backend-Logs | `/mnt/ripster/logs` |
|
||||
### 1. `Settings` -> Tab `Konfiguration`
|
||||
|
||||
Optional profilspezifisch:
|
||||
Setze zuerst diese Pflichtwerte:
|
||||
|
||||
- `raw_dir_bluray`, `raw_dir_dvd`, `raw_dir_other`
|
||||
- `movie_dir_bluray`, `movie_dir_dvd`, `movie_dir_other`
|
||||
| Bereich | Wichtige Felder |
|
||||
|---|---|
|
||||
| Pfade | `raw_dir`, `movie_dir`, `log_dir` |
|
||||
| Tools | `makemkv_command`, `handbrake_command`, `mediainfo_command` |
|
||||
| Metadaten | `omdb_api_key`, optional `omdb_default_type` |
|
||||
|
||||
### 2) Tools
|
||||
Danach `Änderungen speichern`.
|
||||
|
||||
| Einstellung | Standard |
|
||||
|------------|---------|
|
||||
| `makemkv_command` | `makemkvcon` |
|
||||
| `handbrake_command` | `HandBrakeCLI` |
|
||||
| `mediainfo_command` | `mediainfo` |
|
||||
### 2. Medienprofile prüfen
|
||||
|
||||
### 3) OMDb
|
||||
Wenn du Blu-ray und DVD unterschiedlich behandeln willst, pflege die profilbezogenen Felder:
|
||||
|
||||
| Einstellung | Beschreibung |
|
||||
|------------|-------------|
|
||||
| `omdb_api_key` | API-Key von omdbapi.com |
|
||||
| `omdb_default_type` | `movie`, `series`, `episode` |
|
||||
- `*_bluray`
|
||||
- `*_dvd`
|
||||
- optional `*_other`
|
||||
|
||||
---
|
||||
Typische Beispiele:
|
||||
|
||||
## Encode-Konfiguration (wichtig)
|
||||
- `handbrake_preset_bluray` und `handbrake_preset_dvd`
|
||||
- `raw_dir_bluray` und `raw_dir_dvd`
|
||||
- `filename_template_bluray` und `filename_template_dvd`
|
||||
|
||||
Ripster arbeitet profilspezifisch, typischerweise über:
|
||||
### 3. Queue und Monitoring festlegen
|
||||
|
||||
- Blu-ray: `handbrake_preset_bluray`, `handbrake_extra_args_bluray`, `output_extension_bluray`, `filename_template_bluray`
|
||||
- DVD: `handbrake_preset_dvd`, `handbrake_extra_args_dvd`, `output_extension_dvd`, `filename_template_dvd`
|
||||
- `pipeline_max_parallel_jobs` für parallele Jobs
|
||||
- `hardware_monitoring_enabled` und Intervall für Live-Metriken im Dashboard
|
||||
|
||||
### Template-Platzhalter
|
||||
### 4. Optional: Push-Benachrichtigungen
|
||||
|
||||
Verfügbar in `filename_template_*` und `output_folder_template_*`:
|
||||
|
||||
- `${title}`
|
||||
- `${year}`
|
||||
- `${imdbId}`
|
||||
|
||||
Beispiel:
|
||||
|
||||
```text
|
||||
${title} (${year})
|
||||
-> Inception (2010).mkv
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## MakeMKV-spezifisch
|
||||
|
||||
| Einstellung | Standard | Hinweis |
|
||||
|------------|---------|--------|
|
||||
| `makemkv_min_length_minutes` | `60` | Kandidaten-Filter |
|
||||
| `makemkv_rip_mode_bluray` | `backup` | `mkv` oder `backup` |
|
||||
| `makemkv_rip_mode_dvd` | `mkv` | `mkv` oder `backup` |
|
||||
| `makemkv_registration_key` | leer | optional, wird via `makemkvcon reg` gesetzt |
|
||||
|
||||
---
|
||||
|
||||
## Monitoring & Queue
|
||||
|
||||
| Einstellung | Standard |
|
||||
|------------|---------|
|
||||
| `hardware_monitoring_enabled` | `true` |
|
||||
| `hardware_monitoring_interval_ms` | `5000` |
|
||||
| `pipeline_max_parallel_jobs` | `1` |
|
||||
|
||||
---
|
||||
|
||||
## PushOver (optional)
|
||||
|
||||
Basis:
|
||||
In den Benachrichtigungsfeldern setzen:
|
||||
|
||||
- `pushover_enabled`
|
||||
- `pushover_token`
|
||||
- `pushover_user`
|
||||
|
||||
Zusätzlich pro Event ein/aus (z. B. `pushover_notify_job_finished`).
|
||||
Dann über `PushOver Test` direkt prüfen.
|
||||
|
||||
---
|
||||
## 2-Minuten-Funktionstest
|
||||
|
||||
## Verwandte Doku
|
||||
1. `Dashboard` öffnen
|
||||
2. Disc einlegen
|
||||
3. `Analyse starten`
|
||||
4. Metadaten übernehmen
|
||||
5. Bis `READY_TO_ENCODE` laufen lassen
|
||||
|
||||
- [Einstellungsreferenz](../configuration/settings-reference.md)
|
||||
- [Umgebungsvariablen](../configuration/environment.md)
|
||||
Wenn diese Schritte funktionieren, ist die Grundkonfiguration korrekt.
|
||||
|
||||
## Wenn Werte nicht gespeichert werden
|
||||
|
||||
- Feld mit Fehler markieren lassen (rote Validierung im Formular)
|
||||
- Pfadangaben und numerische Werte prüfen
|
||||
- bei Tool-Pfaden direkt CLI-Aufruf im Terminal testen
|
||||
|
||||
## Weiter
|
||||
|
||||
- [Erster Lauf](quickstart.md)
|
||||
- [GUI-Seiten im Detail](../gui/index.md)
|
||||
|
||||
@@ -1,41 +1,33 @@
|
||||
# Erste Schritte
|
||||
# Benutzerhandbuch Überblick
|
||||
|
||||
Dieser Abschnitt führt dich durch die Installation und Einrichtung von Ripster.
|
||||
Dieses Kapitel ist für den **Betrieb von Ripster im Alltag** geschrieben.
|
||||
|
||||
## Überblick
|
||||
## Zielgruppe
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
- Anwender, die Discs verarbeiten wollen
|
||||
- Betreiber, die den täglichen Ablauf stabil fahren möchten
|
||||
- Power-User, die Queue/Skripte/Cron im UI steuern möchten
|
||||
|
||||
- :material-list-check: **Voraussetzungen**
|
||||
## Kapitelstruktur
|
||||
|
||||
---
|
||||
| Kapitel | Zweck |
|
||||
|---|---|
|
||||
| [Voraussetzungen](prerequisites.md) | Prüfen, ob System und Tools bereit sind |
|
||||
| [Installation](installation.md) | Ripster aufsetzen und starten |
|
||||
| [Ersteinrichtung](configuration.md) | Pfade, Tools und Metadaten korrekt setzen |
|
||||
| [Erster Lauf](quickstart.md) | Ein kompletter Job von Disc bis Datei |
|
||||
| [GUI-Seiten](../gui/index.md) | Alle Ansichten und Aktionen im Detail |
|
||||
| [Workflows](../workflows/index.md) | Typische Abläufe und Entscheidungen aus User-Sicht |
|
||||
|
||||
Systemanforderungen und externe Tools, die vor der Installation benötigt werden.
|
||||
## Wenn du neu startest
|
||||
|
||||
[:octicons-arrow-right-24: Voraussetzungen prüfen](prerequisites.md)
|
||||
1. [Voraussetzungen](prerequisites.md)
|
||||
2. [Installation](installation.md)
|
||||
3. [Ersteinrichtung](configuration.md)
|
||||
4. [Erster Lauf](quickstart.md)
|
||||
|
||||
- :material-download: **Installation**
|
||||
## Wenn Ripster bereits läuft
|
||||
|
||||
---
|
||||
|
||||
Schritt-für-Schritt-Anleitung zur Installation von Ripster.
|
||||
|
||||
[:octicons-arrow-right-24: Installation starten](installation.md)
|
||||
|
||||
- :material-tune: **Konfiguration**
|
||||
|
||||
---
|
||||
|
||||
Einrichten von Pfaden, API-Keys und Encoding-Presets.
|
||||
|
||||
[:octicons-arrow-right-24: Konfigurieren](configuration.md)
|
||||
|
||||
- :material-rocket-launch: **Schnellstart**
|
||||
|
||||
---
|
||||
|
||||
Rippe deinen ersten Film in wenigen Minuten.
|
||||
|
||||
[:octicons-arrow-right-24: Loslegen](quickstart.md)
|
||||
|
||||
</div>
|
||||
1. [GUI-Seiten](../gui/index.md)
|
||||
2. [Workflows](../workflows/index.md)
|
||||
3. Bei Detailfragen: [Technischer Anhang](../appendix/index.md)
|
||||
|
||||
@@ -1,103 +1,84 @@
|
||||
# Installation
|
||||
|
||||
---
|
||||
Die empfohlene Installation läuft über `install.sh` und richtet Ripster vollständig ein.
|
||||
|
||||
## Repository klonen
|
||||
## Zielbild nach der Installation
|
||||
|
||||
- Ripster-Backend als `systemd`-Dienst
|
||||
- Frontend über nginx erreichbar
|
||||
- UI auf `http://<Server-IP>`
|
||||
|
||||
## Schritt-für-Schritt
|
||||
|
||||
### 1. Installationsskript herunterladen
|
||||
|
||||
```bash
|
||||
git clone https://github.com/YOUR_GITHUB_USERNAME/ripster.git
|
||||
cd ripster
|
||||
wget -qO install.sh https://raw.githubusercontent.com/Mboehmlaender/ripster/main/install.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Dev-Start (empfohlen)
|
||||
### 2. Installation ausführen
|
||||
|
||||
```bash
|
||||
./start.sh
|
||||
sudo bash install.sh
|
||||
```
|
||||
|
||||
`start.sh`:
|
||||
Während der Installation wirst du nach dem HandBrake-Modus gefragt:
|
||||
|
||||
1. prüft Node-Version (`>= 20.19.0`)
|
||||
2. installiert Dependencies (Root/Backend/Frontend)
|
||||
3. startet Backend + Frontend parallel
|
||||
- `1` Standard (`apt`)
|
||||
- `2` GPU/NVDEC (gebündeltes Binary)
|
||||
|
||||
Danach:
|
||||
|
||||
- Backend: `http://localhost:3001`
|
||||
- Frontend: `http://localhost:5173`
|
||||
|
||||
Stoppen: mit `Ctrl+C` im laufenden Terminal.
|
||||
|
||||
---
|
||||
|
||||
## Manuell starten
|
||||
### 3. Dienststatus prüfen
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm --prefix backend install
|
||||
npm --prefix frontend install
|
||||
npm run dev
|
||||
sudo systemctl status ripster-backend
|
||||
```
|
||||
|
||||
Oder getrennt:
|
||||
### 4. Weboberfläche öffnen
|
||||
|
||||
- Mit nginx: `http://<Server-IP>`
|
||||
- Ohne nginx (`--no-nginx`): API auf `http://<Server-IP>:3001/api`
|
||||
|
||||
## Wichtige Optionen
|
||||
|
||||
| Option | Zweck |
|
||||
|---|---|
|
||||
| `--branch <branch>` | anderen Branch installieren |
|
||||
| `--dir <pfad>` | Installationsverzeichnis ändern |
|
||||
| `--port <port>` | Backend-Port setzen |
|
||||
| `--host <hostname>` | Hostname/IP für nginx/CORS |
|
||||
| `--no-makemkv` | MakeMKV nicht installieren |
|
||||
| `--no-handbrake` | HandBrake nicht installieren |
|
||||
| `--no-nginx` | nginx-Konfiguration überspringen |
|
||||
| `--reinstall` | Update einer bestehenden Installation |
|
||||
|
||||
Beispiele:
|
||||
|
||||
```bash
|
||||
npm run dev:backend
|
||||
npm run dev:frontend
|
||||
sudo bash install.sh --branch dev
|
||||
sudo bash install.sh --port 8080 --host ripster.local
|
||||
sudo bash install.sh --reinstall
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Optional: .env-Dateien anlegen
|
||||
|
||||
### Backend
|
||||
## Betrieb im Alltag
|
||||
|
||||
```bash
|
||||
cp backend/.env.example backend/.env
|
||||
# Logs live ansehen
|
||||
sudo journalctl -u ripster-backend -f
|
||||
|
||||
# Dienst neu starten
|
||||
sudo systemctl restart ripster-backend
|
||||
|
||||
# Update aus bestehender Installation
|
||||
sudo bash /opt/ripster/install.sh --reinstall
|
||||
```
|
||||
|
||||
Beispiel:
|
||||
## Häufige Stolperstellen
|
||||
|
||||
```env
|
||||
PORT=3001
|
||||
DB_PATH=./data/ripster.db
|
||||
LOG_DIR=./logs
|
||||
CORS_ORIGIN=http://localhost:5173
|
||||
LOG_LEVEL=info
|
||||
```
|
||||
- `Permission denied` am Laufwerk: Laufwerksrechte/Gruppen prüfen
|
||||
- Tools nicht gefunden: `makemkvcon`, `HandBrakeCLI`, `mediainfo` im `PATH` prüfen
|
||||
- UI nicht erreichbar: nginx-Status und Port/Firewall prüfen
|
||||
|
||||
### Frontend
|
||||
## Danach weiter
|
||||
|
||||
```bash
|
||||
cp frontend/.env.example frontend/.env
|
||||
```
|
||||
|
||||
Beispiel:
|
||||
|
||||
```env
|
||||
VITE_API_BASE=/api
|
||||
# optional:
|
||||
# VITE_WS_URL=ws://localhost:3001/ws
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Datenbank
|
||||
|
||||
SQLite wird automatisch beim Backend-Start initialisiert:
|
||||
|
||||
```text
|
||||
backend/data/ripster.db
|
||||
```
|
||||
|
||||
Schema-Quelle: `db/schema.sql`
|
||||
|
||||
---
|
||||
|
||||
## Nächste Schritte
|
||||
|
||||
1. Browser öffnen: `http://localhost:5173`
|
||||
2. In `Settings` Pfade/Tools/API-Keys prüfen
|
||||
3. Erste Disc einlegen und Workflow starten
|
||||
1. [Ersteinrichtung](configuration.md)
|
||||
2. [Erster Lauf](quickstart.md)
|
||||
|
||||
@@ -1,157 +1,70 @@
|
||||
# Voraussetzungen
|
||||
|
||||
Bevor du Ripster installierst, stelle sicher, dass folgende Software auf deinem System verfügbar ist.
|
||||
Diese Seite ist die praktische Checkliste vor der Installation.
|
||||
|
||||
---
|
||||
## 1) System
|
||||
|
||||
## System-Anforderungen
|
||||
| Punkt | Mindestwert | Empfehlung |
|
||||
|---|---|---|
|
||||
| Betriebssystem | Linux oder macOS | Ubuntu 22.04+ |
|
||||
| Node.js | 20.19.0 | 20.x LTS |
|
||||
| RAM | 4 GB | 8 GB+ |
|
||||
| Freier Speicher | 50 GB | 500 GB+ |
|
||||
|
||||
| Anforderung | Mindestversion | Empfohlen |
|
||||
|------------|----------------|-----------|
|
||||
| **Betriebssystem** | Linux / macOS | Ubuntu 22.04+ |
|
||||
| **Node.js** | 20.19.0 | 20.x LTS |
|
||||
| **RAM** | 4 GB | 8 GB+ |
|
||||
| **Festplatte** | 50 GB frei | 500 GB+ (für Roh-MKVs) |
|
||||
|
||||
---
|
||||
|
||||
## Node.js
|
||||
|
||||
Ripster benötigt **Node.js >= 20.19.0**.
|
||||
|
||||
=== "nvm (empfohlen)"
|
||||
|
||||
```bash
|
||||
# nvm installieren
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
|
||||
# Node.js 20 installieren
|
||||
nvm install 20
|
||||
nvm use 20
|
||||
|
||||
# Version prüfen
|
||||
node --version # v20.x.x
|
||||
```
|
||||
|
||||
=== "Ubuntu/Debian"
|
||||
|
||||
```bash
|
||||
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
||||
sudo apt-get install -y nodejs
|
||||
|
||||
node --version # v20.x.x
|
||||
```
|
||||
|
||||
=== "macOS (Homebrew)"
|
||||
|
||||
```bash
|
||||
brew install node@20
|
||||
node --version # v20.x.x
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Externe Tools
|
||||
|
||||
### MakeMKV
|
||||
|
||||
!!! warning "Lizenz erforderlich"
|
||||
MakeMKV ist für den persönlichen Gebrauch kostenlos (Beta-Lizenz), benötigt aber eine gültige Lizenz.
|
||||
Node-Version prüfen:
|
||||
|
||||
```bash
|
||||
# Ubuntu/Debian - PPA verwenden
|
||||
sudo add-apt-repository ppa:heyarje/makemkv-beta
|
||||
sudo apt-get update
|
||||
sudo apt-get install makemkv-bin makemkv-oss
|
||||
node --version
|
||||
```
|
||||
|
||||
# Installierte Version prüfen
|
||||
## 2) Externe Tools
|
||||
|
||||
Ripster benötigt folgende CLI-Tools im `PATH`:
|
||||
|
||||
- `makemkvcon`
|
||||
- `HandBrakeCLI`
|
||||
- `mediainfo`
|
||||
|
||||
Schnell prüfen:
|
||||
|
||||
```bash
|
||||
makemkvcon --version
|
||||
```
|
||||
|
||||
[:octicons-link-external-24: MakeMKV Download](https://www.makemkv.com/download/){ .md-button }
|
||||
|
||||
### HandBrake CLI
|
||||
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
sudo add-apt-repository ppa:stebbins/handbrake-releases
|
||||
sudo apt-get update
|
||||
sudo apt-get install handbrake-cli
|
||||
|
||||
# Version prüfen
|
||||
HandBrakeCLI --version
|
||||
|
||||
# macOS
|
||||
brew install handbrake
|
||||
```
|
||||
|
||||
[:octicons-link-external-24: HandBrake Download](https://handbrake.fr/downloads2.php){ .md-button }
|
||||
|
||||
### MediaInfo
|
||||
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
sudo apt-get install mediainfo
|
||||
|
||||
# macOS
|
||||
brew install mediainfo
|
||||
|
||||
# Version prüfen
|
||||
mediainfo --Version
|
||||
```
|
||||
|
||||
---
|
||||
## 3) Optisches Laufwerk
|
||||
|
||||
## Disc-Laufwerk
|
||||
|
||||
Ripster benötigt ein physisches **DVD- oder Blu-ray-Laufwerk**.
|
||||
|
||||
!!! danger "LibDriveIO-Modus erforderlich"
|
||||
Das Laufwerk muss im **LibDriveIO-Modus** betrieben werden – MakeMKV greift direkt auf Rohdaten des Laufwerks zu. Ohne diesen Modus können verschlüsselte Blu-rays (insbesondere UHD) nicht gelesen werden.
|
||||
|
||||
Nicht alle Laufwerke unterstützen den direkten Zugriff. Eine Anleitung zur Einrichtung und Liste kompatibler Laufwerke findet sich im [MakeMKV-Forum](https://www.makemkv.com/forum/viewtopic.php?t=18856).
|
||||
Für Disc-Betrieb muss ein DVD/Blu-ray-Laufwerk erreichbar sein.
|
||||
|
||||
```bash
|
||||
# Laufwerk prüfen
|
||||
ls /dev/sr*
|
||||
# oder
|
||||
lsblk | grep rom
|
||||
```
|
||||
|
||||
# Laufwerk-Berechtigungen setzen (erforderlich für LibDriveIO)
|
||||
Wenn nötig Rechte setzen (Beispiel):
|
||||
|
||||
```bash
|
||||
sudo chmod a+rw /dev/sr0
|
||||
```
|
||||
|
||||
!!! info "Blu-ray unter Linux"
|
||||
MakeMKV bringt mit LibDriveIO eine eigene Entschlüsselung mit – externe Bibliotheken wie `libaacs` sind in der Regel nicht erforderlich.
|
||||
## 4) OMDb API-Key
|
||||
|
||||
---
|
||||
Für automatische Metadaten (Titel, Poster, IMDb-ID):
|
||||
|
||||
## OMDb API-Key
|
||||
1. Key unter [omdbapi.com](https://www.omdbapi.com/apikey.aspx) anlegen
|
||||
2. in den `Settings` als `omdb_api_key` eintragen
|
||||
|
||||
Ripster verwendet die [OMDb API](https://www.omdbapi.com/) für Filmmetadaten.
|
||||
## 5) Optional: PushOver
|
||||
|
||||
1. Registriere dich kostenlos auf [omdbapi.com](https://www.omdbapi.com/apikey.aspx)
|
||||
2. Bestätige deine E-Mail-Adresse
|
||||
3. Notiere deinen API-Key – du gibst ihn später in den Einstellungen ein
|
||||
Für Push-Nachrichten bei Erfolg/Fehler:
|
||||
|
||||
---
|
||||
- Account/App auf [pushover.net](https://pushover.net)
|
||||
- `pushover_token` und `pushover_user` später in den `Settings` setzen
|
||||
|
||||
## Optionale Voraussetzungen
|
||||
## Abschluss-Checkliste
|
||||
|
||||
### PushOver (Benachrichtigungen)
|
||||
|
||||
Für mobile Push-Benachrichtigungen bei Fertigstellung oder Fehlern:
|
||||
|
||||
- App kaufen auf [pushover.net](https://pushover.net) (~5 USD einmalig)
|
||||
- **User Key** und **API Token** notieren
|
||||
|
||||
---
|
||||
|
||||
## Checkliste
|
||||
|
||||
- [ ] Node.js >= 20.19.0 installiert (`node --version`)
|
||||
- [ ] `makemkvcon` installiert (`makemkvcon --version`)
|
||||
- [ ] `HandBrakeCLI` installiert (`HandBrakeCLI --version`)
|
||||
- [ ] `mediainfo` installiert (`mediainfo --Version`)
|
||||
- [ ] DVD/Blu-ray Laufwerk vorhanden (`ls /dev/sr*`)
|
||||
- [ ] OMDb API-Key beschafft
|
||||
- [ ] Node.js 20.x verfügbar
|
||||
- [ ] `makemkvcon`, `HandBrakeCLI`, `mediainfo` ausführbar
|
||||
- [ ] Laufwerk erkannt
|
||||
- [ ] OMDb Key bereit
|
||||
|
||||
@@ -1,114 +1,70 @@
|
||||
# Schnellstart – Erster kompletter Job
|
||||
# Erster Lauf
|
||||
|
||||
Diese Seite führt durch den typischen ersten Lauf.
|
||||
Dieser Ablauf zeigt einen vollständigen Job aus Anwendersicht: von Disc-Erkennung bis fertiger Datei.
|
||||
|
||||
---
|
||||
## 1. Dashboard öffnen und Disc einlegen
|
||||
|
||||
## 1) Starten
|
||||
Erwartung:
|
||||
|
||||
```bash
|
||||
cd ripster
|
||||
./start.sh
|
||||
```
|
||||
- Status wechselt auf `DISC_DETECTED` bzw. `Medium erkannt`
|
||||
- im Bereich `Disk-Information` sind Laufwerksdaten sichtbar
|
||||
|
||||
Öffne `http://localhost:5173`.
|
||||
Wenn nichts passiert: `Laufwerk neu lesen`.
|
||||
|
||||
---
|
||||
## 2. Analyse starten
|
||||
|
||||
## 2) Disc einlegen
|
||||
Aktion im Dashboard:
|
||||
|
||||
Pipeline wechselt auf `DISC_DETECTED`.
|
||||
- `Analyse starten`
|
||||
|
||||
Falls nötig manuell neu scannen:
|
||||
Erwartung:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:3001/api/pipeline/rescan-disc
|
||||
```
|
||||
- Status `ANALYZING`
|
||||
- danach Metadaten-Dialog
|
||||
|
||||
---
|
||||
## 3. Metadaten auswählen
|
||||
|
||||
## 3) Analyse starten
|
||||
Im Dialog `Metadaten auswählen`:
|
||||
|
||||
Klicke im Dashboard auf `Analyse starten`.
|
||||
1. OMDb-Suche nutzen oder manuell eintragen
|
||||
2. passenden Treffer markieren
|
||||
3. `Auswahl übernehmen`
|
||||
|
||||
Intern:
|
||||
## 4. Auf den nächsten Zustand reagieren
|
||||
|
||||
- Job wird angelegt
|
||||
- MakeMKV-Analyse läuft (`ANALYZING`)
|
||||
- UI wechselt in Metadatenauswahl (`METADATA_SELECTION`)
|
||||
- Normalfall ohne vorhandenes RAW: `RIPPING` -> `MEDIAINFO_CHECK` -> `READY_TO_ENCODE`
|
||||
- bei vorhandenem RAW: direkt `MEDIAINFO_CHECK` -> `READY_TO_ENCODE`
|
||||
- bei unklarer Blu-ray-Playlist: `WAITING_FOR_USER_DECISION` (Playlist auswählen und übernehmen)
|
||||
|
||||
---
|
||||
## 5. Review in `READY_TO_ENCODE`
|
||||
|
||||
## 4) Metadaten bestätigen
|
||||
Im aufgeklappten Job (`Pipeline-Status`):
|
||||
|
||||
Im Dialog:
|
||||
- Encode-Titel wählen
|
||||
- Audio-/Subtitle-Spuren prüfen
|
||||
- optional User-Preset auswählen
|
||||
- optional Pre-/Post-Skripte bzw. Ketten hinzufügen
|
||||
|
||||
- OMDb-Ergebnis wählen oder manuell eintragen
|
||||
- bei Playlist-Abfrage ggf. `selectedPlaylist` wählen
|
||||
Dann `Encoding starten`.
|
||||
|
||||
Nach Bestätigung startet Ripster automatisch weiter.
|
||||
## 6. Encoding überwachen
|
||||
|
||||
---
|
||||
Während `ENCODING`:
|
||||
|
||||
## 5) Pipeline-Pfade
|
||||
- Fortschritt + ETA im Dashboard
|
||||
- Live-Log im `Pipeline-Status`
|
||||
- Queue- und Skript/Cron-Status parallel beobachtbar
|
||||
|
||||
Abhängig von Job/RAW-Situation:
|
||||
## 7. Ergebnis prüfen
|
||||
|
||||
- **kein RAW vorhanden** -> `RIPPING`
|
||||
- **RAW vorhanden** -> `MEDIAINFO_CHECK`
|
||||
- **mehrdeutige Playlist** -> `WAITING_FOR_USER_DECISION`
|
||||
Bei `FINISHED`:
|
||||
|
||||
Wenn Parallel-Limit erreicht ist, wird der Job in die Queue eingereiht.
|
||||
1. Seite `Historie` öffnen
|
||||
2. Job in Details öffnen
|
||||
3. Output-Pfad, Status und Log prüfen
|
||||
|
||||
---
|
||||
## Typische Folgeaktionen
|
||||
|
||||
## 6) Review (`READY_TO_ENCODE`)
|
||||
|
||||
Im Review-Panel:
|
||||
|
||||
- Titel auswählen (falls mehrere)
|
||||
- Audio-/Subtitle-Tracks auswählen
|
||||
- optional User-Preset anwenden
|
||||
- optional Pre-/Post-Skripte und Ketten hinzufügen
|
||||
|
||||
Mit `Encoding starten` wird `confirm-encode` + Start ausgelöst.
|
||||
|
||||
---
|
||||
|
||||
## 7) Encoding (`ENCODING`)
|
||||
|
||||
Während Encoding:
|
||||
|
||||
- Live-Fortschritt/ETA über WebSocket
|
||||
- Pre-Encode-Ausführungen laufen vor HandBrake
|
||||
- Post-Encode-Ausführungen laufen nach HandBrake
|
||||
|
||||
Wichtig:
|
||||
|
||||
- Pre-Encode-Fehler -> Job endet in `ERROR`
|
||||
- Post-Encode-Fehler -> Job kann `FINISHED` bleiben, aber mit Fehlerhinweis im Status/Log
|
||||
|
||||
---
|
||||
|
||||
## 8) Abschluss (`FINISHED`)
|
||||
|
||||
Ergebnis:
|
||||
|
||||
- Ausgabe in `movie_dir` (ggf. profilspezifisch)
|
||||
- Job in Historie sichtbar
|
||||
- Logs im konfigurierten `log_dir`
|
||||
|
||||
---
|
||||
|
||||
## Nützliche API-Shortcuts
|
||||
|
||||
```bash
|
||||
# Pipeline-Snapshot
|
||||
curl http://localhost:3001/api/pipeline/state
|
||||
|
||||
# Queue-Snapshot
|
||||
curl http://localhost:3001/api/pipeline/queue
|
||||
|
||||
# Jobs
|
||||
curl http://localhost:3001/api/history
|
||||
```
|
||||
- Falsches OMDb-Match: in `Historie` -> `OMDb neu zuordnen`
|
||||
- Neue Encodierung aus RAW: `RAW neu encodieren`
|
||||
- Prüfung komplett neu aufbauen: `Review neu starten`
|
||||
|
||||
124
docs/gui/dashboard.md
Normal file
124
docs/gui/dashboard.md
Normal file
@@ -0,0 +1,124 @@
|
||||
# Dashboard
|
||||
|
||||
Das Dashboard ist die **Betriebszentrale** für laufende Jobs.
|
||||
|
||||
## Aufbau der Seite
|
||||
|
||||
Die Bereiche erscheinen in dieser Reihenfolge:
|
||||
|
||||
1. `Hardware Monitoring`
|
||||
2. `Job Queue`
|
||||
3. `Skript- / Cron-Status`
|
||||
4. `Job Übersicht`
|
||||
5. `Disk-Information`
|
||||
|
||||
---
|
||||
|
||||
## 1) Hardware Monitoring
|
||||
|
||||
Zeigt live:
|
||||
|
||||
- CPU (gesamt + optional pro Kern)
|
||||
- RAM
|
||||
- GPU-Auslastung/Temperatur/VRAM
|
||||
- freien Speicher in den konfigurierten Pfaden
|
||||
|
||||
Wichtig für den Betrieb:
|
||||
|
||||
- Hohe Speicherauslastung oder fast volle Zielpfade früh erkennen
|
||||
- über `Settings` aktivierbar/deaktivierbar (`hardware_monitoring_*`)
|
||||
|
||||
## 2) Job Queue
|
||||
|
||||
Zwei Spalten:
|
||||
|
||||
- `Laufende Jobs`
|
||||
- `Warteschlange`
|
||||
|
||||
Mögliche Aktionen:
|
||||
|
||||
- Queue per Drag-and-Drop umsortieren
|
||||
- Queue-Job entfernen (`X`)
|
||||
- zusätzliche Queue-Elemente einfügen (`+`):
|
||||
- Skript
|
||||
- Skriptkette
|
||||
- Wartezeit
|
||||
|
||||
Hinweis:
|
||||
|
||||
- `Parallel` zeigt das aktuell konfigurierte Parallel-Limit (`pipeline_max_parallel_jobs`).
|
||||
|
||||
## 3) Skript- / Cron-Status
|
||||
|
||||
Zeigt:
|
||||
|
||||
- aktive Ausführungen (Skripte, Ketten, Cron)
|
||||
- zuletzt abgeschlossene Ausführungen
|
||||
|
||||
Mögliche Aktionen:
|
||||
|
||||
- laufende Ketten: `Nächster Schritt`
|
||||
- laufende Einträge: `Abbrechen`
|
||||
- Historie der Aktivitäten: `Liste leeren`
|
||||
|
||||
## 4) Job Übersicht
|
||||
|
||||
Kompakte Jobliste mit Status, Fortschritt, ETA. Klick auf einen Job klappt die Detailsteuerung auf.
|
||||
|
||||
Im aufgeklappten Zustand erscheint die Karte `Pipeline-Status` mit allen zustandsabhängigen Aktionen.
|
||||
|
||||
### Zustandsabhängige Hauptaktionen
|
||||
|
||||
| Zustand | Typische Aktion |
|
||||
|---|---|
|
||||
| `DISC_DETECTED` / `IDLE` | `Analyse starten` |
|
||||
| `METADATA_SELECTION` | `Metadaten öffnen` |
|
||||
| `WAITING_FOR_USER_DECISION` | Playlist wählen und `Playlist übernehmen` |
|
||||
| `READY_TO_START` | `Job starten` |
|
||||
| `READY_TO_ENCODE` | Tracks/Skripte prüfen, dann `Encoding starten` |
|
||||
| laufend (`ANALYZING`/`RIPPING`/`ENCODING`) | `Abbrechen` |
|
||||
| `ERROR` / `CANCELLED` | `Retry Rippen`, `Disk-Analyse neu starten` |
|
||||
|
||||
Zusätzlich je nach Job:
|
||||
|
||||
- `Review neu starten`
|
||||
- `Encode neu starten`
|
||||
- `Aus Queue löschen`
|
||||
|
||||
### Titel-/Spurprüfung (`READY_TO_ENCODE`)
|
||||
|
||||
Im selben Block siehst du:
|
||||
|
||||
- Auswahl des Encode-Titels
|
||||
- Audio-/Subtitle-Trackauswahl
|
||||
- User-Preset-Auswahl
|
||||
- Pre-/Post-Encode-Skripte und Ketten
|
||||
- Preview des finalen HandBrakeCLI-Befehls
|
||||
|
||||
## 5) Disk-Information
|
||||
|
||||
Zeigt aktuelles Laufwerk und Disc-Metadaten (`Pfad`, `Modell`, `Disc-Label`, `Mount`).
|
||||
|
||||
Aktionen:
|
||||
|
||||
- `Laufwerk neu lesen`
|
||||
- `Disk neu analysieren`
|
||||
- `Metadaten-Modal öffnen`
|
||||
|
||||
---
|
||||
|
||||
## Wichtige Dialoge im Dashboard
|
||||
|
||||
### Metadaten auswählen
|
||||
|
||||
- OMDb-Suche + Ergebnisliste
|
||||
- manuelle Eingabe als Fallback
|
||||
- `Auswahl übernehmen` startet den nächsten Pipeline-Schritt
|
||||
|
||||
### Abbruch-Bereinigung
|
||||
|
||||
Nach Abbruch kann Ripster optional fragen, ob erzeugte RAW- oder Movie-Dateien gelöscht werden sollen.
|
||||
|
||||
### Queue-Eintrag einfügen
|
||||
|
||||
Erstellt gezielt einen Skript-, Ketten- oder Warte-Eintrag an einer bestimmten Queue-Position.
|
||||
39
docs/gui/database.md
Normal file
39
docs/gui/database.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Database (Expert)
|
||||
|
||||
`/database` ist eine erweiterte Ansicht für Power-User und Recovery-Fälle.
|
||||
|
||||
## Zugriff
|
||||
|
||||
- Route direkt aufrufen: `/database`
|
||||
- nicht Teil der Standard-Navigation
|
||||
|
||||
## Bereiche
|
||||
|
||||
### 1) `Historie & Datenbank`
|
||||
|
||||
Tabellarische Jobansicht mit:
|
||||
|
||||
- ID, Poster, Medium, Titel
|
||||
- Status
|
||||
- Start/Ende
|
||||
|
||||
Aktionen im Detaildialog entsprechen weitgehend der Seite `Historie` (inkl. Re-Encode, Review-Neustart, OMDb-Zuordnung, Dateilöschung).
|
||||
|
||||
### 2) `RAW ohne Historie`
|
||||
|
||||
Listet RAW-Ordner, die keinen zugehörigen Job-Eintrag haben.
|
||||
|
||||
Aktionen:
|
||||
|
||||
- `RAW prüfen` (Scan der konfigurierten RAW-Pfade)
|
||||
- `Job anlegen` (Orphan-RAW in Historie importieren)
|
||||
|
||||
## Typischer Einsatz
|
||||
|
||||
- nach manuellen Dateioperationen
|
||||
- nach Migrationen oder Recovery
|
||||
- wenn RAW-Dateien vorhanden sind, aber kein Historieneintrag existiert
|
||||
|
||||
## Vorsicht
|
||||
|
||||
Diese Seite erlaubt Eingriffe mit direkter Auswirkung auf Datenbestand und Historie. Vor Lösch- oder Importaktionen Pfade und Zieljob sorgfältig prüfen.
|
||||
62
docs/gui/history.md
Normal file
62
docs/gui/history.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Historie
|
||||
|
||||
Die Seite `Historie` ist für Suche, Prüfung und Nachbearbeitung bestehender Jobs.
|
||||
|
||||
## Hauptansicht
|
||||
|
||||
Filter und Werkzeuge:
|
||||
|
||||
- Suche (Titel/IMDb)
|
||||
- Status-Filter
|
||||
- Medium-Filter (`Blu-ray`, `DVD`, `Sonstiges`)
|
||||
- Sortierung
|
||||
- Listen-/Grid-Layout
|
||||
|
||||
Jeder Eintrag zeigt:
|
||||
|
||||
- Poster, Titel, Jahr, IMDb
|
||||
- Medium-Indikator
|
||||
- Status
|
||||
- Start/Ende
|
||||
- Verfügbarkeit von RAW/Movie
|
||||
- Ratings (wenn OMDb-Daten vorhanden)
|
||||
|
||||
Klick auf einen Eintrag öffnet die Detailansicht.
|
||||
|
||||
---
|
||||
|
||||
## Job-Detaildialog
|
||||
|
||||
Bereiche:
|
||||
|
||||
- Film-Infos + OMDb-Details
|
||||
- Job-Infos (Status, Pfade, Erfolgsflags, Fehler)
|
||||
- hinterlegte Encode-Auswahl
|
||||
- ausgeführter HandBrake-Befehl
|
||||
- strukturierte JSON-Blöcke (OMDb/MakeMKV/MediaInfo/EncodePlan/HandBrake)
|
||||
- Log-Ladefunktionen (`Tail`, `Vollständig`)
|
||||
|
||||
## Typische Aktionen im Detaildialog
|
||||
|
||||
- `OMDb neu zuordnen`
|
||||
- `Encode neu starten`
|
||||
- `Review neu starten`
|
||||
- `RAW neu encodieren`
|
||||
- `RAW löschen`, `Movie löschen`, `Beides löschen`
|
||||
- `Historieneintrag löschen`
|
||||
- bei Queue-Lock: `Aus Queue löschen`
|
||||
|
||||
## Wann welche Aktion?
|
||||
|
||||
| Ziel | Aktion |
|
||||
|---|---|
|
||||
| Metadaten korrigieren | `OMDb neu zuordnen` |
|
||||
| mit gleicher bestätigter Auswahl neu encodieren | `Encode neu starten` |
|
||||
| Titel-/Spurprüfung komplett neu berechnen | `Review neu starten` |
|
||||
| aus vorhandenem RAW erneut encodieren | `RAW neu encodieren` |
|
||||
| Speicher freigeben | Dateilöschaktionen |
|
||||
|
||||
## Logs
|
||||
|
||||
- `Tail laden (800)` für schnelle Fehleranalyse
|
||||
- `Vollständiges Log laden` für vollständige Nachverfolgung
|
||||
24
docs/gui/index.md
Normal file
24
docs/gui/index.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# GUI-Seiten
|
||||
|
||||
Ripster hat drei Hauptseiten in der Navigation plus eine Expert-Seite.
|
||||
|
||||
## Seitenüberblick
|
||||
|
||||
| Seite | Zweck |
|
||||
|---|---|
|
||||
| [Dashboard](dashboard.md) | Live-Betrieb: Pipeline, Queue, Aktivitäten, Disc-Infos |
|
||||
| [Settings](settings.md) | Konfiguration, Skripte, Ketten, Presets, Cronjobs |
|
||||
| [Historie](history.md) | abgeschlossene/laufende Jobs durchsuchen und nachbearbeiten |
|
||||
| [Database (Expert)](database.md) | tabellarische Rohsicht inkl. Orphan-RAW-Import |
|
||||
|
||||
## Empfohlene Nutzung im Alltag
|
||||
|
||||
1. **Start eines neuen Jobs:** `Dashboard`
|
||||
2. **Regeln/Automatisierung anpassen:** `Settings`
|
||||
3. **Ergebnisse prüfen oder Jobs nachbearbeiten:** `Historie`
|
||||
4. **Sonderfälle/Recovery:** `Database`
|
||||
|
||||
## Hinweise zur Navigation
|
||||
|
||||
- `Dashboard`, `Settings`, `Historie` sind direkt in der Kopfnavigation.
|
||||
- `Database` ist als Expert-Route verfügbar: `/database`.
|
||||
92
docs/gui/settings.md
Normal file
92
docs/gui/settings.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Settings
|
||||
|
||||
Die Seite `Settings` steuert Konfiguration und Automatisierung.
|
||||
|
||||
## Tabs im Überblick
|
||||
|
||||
| Tab | Zweck |
|
||||
|---|---|
|
||||
| `Konfiguration` | alle Kernsettings (Pfade, Tools, Monitoring, Metadaten, Queue, Benachrichtigungen) |
|
||||
| `Scripte` | einzelne Bash-Skripte verwalten und testen |
|
||||
| `Skriptketten` | Sequenzen aus Skript- und Warte-Schritten bauen |
|
||||
| `Encode-Presets` | benutzerdefinierte Presets für das Review im Dashboard |
|
||||
| `Cronjobs` | zeitgesteuerte Skript-/Kettenausführung |
|
||||
|
||||
---
|
||||
|
||||
## Tab `Konfiguration`
|
||||
|
||||
Wichtiges Bedienmuster:
|
||||
|
||||
1. Werte ändern
|
||||
2. `Änderungen speichern`
|
||||
3. bei Bedarf `Änderungen verwerfen` oder `Neu laden`
|
||||
|
||||
Zusätzlich:
|
||||
|
||||
- `PushOver Test` sendet eine Testnachricht
|
||||
- Änderungen werden erst nach Speichern wirksam
|
||||
- Tool-Preset-Felder bieten HandBrake-Presetauswahl direkt im Formular
|
||||
|
||||
## Tab `Scripte`
|
||||
|
||||
Funktionen:
|
||||
|
||||
- Skript anlegen, bearbeiten, löschen
|
||||
- Skript testen (`Test`)
|
||||
- Reihenfolge per Drag-and-Drop
|
||||
|
||||
Praxis:
|
||||
|
||||
- Reihenfolge ist wichtig, weil ausgewählte Skripte später sequentiell abgearbeitet werden.
|
||||
- Testresultate zeigen Exit-Code, Dauer und stdout/stderr.
|
||||
|
||||
## Tab `Skriptketten`
|
||||
|
||||
Funktionen:
|
||||
|
||||
- Kette anlegen/bearbeiten/löschen
|
||||
- Kette testen
|
||||
- Reihenfolge der Ketten per Drag-and-Drop
|
||||
|
||||
Im Ketten-Editor:
|
||||
|
||||
- Bausteine links (`Warten`, vorhandene Skripte)
|
||||
- Schritte rechts per Klick oder Drag-and-Drop hinzufügen
|
||||
- Schrittreihenfolge im Canvas ändern
|
||||
|
||||
## Tab `Encode-Presets`
|
||||
|
||||
Ein Preset bündelt:
|
||||
|
||||
- optional HandBrake-Preset (`-Z`)
|
||||
- optionale Extra-Args
|
||||
- Medientyp (`Universell`, `Blu-ray`, `DVD`, `Sonstiges`)
|
||||
|
||||
Verwendung:
|
||||
|
||||
- Diese Presets erscheinen später im Dashboard im Review (`READY_TO_ENCODE`).
|
||||
|
||||
## Tab `Cronjobs`
|
||||
|
||||
Funktionen:
|
||||
|
||||
- Cronjob anlegen und bearbeiten
|
||||
- Quelle wählen: Skript oder Skriptkette
|
||||
- Cron-Ausdruck validieren
|
||||
- `Jetzt ausführen`
|
||||
- Logs je Cronjob anzeigen
|
||||
- `Aktiviert` und `Pushover` toggeln
|
||||
|
||||
Hilfen:
|
||||
|
||||
- Beispiele für Cron-Ausdrücke direkt im Dialog
|
||||
- Link zu `crontab.guru` im Editor
|
||||
|
||||
---
|
||||
|
||||
## Empfehlung für stabile Nutzung
|
||||
|
||||
1. Erst `Konfiguration` sauber setzen
|
||||
2. dann Skripte/Ketten testen
|
||||
3. danach Cronjobs aktivieren
|
||||
148
docs/index.md
148
docs/index.md
@@ -1,141 +1,33 @@
|
||||
# Ripster
|
||||
# Ripster Handbuch
|
||||
|
||||
**Halbautomatische Disc-Ripping-Plattform für DVDs und Blu-rays**
|
||||
Dieses Dokumentationsset ist als **Benutzerhandbuch** aufgebaut: erst Bedienung und Alltag, dann Technik im Anhang.
|
||||
|
||||
---
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
## Schnellstart in 3 Schritten
|
||||
|
||||
- :material-disc: **Automatisiertes Ripping**
|
||||
|
||||
---
|
||||
|
||||
Disc einlegen – Ripster erkennt sie automatisch und startet den Analyse-Workflow mit MakeMKV.
|
||||
|
||||
[:octicons-arrow-right-24: Workflow verstehen](pipeline/workflow.md)
|
||||
|
||||
- :material-movie-open: **Metadata-Integration**
|
||||
|
||||
---
|
||||
|
||||
Automatische Suche in der OMDb-Datenbank für Filmtitel, Poster und IMDb-IDs.
|
||||
|
||||
[:octicons-arrow-right-24: Konfiguration](getting-started/configuration.md)
|
||||
|
||||
- :material-cog: **Flexibles Encoding**
|
||||
|
||||
---
|
||||
|
||||
HandBrake-Encoding mit individueller Track-Auswahl für Audio- und Untertitelspuren.
|
||||
|
||||
[:octicons-arrow-right-24: Encode-Planung](pipeline/encoding.md)
|
||||
|
||||
- :material-history: **Job-Historie**
|
||||
|
||||
---
|
||||
|
||||
Vollständiges Audit-Trail aller Ripping-Jobs mit Logs und Re-Encode-Funktion.
|
||||
|
||||
[:octicons-arrow-right-24: History API](api/history.md)
|
||||
|
||||
</div>
|
||||
1. Voraussetzungen prüfen und installieren: [Installation](getting-started/installation.md)
|
||||
2. Grundkonfiguration in der UI setzen: [Ersteinrichtung](getting-started/configuration.md)
|
||||
3. Ersten vollständigen Job durchlaufen: [Erster Lauf](getting-started/quickstart.md)
|
||||
|
||||
---
|
||||
|
||||
## Was ist Ripster?
|
||||
## Was du hier findest
|
||||
|
||||
Ripster ist eine webbasierte Anwendung zur **halbautomatischen Digitalisierung** von DVDs und Blu-rays. Die Anwendung kombiniert bewährte Open-Source-Tools zu einem durchgängigen, komfortablen Workflow:
|
||||
|
||||
```
|
||||
Disc einlegen → Erkennung → Analyse → Metadaten wählen → Rippen → Encodieren → Fertig
|
||||
```
|
||||
|
||||
### Kernfunktionen
|
||||
|
||||
| Feature | Beschreibung |
|
||||
|---------|-------------|
|
||||
| **Echtzeit-Updates** | WebSocket-basierte Live-Statusanzeige ohne Reload |
|
||||
| **Intelligente Playlist-Analyse** | Erkennt Blu-ray Playlist-Verschleierung (Fake-Playlists) |
|
||||
| **Track-Auswahl** | Individuelle Auswahl von Audio- und Untertitelspuren |
|
||||
| **Orphan-Recovery** | Import von bereits gerippten Dateien als Jobs |
|
||||
| **PushOver-Benachrichtigungen** | Mobile Alerts bei Fertigstellung oder Fehlern |
|
||||
| **DB-Korruptions-Recovery** | Automatische Quarantäne bei korrupten SQLite-Dateien |
|
||||
| **Re-Encoding** | Erneutes Encodieren ohne neu rippen |
|
||||
- **Benutzerhandbuch**
|
||||
- Installation
|
||||
- GUI-Seiten im Detail (`Dashboard`, `Settings`, `Historie`, `Database`)
|
||||
- typische Arbeitsabläufe aus Anwendersicht
|
||||
- **Technischer Anhang**
|
||||
- vollständige Einstellungsreferenz
|
||||
- Pipeline-/API-/Architekturdetails
|
||||
- Deployment und Tool-Hintergründe
|
||||
|
||||
---
|
||||
|
||||
## Technologie-Stack
|
||||
## Empfohlene Lesereihenfolge
|
||||
|
||||
=== "Backend"
|
||||
|
||||
- **Node.js** >= 20.19.0 mit Express.js
|
||||
- **SQLite3** mit automatischen Schema-Migrationen
|
||||
- **WebSocket** (`ws`) für Echtzeit-Kommunikation
|
||||
- Externe CLI-Tools: `makemkvcon`, `HandBrakeCLI`, `mediainfo`
|
||||
|
||||
=== "Frontend"
|
||||
|
||||
- **React** 18.3.1 mit React Router
|
||||
- **Vite** 5.4.12 als Build-Tool
|
||||
- **PrimeReact** 10.9.2 als UI-Bibliothek
|
||||
- WebSocket-Client für Live-Updates
|
||||
|
||||
=== "Externe Tools"
|
||||
|
||||
| Tool | Zweck |
|
||||
|------|-------|
|
||||
| `makemkvcon` | Disc-Analyse & MKV/Backup-Ripping |
|
||||
| `HandBrakeCLI` | Video-Encoding |
|
||||
| `mediainfo` | Track-Informationen aus gerippten Dateien |
|
||||
| OMDb API | Filmmetadaten (Titel, Poster, IMDb-ID) |
|
||||
|
||||
---
|
||||
|
||||
## Schnellstart
|
||||
|
||||
```bash
|
||||
# 1. Repository klonen
|
||||
git clone https://github.com/YOUR_GITHUB_USERNAME/ripster.git
|
||||
cd ripster
|
||||
|
||||
# 2. Starten (Node.js >= 20 erforderlich)
|
||||
./start.sh
|
||||
|
||||
# 3. Browser öffnen
|
||||
open http://localhost:5173
|
||||
```
|
||||
|
||||
!!! tip "Erste Schritte"
|
||||
Die vollständige Installationsanleitung mit allen Voraussetzungen findest du unter [Erste Schritte](getting-started/index.md).
|
||||
|
||||
---
|
||||
|
||||
## Pipeline-Überblick
|
||||
|
||||
<div class="pipeline-diagram">
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
IDLE --> DD[DISC_DETECTED]
|
||||
DD --> META[METADATA\nSELECTION]
|
||||
META --> RTS[READY_TO\nSTART]
|
||||
RTS -->|Auto-Start| RIP[RIPPING]
|
||||
RTS -->|Auto-Start mit RAW| MIC
|
||||
RIP --> MIC[MEDIAINFO\nCHECK]
|
||||
MIC -->|Playlist offen (Backup)| WUD[WAITING_FOR\nUSER_DECISION]
|
||||
WUD --> MIC
|
||||
MIC --> RTE[READY_TO\nENCODE]
|
||||
RTE --> ENC[ENCODING]
|
||||
ENC -->|inkl. Post-Skripte| FIN([FINISHED])
|
||||
ENC --> ERR([ERROR])
|
||||
RIP --> ERR
|
||||
|
||||
style FIN fill:#e8f5e9,stroke:#66bb6a,color:#2e7d32
|
||||
style ERR fill:#ffebee,stroke:#ef5350,color:#c62828
|
||||
style WUD fill:#fff8e1,stroke:#ffa726,color:#e65100
|
||||
style ENC fill:#f3e5f5,stroke:#ab47bc,color:#6a1b9a
|
||||
```
|
||||
|
||||
</div>
|
||||
|
||||
`READY_TO_START` ist in der Praxis meist ein kurzer Übergangszustand: der Job wird nach Metadaten-Auswahl automatisch gestartet oder in die Queue eingeplant.
|
||||
1. [Benutzerhandbuch Überblick](getting-started/index.md)
|
||||
2. [GUI-Seiten](gui/index.md)
|
||||
3. [Workflows aus Nutzersicht](workflows/index.md)
|
||||
4. Bei Bedarf: [Technischer Anhang](appendix/index.md)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Pipeline
|
||||
# Anhang: Pipeline intern
|
||||
|
||||
Der Pipeline-Bereich beschreibt den Kern-Workflow von Ripster.
|
||||
Dieser Abschnitt beschreibt die technische Pipeline-Logik hinter den UI-Workflows.
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
@@ -8,7 +8,7 @@ Der Pipeline-Bereich beschreibt den Kern-Workflow von Ripster.
|
||||
|
||||
---
|
||||
|
||||
Zustände, Übergänge und Queue-Verhalten.
|
||||
Zustandsmodell, Übergänge, Queue-Verhalten.
|
||||
|
||||
[:octicons-arrow-right-24: Workflow](workflow.md)
|
||||
|
||||
@@ -16,7 +16,7 @@ Der Pipeline-Bereich beschreibt den Kern-Workflow von Ripster.
|
||||
|
||||
---
|
||||
|
||||
Wie Titel/Tracks für HandBrake vorbereitet und bestätigt werden.
|
||||
Aufbereitung von Titeln/Tracks und Bestätigungslogik.
|
||||
|
||||
[:octicons-arrow-right-24: Encoding](encoding.md)
|
||||
|
||||
@@ -24,16 +24,20 @@ Der Pipeline-Bereich beschreibt den Kern-Workflow von Ripster.
|
||||
|
||||
---
|
||||
|
||||
Bewertung mehrdeutiger Blu-ray-Playlists und manuelle Entscheidung.
|
||||
Bewertung mehrdeutiger Blu-ray-Playlists.
|
||||
|
||||
[:octicons-arrow-right-24: Playlist-Analyse](playlist-analysis.md)
|
||||
|
||||
- :material-script-text: **Encode-Skripte (Pre & Post)**
|
||||
- :material-script-text: **Pre-/Post-Encode-Ausführungen**
|
||||
|
||||
---
|
||||
|
||||
Skripte/Ketten vor und nach dem Encode ausführen.
|
||||
Skript- und Kettenlauf vor/nach dem Encoding.
|
||||
|
||||
[:octicons-arrow-right-24: Encode-Skripte](post-encode-scripts.md)
|
||||
|
||||
</div>
|
||||
|
||||
## Zurück zum Handbuch
|
||||
|
||||
- [Workflows aus Nutzersicht](../workflows/index.md)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Externe Tools
|
||||
# Anhang: Externe Tools
|
||||
|
||||
Ripster ist ein **Orchestrator** – die eigentliche Arbeit erledigen diese bewährten Open-Source-Tools:
|
||||
Ripster orchestriert externe CLI-Tools. Dieser Abschnitt erklärt deren Rolle im Gesamtsystem.
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
@@ -8,7 +8,7 @@ Ripster ist ein **Orchestrator** – die eigentliche Arbeit erledigen diese bew
|
||||
|
||||
---
|
||||
|
||||
Disc-Analyse und Ripping. Erstellt MKV-Dateien oder vollständige Backups.
|
||||
Disc-Analyse und Ripping.
|
||||
|
||||
[:octicons-arrow-right-24: MakeMKV](makemkv.md)
|
||||
|
||||
@@ -16,7 +16,7 @@ Ripster ist ein **Orchestrator** – die eigentliche Arbeit erledigen diese bew
|
||||
|
||||
---
|
||||
|
||||
Video-Encoding mit umfangreichen Preset-Optionen.
|
||||
Video-Encoding inklusive Preset-Logik.
|
||||
|
||||
[:octicons-arrow-right-24: HandBrake](handbrake.md)
|
||||
|
||||
@@ -24,7 +24,7 @@ Ripster ist ein **Orchestrator** – die eigentliche Arbeit erledigen diese bew
|
||||
|
||||
---
|
||||
|
||||
Analyse von Track-Informationen in Mediendateien.
|
||||
Track-/Containeranalyse für Review und Auswahl.
|
||||
|
||||
[:octicons-arrow-right-24: MediaInfo](mediainfo.md)
|
||||
|
||||
|
||||
61
docs/workflows/index.md
Normal file
61
docs/workflows/index.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Workflows aus Nutzersicht
|
||||
|
||||
Diese Seite beschreibt typische Abläufe mit den passenden UI-Aktionen.
|
||||
|
||||
## Workflow 1: Standardlauf (Disc -> fertige Datei)
|
||||
|
||||
1. `Dashboard`: Disc einlegen, `Analyse starten`
|
||||
2. Metadaten im Dialog übernehmen
|
||||
3. bei `READY_TO_ENCODE` Titel/Tracks prüfen
|
||||
4. `Encoding starten`
|
||||
5. Ergebnis in `Historie` kontrollieren
|
||||
|
||||
## Workflow 2: Playlist-Entscheidung bei Blu-ray
|
||||
|
||||
1. Job landet in `WAITING_FOR_USER_DECISION`
|
||||
2. im `Pipeline-Status` Playlist-Kandidaten vergleichen
|
||||
3. gewünschte Playlist auswählen
|
||||
4. `Playlist übernehmen`
|
||||
5. danach normal weiter bis `READY_TO_ENCODE`
|
||||
|
||||
## Workflow 3: Mehrere Jobs mit Queue
|
||||
|
||||
1. Parallel-Limit in `Settings` setzen (`pipeline_max_parallel_jobs`)
|
||||
2. neue Jobs starten; überschüssige Starts gehen in `Job Queue`
|
||||
3. Reihenfolge per Drag-and-Drop anpassen
|
||||
4. bei Bedarf Skript/Kette/Warten als Queue-Eintrag ergänzen
|
||||
|
||||
## Workflow 4: Nachbearbeitung eines bestehenden Jobs
|
||||
|
||||
In `Historie` -> Detaildialog:
|
||||
|
||||
- Metadaten korrigieren: `OMDb neu zuordnen`
|
||||
- gleiche Einstellungen erneut nutzen: `Encode neu starten`
|
||||
- Analyse neu aufbauen: `Review neu starten`
|
||||
- aus RAW erneut encodieren: `RAW neu encodieren`
|
||||
|
||||
## Workflow 5: Automatisierung mit Skripten und Cron
|
||||
|
||||
1. `Settings` -> `Scripte`: Skripte anlegen und testen
|
||||
2. `Settings` -> `Skriptketten`: Ketten bauen und testen
|
||||
3. im Dashboard-Review Pre-/Post-Ausführungen pro Job auswählen
|
||||
4. `Settings` -> `Cronjobs`: zeitgesteuerte Ausführung konfigurieren
|
||||
5. Status im Dashboard (`Skript- / Cron-Status`) überwachen
|
||||
|
||||
## Workflow 6: Abbruch und Recovery
|
||||
|
||||
### Fall A: Job wurde abgebrochen
|
||||
|
||||
- im Dashboard optional erzeugte RAW/Movie-Datei bereinigen
|
||||
- anschließend je nach Ziel: `Retry Rippen` oder `Disk-Analyse neu starten`
|
||||
|
||||
### Fall B: Job steht in `READY_TO_ENCODE`, ist aber nicht aktive Session
|
||||
|
||||
- in `Historie` oder `Database`: `Im Dashboard öffnen`
|
||||
- im Dashboard Review erneut prüfen und starten
|
||||
|
||||
### Fall C: RAW ohne Historieneintrag
|
||||
|
||||
- `/database` öffnen
|
||||
- Bereich `RAW ohne Historie`
|
||||
- `Job anlegen`
|
||||
83
mkdocs.yml
83
mkdocs.yml
@@ -1,5 +1,5 @@
|
||||
site_name: Ripster
|
||||
site_description: Halbautomatische Disc-Ripping-Plattform für DVDs & Blu-rays mit HandBrake-Encoding
|
||||
site_description: Benutzerhandbuch für den Betrieb von Ripster mit technischem Anhang
|
||||
site_author: Michael
|
||||
site_url: https://mboehmlaender.github.io/ripster/
|
||||
|
||||
@@ -45,45 +45,54 @@ theme:
|
||||
|
||||
nav:
|
||||
- Home: index.md
|
||||
- Erste Schritte:
|
||||
- Benutzerhandbuch:
|
||||
- getting-started/index.md
|
||||
- Voraussetzungen: getting-started/prerequisites.md
|
||||
- Installation: getting-started/installation.md
|
||||
- Konfiguration: getting-started/configuration.md
|
||||
- Schnellstart: getting-started/quickstart.md
|
||||
- Architektur:
|
||||
- architecture/index.md
|
||||
- Übersicht: architecture/overview.md
|
||||
- Backend-Services: architecture/backend.md
|
||||
- Frontend-Komponenten: architecture/frontend.md
|
||||
- Datenbank: architecture/database.md
|
||||
- Pipeline:
|
||||
- pipeline/index.md
|
||||
- Workflow & Zustände: pipeline/workflow.md
|
||||
- Encode-Planung & Track-Auswahl: pipeline/encoding.md
|
||||
- Playlist-Analyse: pipeline/playlist-analysis.md
|
||||
- Encode-Skripte (Pre & Post): pipeline/post-encode-scripts.md
|
||||
- API-Referenz:
|
||||
- api/index.md
|
||||
- Pipeline API: api/pipeline.md
|
||||
- Settings API: api/settings.md
|
||||
- History API: api/history.md
|
||||
- Cron API: api/crons.md
|
||||
- Runtime Activities API: api/runtime-activities.md
|
||||
- WebSocket Events: api/websocket.md
|
||||
- Konfiguration:
|
||||
- configuration/index.md
|
||||
- Alle Einstellungen: configuration/settings-reference.md
|
||||
- Umgebungsvariablen: configuration/environment.md
|
||||
- Deployment:
|
||||
- deployment/index.md
|
||||
- Entwicklungsumgebung: deployment/development.md
|
||||
- Produktion: deployment/production.md
|
||||
- Externe Tools:
|
||||
- tools/index.md
|
||||
- MakeMKV: tools/makemkv.md
|
||||
- HandBrake: tools/handbrake.md
|
||||
- MediaInfo: tools/mediainfo.md
|
||||
- Ersteinrichtung: getting-started/configuration.md
|
||||
- Erster Lauf: getting-started/quickstart.md
|
||||
- GUI-Seiten:
|
||||
- gui/index.md
|
||||
- Dashboard: gui/dashboard.md
|
||||
- Settings: gui/settings.md
|
||||
- Historie: gui/history.md
|
||||
- Database (Expert): gui/database.md
|
||||
- Workflows aus Nutzersicht: workflows/index.md
|
||||
- Technischer Anhang:
|
||||
- appendix/index.md
|
||||
- Konfiguration:
|
||||
- configuration/index.md
|
||||
- Alle Einstellungen: configuration/settings-reference.md
|
||||
- Umgebungsvariablen: configuration/environment.md
|
||||
- Pipeline intern:
|
||||
- pipeline/index.md
|
||||
- Workflow & Zustände: pipeline/workflow.md
|
||||
- Encode-Planung & Track-Auswahl: pipeline/encoding.md
|
||||
- Playlist-Analyse: pipeline/playlist-analysis.md
|
||||
- Encode-Skripte (Pre & Post): pipeline/post-encode-scripts.md
|
||||
- API-Referenz:
|
||||
- api/index.md
|
||||
- Pipeline API: api/pipeline.md
|
||||
- Settings API: api/settings.md
|
||||
- History API: api/history.md
|
||||
- Cron API: api/crons.md
|
||||
- Runtime Activities API: api/runtime-activities.md
|
||||
- WebSocket Events: api/websocket.md
|
||||
- Architektur:
|
||||
- architecture/index.md
|
||||
- Übersicht: architecture/overview.md
|
||||
- Backend-Services: architecture/backend.md
|
||||
- Frontend-Komponenten: architecture/frontend.md
|
||||
- Datenbank: architecture/database.md
|
||||
- Deployment:
|
||||
- deployment/index.md
|
||||
- Entwicklungsumgebung: deployment/development.md
|
||||
- Produktion: deployment/production.md
|
||||
- Externe Tools:
|
||||
- tools/index.md
|
||||
- MakeMKV: tools/makemkv.md
|
||||
- HandBrake: tools/handbrake.md
|
||||
- MediaInfo: tools/mediainfo.md
|
||||
|
||||
plugins:
|
||||
- search:
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
74
site/api/runtime-activities/index.html
Normal file
74
site/api/runtime-activities/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
site/appendix/index.html
Normal file
1
site/appendix/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
site/gui/dashboard/index.html
Normal file
1
site/gui/dashboard/index.html
Normal file
File diff suppressed because one or more lines are too long
1
site/gui/database/index.html
Normal file
1
site/gui/database/index.html
Normal file
File diff suppressed because one or more lines are too long
1
site/gui/history/index.html
Normal file
1
site/gui/history/index.html
Normal file
File diff suppressed because one or more lines are too long
1
site/gui/index.html
Normal file
1
site/gui/index.html
Normal file
File diff suppressed because one or more lines are too long
1
site/gui/settings/index.html
Normal file
1
site/gui/settings/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -2,130 +2,162 @@
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/api/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/api/crons/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/api/history/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/api/pipeline/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/api/runtime-activities/</loc>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/api/settings/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/api/websocket/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/appendix/</loc>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/architecture/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/architecture/backend/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/architecture/database/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/architecture/frontend/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/architecture/overview/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/configuration/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/configuration/environment/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/configuration/settings-reference/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/deployment/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/deployment/development/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/deployment/production/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/getting-started/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/getting-started/configuration/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/getting-started/installation/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/getting-started/prerequisites/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/getting-started/quickstart/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/gui/</loc>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/gui/dashboard/</loc>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/gui/database/</loc>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/gui/history/</loc>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/gui/settings/</loc>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/pipeline/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/pipeline/encoding/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/pipeline/playlist-analysis/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/pipeline/post-encode-scripts/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/pipeline/workflow/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/tools/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/tools/handbrake/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/tools/makemkv/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/tools/mediainfo/</loc>
|
||||
<lastmod>2026-03-10</lastmod>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mboehmlaender.github.io/ripster/workflows/</loc>
|
||||
<lastmod>2026-03-11</lastmod>
|
||||
</url>
|
||||
</urlset>
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
site/workflows/index.html
Normal file
1
site/workflows/index.html
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user