Initial commit mit MkDocs-Dokumentation
This commit is contained in:
118
docs/getting-started/configuration.md
Normal file
118
docs/getting-started/configuration.md
Normal file
@@ -0,0 +1,118 @@
|
||||
# Konfiguration
|
||||
|
||||
Alle Einstellungen werden über die Web-Oberfläche unter **Einstellungen** verwaltet und in der SQLite-Datenbank gespeichert.
|
||||
|
||||
---
|
||||
|
||||
## Pflichteinstellungen
|
||||
|
||||
Diese Einstellungen müssen vor dem ersten Rip konfiguriert werden:
|
||||
|
||||
### Pfade
|
||||
|
||||
| Einstellung | Beschreibung | Beispiel |
|
||||
|------------|-------------|---------|
|
||||
| `raw_dir` | Verzeichnis für rohe MKV-Dateien | `/mnt/nas/raw` |
|
||||
| `movie_dir` | Ausgabeverzeichnis für kodierte Filme | `/mnt/nas/movies` |
|
||||
| `log_dir` | Verzeichnis für Log-Dateien | `/var/log/ripster` |
|
||||
|
||||
!!! warning "Berechtigungen"
|
||||
Der Ripster-Prozess benötigt **Schreibrechte** auf alle konfigurierten Verzeichnisse.
|
||||
|
||||
```bash
|
||||
# Verzeichnisse erstellen und Berechtigungen setzen
|
||||
sudo mkdir -p /mnt/nas/{raw,movies}
|
||||
sudo chown $USER:$USER /mnt/nas/{raw,movies}
|
||||
```
|
||||
|
||||
### OMDb API
|
||||
|
||||
| Einstellung | Beschreibung |
|
||||
|------------|-------------|
|
||||
| `omdb_api_key` | API-Key von omdbapi.com |
|
||||
| `omdb_default_type` | Standard-Suchtyp: `movie` oder `series` |
|
||||
|
||||
---
|
||||
|
||||
## Tool-Konfiguration
|
||||
|
||||
| Einstellung | Standard | Beschreibung |
|
||||
|------------|---------|-------------|
|
||||
| `makemkv_command` | `makemkvcon` | Pfad oder Befehl für MakeMKV |
|
||||
| `handbrake_command` | `HandBrakeCLI` | Pfad oder Befehl für HandBrake |
|
||||
| `mediainfo_command` | `mediainfo` | Pfad oder Befehl für MediaInfo |
|
||||
|
||||
!!! tip "Absolute Pfade"
|
||||
Falls die Tools nicht im `PATH` sind, verwende absolute Pfade:
|
||||
```
|
||||
/usr/local/bin/HandBrakeCLI
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Encoding-Konfiguration
|
||||
|
||||
| Einstellung | Standard | Beschreibung |
|
||||
|------------|---------|-------------|
|
||||
| `handbrake_preset` | `H.265 MKV 1080p30` | HandBrake-Preset-Name |
|
||||
| `handbrake_extra_args` | _(leer)_ | Zusätzliche HandBrake-Argumente |
|
||||
| `output_extension` | `mkv` | Dateiendung der Ausgabedatei |
|
||||
| `filename_template` | `{title} ({year})` | Template für Dateinamen |
|
||||
|
||||
### Dateiname-Template
|
||||
|
||||
Das Template unterstützt folgende Platzhalter:
|
||||
|
||||
| Platzhalter | Beschreibung | Beispiel |
|
||||
|------------|-------------|---------|
|
||||
| `{title}` | Filmtitel | `Inception` |
|
||||
| `{year}` | Erscheinungsjahr | `2010` |
|
||||
| `{imdb_id}` | IMDb-ID | `tt1375666` |
|
||||
| `{type}` | `movie` oder `series` | `movie` |
|
||||
|
||||
**Beispiel-Template:**
|
||||
```
|
||||
{title} ({year})
|
||||
→ Inception (2010).mkv
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Laufwerk-Konfiguration
|
||||
|
||||
| Einstellung | Standard | Beschreibung |
|
||||
|------------|---------|-------------|
|
||||
| `drive_mode` | `auto` | `auto` (automatisch erkennen) oder `explicit` (festes Gerät) |
|
||||
| `drive_device` | `/dev/sr0` | Geräte-Pfad (nur bei `explicit`) |
|
||||
| `disc_poll_interval_ms` | `5000` | Polling-Intervall in Millisekunden |
|
||||
|
||||
---
|
||||
|
||||
## MakeMKV-Konfiguration
|
||||
|
||||
| Einstellung | Standard | Beschreibung |
|
||||
|------------|---------|-------------|
|
||||
| `makemkv_min_length_minutes` | `15` | Mindestlänge für Titel in Minuten |
|
||||
| `makemkv_backup_mode` | `false` | Backup-Modus statt MKV-Modus |
|
||||
|
||||
!!! info "Backup-Modus"
|
||||
Im Backup-Modus erstellt MakeMKV eine vollständige Kopie der Disc (inkl. Menüs). Der Standardmodus erstellt direkt MKV-Dateien.
|
||||
|
||||
---
|
||||
|
||||
## Benachrichtigungen (PushOver)
|
||||
|
||||
| Einstellung | Beschreibung |
|
||||
|------------|-------------|
|
||||
| `pushover_user_key` | Dein PushOver User-Key |
|
||||
| `pushover_api_token` | API-Token deiner PushOver-App |
|
||||
|
||||
Nach der Eingabe kann die Verbindung mit dem **Test-Button** geprüft werden.
|
||||
|
||||
---
|
||||
|
||||
## Vollständige Einstellungsreferenz
|
||||
|
||||
Eine vollständige Liste aller Einstellungen mit Typen, Validierung und Standardwerten findest du unter:
|
||||
|
||||
[:octicons-arrow-right-24: Einstellungsreferenz](../configuration/settings-reference.md)
|
||||
41
docs/getting-started/index.md
Normal file
41
docs/getting-started/index.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Erste Schritte
|
||||
|
||||
Dieser Abschnitt führt dich durch die Installation und Einrichtung von Ripster.
|
||||
|
||||
## Überblick
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
- :material-list-check: **Voraussetzungen**
|
||||
|
||||
---
|
||||
|
||||
Systemanforderungen und externe Tools, die vor der Installation benötigt werden.
|
||||
|
||||
[:octicons-arrow-right-24: Voraussetzungen prüfen](prerequisites.md)
|
||||
|
||||
- :material-download: **Installation**
|
||||
|
||||
---
|
||||
|
||||
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>
|
||||
140
docs/getting-started/installation.md
Normal file
140
docs/getting-started/installation.md
Normal file
@@ -0,0 +1,140 @@
|
||||
# Installation
|
||||
|
||||
---
|
||||
|
||||
## Repository klonen
|
||||
|
||||
```bash
|
||||
git clone https://github.com/YOUR_GITHUB_USERNAME/ripster.git
|
||||
cd ripster
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Automatischer Start
|
||||
|
||||
Ripster enthält ein `start.sh`-Skript, das alle Abhängigkeiten installiert und Backend + Frontend gleichzeitig startet:
|
||||
|
||||
```bash
|
||||
./start.sh
|
||||
```
|
||||
|
||||
Das Skript führt automatisch folgende Schritte durch:
|
||||
|
||||
1. **Node.js-Versionscheck** – prüft ob >= 20.19.0 verfügbar ist (mit nvm/npx-Fallback)
|
||||
2. **Abhängigkeiten installieren** – `npm install` für Root, Backend und Frontend
|
||||
3. **Dienste starten** – Backend und Frontend werden parallel gestartet
|
||||
|
||||
!!! success "Erfolgreich gestartet"
|
||||
- Backend läuft auf `http://localhost:3001`
|
||||
- Frontend läuft auf `http://localhost:5173`
|
||||
|
||||
---
|
||||
|
||||
## Manuelle Installation
|
||||
|
||||
Falls du mehr Kontrolle benötigst:
|
||||
|
||||
```bash
|
||||
# Root-Abhängigkeiten
|
||||
npm install
|
||||
|
||||
# Backend-Abhängigkeiten
|
||||
cd backend && npm install && cd ..
|
||||
|
||||
# Frontend-Abhängigkeiten
|
||||
cd frontend && npm install && cd ..
|
||||
|
||||
# Backend starten (Terminal 1)
|
||||
cd backend && npm run dev
|
||||
|
||||
# Frontend starten (Terminal 2)
|
||||
cd frontend && npm run dev
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Umgebungsvariablen konfigurieren
|
||||
|
||||
### Backend
|
||||
|
||||
```bash
|
||||
cp backend/.env.example backend/.env
|
||||
```
|
||||
|
||||
Bearbeite `backend/.env`:
|
||||
|
||||
```env
|
||||
PORT=3001
|
||||
DB_PATH=./data/ripster.db
|
||||
CORS_ORIGIN=http://localhost:5173
|
||||
LOG_DIR=./logs
|
||||
LOG_LEVEL=info
|
||||
```
|
||||
|
||||
### Frontend
|
||||
|
||||
```bash
|
||||
cp frontend/.env.example frontend/.env
|
||||
```
|
||||
|
||||
Bearbeite `frontend/.env`:
|
||||
|
||||
```env
|
||||
VITE_API_BASE=http://localhost:3001
|
||||
VITE_WS_URL=ws://localhost:3001
|
||||
```
|
||||
|
||||
!!! tip "Alle Umgebungsvariablen"
|
||||
Eine vollständige Übersicht aller Umgebungsvariablen findest du unter [Umgebungsvariablen](../configuration/environment.md).
|
||||
|
||||
---
|
||||
|
||||
## Datenbank initialisieren
|
||||
|
||||
Die SQLite-Datenbank wird **automatisch** beim ersten Start erstellt und mit dem Schema aus `db/schema.sql` initialisiert. Es sind keine manuellen Datenbankschritte erforderlich.
|
||||
|
||||
```
|
||||
backend/data/
|
||||
└── ripster.db ← Wird automatisch angelegt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stoppen
|
||||
|
||||
```bash
|
||||
./kill.sh
|
||||
```
|
||||
|
||||
Das Skript beendet Backend- und Frontend-Prozesse graceful.
|
||||
|
||||
---
|
||||
|
||||
## Verzeichnisstruktur nach Installation
|
||||
|
||||
```
|
||||
ripster/
|
||||
├── backend/
|
||||
│ ├── data/ ← SQLite-Datenbank (nach erstem Start)
|
||||
│ ├── logs/ ← Log-Dateien
|
||||
│ ├── node_modules/ ← Backend-Abhängigkeiten
|
||||
│ └── .env ← Backend-Konfiguration
|
||||
├── frontend/
|
||||
│ ├── node_modules/ ← Frontend-Abhängigkeiten
|
||||
│ ├── dist/ ← Production-Build (nach npm run build)
|
||||
│ └── .env ← Frontend-Konfiguration
|
||||
└── node_modules/ ← Root-Abhängigkeiten (concurrently etc.)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Nächste Schritte
|
||||
|
||||
Nach erfolgreicher Installation:
|
||||
|
||||
1. Öffne [http://localhost:5173](http://localhost:5173)
|
||||
2. Navigiere zu **Einstellungen**
|
||||
3. Konfiguriere Pfade, API-Keys und Encoding-Presets
|
||||
|
||||
[:octicons-arrow-right-24: Zur Konfiguration](configuration.md)
|
||||
158
docs/getting-started/prerequisites.md
Normal file
158
docs/getting-started/prerequisites.md
Normal file
@@ -0,0 +1,158 @@
|
||||
# Voraussetzungen
|
||||
|
||||
Bevor du Ripster installierst, stelle sicher, dass folgende Software auf deinem System verfügbar ist.
|
||||
|
||||
---
|
||||
|
||||
## System-Anforderungen
|
||||
|
||||
| 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.
|
||||
|
||||
```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
|
||||
|
||||
# Installierte Version prüfen
|
||||
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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Disc-Laufwerk
|
||||
|
||||
Ripster benötigt ein physisches **DVD- oder Blu-ray-Laufwerk**.
|
||||
|
||||
!!! info "Blu-ray unter Linux"
|
||||
Für Blu-ray-Ripping unter Linux wird zusätzlich `libaacs` benötigt. MakeMKV bringt jedoch eine eigene Entschlüsselung mit, daher ist dies in den meisten Fällen nicht erforderlich.
|
||||
|
||||
```bash
|
||||
# Laufwerk prüfen
|
||||
ls /dev/sr*
|
||||
# oder
|
||||
lsblk | grep rom
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## OMDb API-Key
|
||||
|
||||
Ripster verwendet die [OMDb API](https://www.omdbapi.com/) für Filmmetadaten.
|
||||
|
||||
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
|
||||
|
||||
---
|
||||
|
||||
## Optionale Voraussetzungen
|
||||
|
||||
### 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
|
||||
|
||||
### SSH-Zugang (Deployment)
|
||||
|
||||
Für Remote-Deployment via `deploy-ripster.sh`:
|
||||
|
||||
```bash
|
||||
# sshpass installieren
|
||||
sudo apt-get install sshpass
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 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
|
||||
144
docs/getting-started/quickstart.md
Normal file
144
docs/getting-started/quickstart.md
Normal file
@@ -0,0 +1,144 @@
|
||||
# Schnellstart
|
||||
|
||||
Nach der [Installation](installation.md) und [Konfiguration](configuration.md) kannst du sofort mit dem ersten Rip beginnen.
|
||||
|
||||
---
|
||||
|
||||
## 1. Ripster starten
|
||||
|
||||
```bash
|
||||
cd ripster
|
||||
./start.sh
|
||||
```
|
||||
|
||||
Öffne [http://localhost:5173](http://localhost:5173) im Browser.
|
||||
|
||||
---
|
||||
|
||||
## 2. Dashboard
|
||||
|
||||
Das Dashboard zeigt den aktuellen Pipeline-Status:
|
||||
|
||||
```
|
||||
Status: IDLE – Bereit
|
||||
Warte auf Disc...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Disc einlegen
|
||||
|
||||
Lege eine DVD oder Blu-ray in das Laufwerk ein. Ripster erkennt die Disc automatisch (Polling-Intervall konfigurierbar, Standard: 5 Sekunden) und wechselt in den Status **ANALYZING**.
|
||||
|
||||
!!! tip "Manuelle Analyse"
|
||||
Falls die Disc nicht automatisch erkannt wird, kann über die API eine manuelle Analyse ausgelöst werden:
|
||||
```bash
|
||||
curl -X POST http://localhost:3001/api/pipeline/analyze
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Analyse abwarten
|
||||
|
||||
MakeMKV analysiert die Disc-Struktur. Dieser Vorgang dauert je nach Disc **30 Sekunden bis 5 Minuten**.
|
||||
|
||||
Der Fortschritt wird live im Dashboard angezeigt.
|
||||
|
||||
---
|
||||
|
||||
## 5. Metadaten auswählen
|
||||
|
||||
Nach der Analyse öffnet sich der **Metadaten-Dialog**:
|
||||
|
||||
1. **Titel suchen**: Gib den Filmtitel in die Suchleiste ein
|
||||
2. **Ergebnis auswählen**: Wähle den passenden Film aus der OMDb-Liste
|
||||
3. **Playlist wählen** *(nur Blu-ray)*: Bei Blu-rays mit mehreren Playlists zeigt Ripster eine Analyse der wahrscheinlich korrekten Playlist an
|
||||
4. **Bestätigen**: Klicke auf "Bestätigen"
|
||||
|
||||
!!! info "Playlist-Obfuskierung"
|
||||
Einige Blu-rays enthalten absichtlich viele Fake-Playlists. Ripster analysiert diese automatisch und schlägt die wahrscheinlich korrekte Playlist vor.
|
||||
|
||||
---
|
||||
|
||||
## 6. Ripping starten
|
||||
|
||||
Nach der Metadaten-Auswahl wechselt der Status zu **READY_TO_START**.
|
||||
|
||||
Klicke auf **"Starten"** – MakeMKV beginnt mit dem Ripping.
|
||||
|
||||
**Typische Dauer:**
|
||||
- DVD: 20–40 Minuten
|
||||
- Blu-ray: 45–120 Minuten
|
||||
|
||||
---
|
||||
|
||||
## 7. Encode-Review
|
||||
|
||||
Nach dem Ripping analysiert MediaInfo die Track-Struktur. Im **Encode-Review** kannst du:
|
||||
|
||||
- **Audio-Tracks** auswählen (z. B. Deutsch + Englisch)
|
||||
- **Untertitel-Tracks** auswählen
|
||||
- Überflüssige Tracks deaktivieren
|
||||
|
||||
Klicke auf **"Encodierung bestätigen"**.
|
||||
|
||||
---
|
||||
|
||||
## 8. Encoding
|
||||
|
||||
HandBrake encodiert die Datei mit dem konfigurierten Preset.
|
||||
|
||||
**Fortschrittsanzeige:**
|
||||
- Aktueller Prozentsatz
|
||||
- Geschätzte Restzeit (ETA)
|
||||
- Encoding-Geschwindigkeit (FPS)
|
||||
|
||||
---
|
||||
|
||||
## 9. Fertig!
|
||||
|
||||
Status wechselt zu **FINISHED**. Die encodierte Datei liegt im konfigurierten `movie_dir`.
|
||||
|
||||
```
|
||||
/mnt/nas/movies/
|
||||
└── Inception (2010).mkv ← Fertige Datei
|
||||
```
|
||||
|
||||
!!! success "PushOver-Benachrichtigung"
|
||||
Falls PushOver konfiguriert ist, erhältst du eine Push-Benachrichtigung auf dein Mobilgerät.
|
||||
|
||||
---
|
||||
|
||||
## Workflow-Zusammenfassung
|
||||
|
||||
```
|
||||
Disc einlegen
|
||||
↓
|
||||
ANALYZING (MakeMKV analysiert)
|
||||
↓
|
||||
METADATA_SELECTION (Titel & Playlist wählen)
|
||||
↓
|
||||
READY_TO_START → [Starten]
|
||||
↓
|
||||
RIPPING (MakeMKV rippt)
|
||||
↓
|
||||
MEDIAINFO_CHECK (Track-Analyse)
|
||||
↓
|
||||
READY_TO_ENCODE → [Bestätigen]
|
||||
↓
|
||||
ENCODING (HandBrake encodiert)
|
||||
↓
|
||||
FINISHED ✓
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Was tun bei Fehlern?
|
||||
|
||||
Falls ein Job in den Status **ERROR** wechselt:
|
||||
|
||||
1. Klicke auf **"Details"** im Dashboard
|
||||
2. Prüfe die Log-Ausgabe
|
||||
3. Klicke auf **"Retry"** um den Job erneut zu versuchen
|
||||
|
||||
Logs findest du auch in der [History-Seite](http://localhost:5173/history).
|
||||
Reference in New Issue
Block a user