some pload

This commit is contained in:
2026-03-09 05:47:21 +00:00
parent 7204dbb65b
commit 66184325d6
3 changed files with 122 additions and 53 deletions

View File

@@ -31,8 +31,6 @@ sshpass -p "$SSH_PASSWORD" ssh $SSH_OPTS "${REMOTE_USER}@${REMOTE_HOST}" "set -e
echo "Uebertrage lokalen Ordner ${LOCAL_PATH} nach ${REMOTE_TARGET} ..." echo "Uebertrage lokalen Ordner ${LOCAL_PATH} nach ${REMOTE_TARGET} ..."
echo "backend/data wird weder uebertragen noch auf dem Ziel geloescht: ${DATA_RELATIVE_DIR}" echo "backend/data wird weder uebertragen noch auf dem Ziel geloescht: ${DATA_RELATIVE_DIR}"
sshpass -p "$SSH_PASSWORD" rsync -az --progress --delete \ sshpass -p "$SSH_PASSWORD" rsync -az --progress --delete \
--exclude "${DATA_RELATIVE_DIR}" \
--filter "protect ${DATA_RELATIVE_DIR}" \
--filter "protect debug" \ --filter "protect debug" \
-e "ssh $SSH_OPTS" \ -e "ssh $SSH_OPTS" \
"${LOCAL_PATH}/" "${REMOTE_TARGET}/" "${LOCAL_PATH}/" "${REMOTE_TARGET}/"

View File

