6.2 KiB
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
- 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, Gruppen:cdrom,optical,disk,video,render - Repository – klont Branch nach
--dir(bei--reinstall: sichert DB, pullt, stellt DB wieder her) - 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 erhalten) - Berechtigungen –
ripster:ripsterauf Installationsverzeichnis,600auf.env - 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
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).