Produktions-Deployment¶
Automatische Installation (empfohlen)¶
Das mitgelieferte install.sh richtet Ripster vollautomatisch ein – inklusive Node.js, MakeMKV, HandBrake, nginx und systemd-Dienst.
Unterstützte Systeme laut Script: Debian, Ubuntu, Linux Mint, Pop!_OS Voraussetzung: root-Rechte, Internetzugang
Schnellstart via curl¶
Oder mit wget:
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> | dev | 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¶
# 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¶
- Systemprüfung – OS-Erkennung und Root-Check
- Systempakete –
curl,wget,git,mediainfo,udevu. a. - Node.js 20 – via NodeSource, falls noch nicht installiert
- MakeMKV – aktuelle Version wird aus dem offiziellen Forum ermittelt und aus dem Quellcode kompiliert (kann mit
--no-makemkvübersprungen werden) - HandBrake – interaktive Auswahl:
- Option 1: Standard (
apt install handbrake-cli) - Option 2: Gebündelte GPU-Version mit NVDEC aus
bin/HandBrakeCLI
- Option 1: Standard (
- Systembenutzer
ripster– ohne Login-Shell und ohne Home-Verzeichnis; Gruppen werden (falls vorhanden) ergänzt:cdrom,optical,disk,video,render - Repository – klont Branch nach
--dir(bei--reinstall: sichertbackend/data, aktualisiert Repo, stellt Daten wieder her) - Verzeichnisse – stellt u. a. sicher:
backend/data,backend/logs,backend/data/output/raw,backend/data/output/movies,backend/data/logs - npm-Abhängigkeiten – Root, Backend (nur production), Frontend
- Frontend-Build –
npm run buildmit relativen API-URLs (nginx-kompatibel) - Backend
.env– wird automatisch generiert (bei--reinstallbleibt bestehende.enverhalten) - Berechtigungen – zunächst
ripster:ripsterauf Installationsverzeichnis; bei sudo-Aufruf werden Output-/Log-Ordner auf<aufrufender user>:ripstermit775gesetzt;.envwird auf600gesetzt - MakeMKV User-Ordner – erstellt bei sudo-Aufruf
~/.MakeMKVfür den aufrufenden Benutzer - systemd-Dienst –
ripster-backend.serviceerstellt, aktiviert und gestartet - nginx – konfiguriert als Reverse-Proxy für Frontend,
/api/und/ws(kann mit--no-nginxübersprungen werden)
Nach der Installation¶
# 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:
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¶
Wichtig: Das Backend serviert im aktuellen Stand keine frontend/dist-Dateien automatisch.
1) Frontend builden¶
Artefakte liegen in frontend/dist/.
2) Backend als systemd-Service¶
Beispiel /etc/systemd/system/ripster-backend.service:
[Unit]
Description=Ripster Backend
After=network.target
[Service]
Type=simple
User=ripster
WorkingDirectory=/opt/ripster/backend
ExecStart=/usr/bin/env node src/index.js
Restart=on-failure
RestartSec=5
Environment=NODE_ENV=production
Environment=PORT=3001
Environment=LOG_LEVEL=info
[Install]
WantedBy=multi-user.target
Aktivieren:
sudo systemctl daemon-reload
sudo systemctl enable --now ripster-backend
sudo systemctl status ripster-backend
3) nginx konfigurieren¶
Beispiel /etc/nginx/sites-available/ripster:
server {
listen 80;
server_name ripster.local;
root /opt/ripster/frontend/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://127.0.0.1:3001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /ws {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
Aktivieren:
sudo ln -s /etc/nginx/sites-available/ripster /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Datenbank-Backup¶
Sicherheit¶
- Ripster hat keine eingebaute Authentifizierung.
- Für externen Zugriff mindestens Basic Auth + TLS + Netzwerksegmentierung/VPN einsetzen.
- Secrets nicht ins Repo committen (
.env, Settings-Felder).