Files
ripster/docs/deployment/production.md
2026-03-11 14:54:08 +00:00

6.2 KiB
Raw Blame History

Produktions-Deployment


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

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

Oder mit wget:

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

# 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

# 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

Client
  -> nginx (Reverse Proxy + statisches Frontend)
    -> Backend API/WebSocket (Node.js, Port 3001)

Wichtig: Das Backend serviert im aktuellen Stand keine frontend/dist-Dateien automatisch.


1) Frontend builden

cd frontend
npm install
npm run build

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

sqlite3 /opt/ripster/backend/data/ripster.db \
  ".backup '/var/backups/ripster-$(date +%Y%m%d).db'"

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).