@@ -134,16 +134,18 @@ install_makemkv() {
libexpat1-dev libavcodec-dev libgl1-mesa-dev \ libexpat1-dev libavcodec-dev libgl1-mesa-dev \
qtbase5-dev zlib1g-dev wget qtbase5-dev zlib1g-dev wget
# Aktuelle Version ermitteln local makemkv_fallback="1.18.3"
info "Ermittle aktuelle MakeMKV-Version..." info "Ermittle aktuelle MakeMKV-Version (forum.makemkv.com)..."
local makemkv_version local makemkv_version
makemkv_version=$(curl -s "https://www.makemkv.com/download/" \ makemkv_version=$(curl -s --max-time 15 \
| grep -oP 'makemkv-oss-\K[0-9]+\.[0-9]+\.[0-9]+' | head -1 || true) "https://forum.makemkv.com/forum/viewtopic.php?f=3&t=224" \
| grep -oP 'MakeMKV \K[0-9]+\.[0-9]+\.[0-9]+(?= for Linux)' | head -1 || true)
if [[ -z "$makemkv_version" ]]; then if [[ -z "$makemkv_version" ]]; then
warn "MakeMKV-Version konnte nicht ermittelt werden." warn "MakeMKV-Version konnte nicht ermittelt werden verwende Fallback $makemkv_fallback"
warn "Bitte manuell installieren: https://www.makemkv.com/forum/viewtopic.php?t=224" makemkv_version="$makemkv_fallback"
return else
info "Gefundene Version: $makemkv_version"
fi fi
info "Baue MakeMKV $makemkv_version..." info "Baue MakeMKV $makemkv_version..."
@@ -183,33 +185,63 @@ install_handbrake() {
return return
fi fi
# Strategie 1: direkt aus den Distro-Repos (Ubuntu Universe / Debian)
info "Versuche HandBrake CLI aus den Standard-Repos..."
if apt-get install -y handbrake-cli 2>/dev/null; then
ok "HandBrakeCLI installiert (Standard-Repos)"
return
fi
case "$ID" in case "$ID" in
ubuntu) ubuntu)
info "Installiere HandBrake CLI über PPA..." # Strategie 2 (Ubuntu < 24.04): PPA manuell per Key + Sources-Datei eintragen,
if ! grep -q "stebbins/handbrake" /etc/apt/sources.list.d/*.list 2>/dev/null; then # ohne add-apt-repository (schlägt auf Noble mit 401 fehl).
apt-get install -y software-properties-common local codename="${VERSION_CODENAME:-jammy}"
add-apt-repository -y ppa:stebbins/handbrake-releases local ppa_sources="/etc/apt/sources.list.d/handbrake.list"
local ppa_key="/etc/apt/keyrings/handbrake.gpg"
info "Füge HandBrake PPA manuell hinzu (${codename})..."
mkdir -p /etc/apt/keyrings
if curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x8771ADB0816950D8" \
| gpg --dearmor -o "$ppa_key" 2>/dev/null; then
cat > "$ppa_sources" <<EOF
deb [signed-by=${ppa_key}] https://ppa.launchpadcontent.net/stebbins/handbrake-releases/ubuntu ${codename} main
EOF
apt_update apt_update
apt-get install -y handbrake-cli 2>/dev/null && \
{ ok "HandBrakeCLI installiert (PPA)"; return; } || \
{ warn "PPA-Installation fehlgeschlagen, räume auf...";
rm -f "$ppa_key" "$ppa_sources"; }
else
warn "PPA-Key konnte nicht geladen werden."
fi
# Strategie 3 (Ubuntu): snap
if command_exists snap; then
info "Versuche HandBrake via snap..."
if snap install handbrake-cli 2>/dev/null; then
ok "HandBrakeCLI installiert (snap)"
return
fi
fi fi
apt-get install -y handbrake-cli
;; ;;
debian) debian)
info "Installiere HandBrake CLI (Debian Backports)..." # Strategie 2 (Debian): Backports
if ! grep -q "backports" /etc/apt/sources.list 2>/dev/null && \ info "Versuche HandBrake CLI über Debian Backports..."
! find /etc/apt/sources.list.d/ -name "*.list" -exec grep -l "backports" {} \; | grep -q .; then if ! find /etc/apt/sources.list.d/ -name "*.list" -exec grep -l "backports" {} \; 2>/dev/null | grep -q .; then
echo "deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main" \ echo "deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main" \
> /etc/apt/sources.list.d/backports.list > /etc/apt/sources.list.d/backports.list
apt_update apt_update
fi fi
apt-get install -y -t "${VERSION_CODENAME}-backports" handbrake-cli 2>/dev/null || \ apt-get install -y -t "${VERSION_CODENAME}-backports" handbrake-cli 2>/dev/null && \
apt-get install -y handbrake-cli 2>/dev/null || { { ok "HandBrakeCLI installiert (Backports)"; return; }
warn "HandBrake CLI konnte nicht über Backports installiert werden."
warn "Bitte manuell installieren: https://handbrake.fr/downloads2.php"
return
}
;; ;;
esac esac
ok "HandBrakeCLI installiert"
warn "HandBrake CLI konnte nicht automatisch installiert werden."
warn "Bitte manuell installieren: https://handbrake.fr/downloads2.php"
} }
# --- apt-Hilfsfunktionen ------------------------------------------------------ # --- apt-Hilfsfunktionen ------------------------------------------------------
@@ -404,11 +436,11 @@ header "Frontend bauen"
info "Baue Frontend für $FRONTEND_HOST..." info "Baue Frontend für $FRONTEND_HOST..."
# Env-Datei für den Build erstellen # Relative URLs verwenden funktioniert mit jedem Hostnamen/Domain, da nginx
cat > "$INSTALL_DIR/frontend/.env.production.local" <<EOF # /api/ und /ws auf dem selben Host proxied. Absolute IP-URLs würden Chromes
VITE_API_BASE=http://${FRONTEND_HOST}/api # Private Network Access (PNA) Policy verletzen, wenn das Frontend über einen
VITE_WS_URL=ws://${FRONTEND_HOST}/ws # Domainnamen aufgerufen wird.
EOF rm -f "$INSTALL_DIR/frontend/.env.production.local"
npm run build --prefix "$INSTALL_DIR/frontend" --silent npm run build --prefix "$INSTALL_DIR/frontend" --silent
ok "Frontend gebaut: $INSTALL_DIR/frontend/dist" ok "Frontend gebaut: $INSTALL_DIR/frontend/dist"

View File

@@ -42,7 +42,7 @@ header() { echo -e "\n${BOLD}${BLUE}══════════════
fatal() { error "$*"; exit 1; } fatal() { error "$*"; exit 1; }
# --- Standard-Optionen -------------------------------------------------------- # --- Standard-Optionen --------------------------------------------------------
GIT_BRANCH="main" GIT_BRANCH="dev"
INSTALL_DIR="/opt/ripster" INSTALL_DIR="/opt/ripster"
SERVICE_USER="ripster" SERVICE_USER="ripster"
BACKEND_PORT="3001" BACKEND_PORT="3001"
@@ -137,15 +137,20 @@ install_makemkv() {
libexpat1-dev libavcodec-dev libgl1-mesa-dev \ libexpat1-dev libavcodec-dev libgl1-mesa-dev \
qtbase5-dev zlib1g-dev wget qtbase5-dev zlib1g-dev wget
info "Ermittle aktuelle MakeMKV-Version..." # Aktuelle Version aus dem offiziellen Linux-Forum-Thread ermitteln.
# Der Titel lautet immer: "MakeMKV X.Y.Z for Linux is available"
local makemkv_fallback="1.18.3"
info "Ermittle aktuelle MakeMKV-Version (forum.makemkv.com)..."
local makemkv_version local makemkv_version
makemkv_version=$(curl -s "https://www.makemkv.com/download/" \ makemkv_version=$(curl -s --max-time 15 \
| grep -oP 'makemkv-oss-\K[0-9]+\.[0-9]+\.[0-9]+' | head -1 || true) "https://forum.makemkv.com/forum/viewtopic.php?f=3&t=224" \
| grep -oP 'MakeMKV \K[0-9]+\.[0-9]+\.[0-9]+(?= for Linux)' | head -1 || true)
if [[ -z "$makemkv_version" ]]; then if [[ -z "$makemkv_version" ]]; then
warn "MakeMKV-Version konnte nicht ermittelt werden." warn "MakeMKV-Version konnte nicht ermittelt werden verwende Fallback $makemkv_fallback"
warn "Bitte manuell installieren: https://www.makemkv.com/forum/viewtopic.php?t=224" makemkv_version="$makemkv_fallback"
return else
info "Aktuelle Version: $makemkv_version"
fi fi
info "Baue MakeMKV $makemkv_version..." info "Baue MakeMKV $makemkv_version..."
@@ -185,30 +190,63 @@ install_handbrake() {
return return
fi fi
# Strategie 1: direkt aus den Distro-Repos (Ubuntu Universe / Debian)
info "Versuche HandBrake CLI aus den Standard-Repos..."
if apt-get install -y handbrake-cli 2>/dev/null; then
ok "HandBrakeCLI installiert (Standard-Repos)"
return
fi
case "$ID" in case "$ID" in
ubuntu) ubuntu)
info "Installiere HandBrake CLI über PPA..." # Strategie 2 (Ubuntu < 24.04): PPA manuell per Key + Sources-Datei eintragen,
apt-get install -y software-properties-common # ohne add-apt-repository (schlägt auf Noble mit 401 fehl).
add-apt-repository -y ppa:stebbins/handbrake-releases local codename="${VERSION_CODENAME:-jammy}"
local ppa_sources="/etc/apt/sources.list.d/handbrake.list"
local ppa_key="/etc/apt/keyrings/handbrake.gpg"
info "Füge HandBrake PPA manuell hinzu (${codename})..."
mkdir -p /etc/apt/keyrings
if curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x8771ADB0816950D8" \
| gpg --dearmor -o "$ppa_key" 2>/dev/null; then
cat > "$ppa_sources" <<EOF
deb [signed-by=${ppa_key}] https://ppa.launchpadcontent.net/stebbins/handbrake-releases/ubuntu ${codename} main
EOF
apt_update apt_update
apt-get install -y handbrake-cli apt-get install -y handbrake-cli 2>/dev/null && \
{ ok "HandBrakeCLI installiert (PPA)"; return; } || \
{ warn "PPA-Installation fehlgeschlagen, räume auf...";
rm -f "$ppa_key" "$ppa_sources"; }
else
warn "PPA-Key konnte nicht geladen werden."
fi
# Strategie 3 (Ubuntu): snap
if command_exists snap; then
info "Versuche HandBrake via snap..."
if snap install handbrake-cli 2>/dev/null; then
ok "HandBrakeCLI installiert (snap)"
return
fi
fi
;; ;;
debian) debian)
info "Installiere HandBrake CLI (Debian Backports)..." # Strategie 2 (Debian): Backports
info "Versuche HandBrake CLI über Debian Backports..."
if ! find /etc/apt/sources.list.d/ -name "*.list" -exec grep -l "backports" {} \; 2>/dev/null | grep -q .; then if ! find /etc/apt/sources.list.d/ -name "*.list" -exec grep -l "backports" {} \; 2>/dev/null | grep -q .; then
echo "deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main" \ echo "deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main" \
> /etc/apt/sources.list.d/backports.list > /etc/apt/sources.list.d/backports.list
apt_update apt_update
fi fi
apt-get install -y -t "${VERSION_CODENAME}-backports" handbrake-cli 2>/dev/null || \ apt-get install -y -t "${VERSION_CODENAME}-backports" handbrake-cli 2>/dev/null && \
apt-get install -y handbrake-cli 2>/dev/null || { { ok "HandBrakeCLI installiert (Backports)"; return; }
warn "HandBrake CLI konnte nicht installiert werden."
warn "Bitte manuell installieren: https://handbrake.fr/downloads2.php"
return
}
;; ;;
esac esac
ok "HandBrakeCLI installiert"
warn "HandBrake CLI konnte nicht automatisch installiert werden."
warn "Bitte manuell installieren: https://handbrake.fr/downloads2.php"
} }
# --- apt-Hilfsfunktionen ------------------------------------------------------ # --- apt-Hilfsfunktionen ------------------------------------------------------
@@ -401,10 +439,11 @@ header "Frontend bauen"
info "Baue Frontend für $FRONTEND_HOST..." info "Baue Frontend für $FRONTEND_HOST..."
cat > "$INSTALL_DIR/frontend/.env.production.local" <<EOF # Relative URLs verwenden funktioniert mit jedem Hostnamen/Domain, da nginx
VITE_API_BASE=http://${FRONTEND_HOST}/api # /api/ und /ws auf dem selben Host proxied. Absolute IP-URLs würden Chromes
VITE_WS_URL=ws://${FRONTEND_HOST}/ws # Private Network Access (PNA) Policy verletzen, wenn das Frontend über einen
EOF # Domainnamen aufgerufen wird.
rm -f "$INSTALL_DIR/frontend/.env.production.local"
npm run build --prefix "$INSTALL_DIR/frontend" --silent npm run build --prefix "$INSTALL_DIR/frontend" --silent
ok "Frontend gebaut: $INSTALL_DIR/frontend/dist" ok "Frontend gebaut: $INSTALL_DIR/frontend/dist"