0.13.1-8 Install Fix
This commit is contained in:
+103
-22
@@ -56,6 +56,11 @@ HANDBRAKE_INSTALL_MODE=""
|
||||
SKIP_NGINX=false
|
||||
REINSTALL=false
|
||||
|
||||
# --- Container-Optionen -------------------------------------------------------
|
||||
CONTAINER_TYPE="none"
|
||||
CONTAINER_PRIVILEGE="unknown"
|
||||
SERVICE_SECURITY=""
|
||||
|
||||
# --- Argumente parsen ---------------------------------------------------------
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
@@ -91,17 +96,40 @@ case "$ID" in
|
||||
*) fatal "Nicht unterstütztes OS: $ID. Nur Debian/Ubuntu unterstützt." ;;
|
||||
esac
|
||||
|
||||
if [[ -z "$FRONTEND_HOST" ]]; then
|
||||
FRONTEND_HOST=$(hostname -I | awk '{print $1}')
|
||||
info "Erkannte IP: $FRONTEND_HOST"
|
||||
fi
|
||||
# --- Container Detection ------------------------------------------------------
|
||||
detect_container_env() {
|
||||
CONTAINER_TYPE="none"
|
||||
CONTAINER_PRIVILEGE="unknown"
|
||||
|
||||
info "Repository: $REPO_URL"
|
||||
info "Branch: $GIT_BRANCH"
|
||||
info "Installationsverzeichnis: $INSTALL_DIR"
|
||||
info "Systembenutzer: $SERVICE_USER"
|
||||
info "Backend-Port: $BACKEND_PORT"
|
||||
info "Frontend-Host: $FRONTEND_HOST"
|
||||
if command -v systemd-detect-virt &>/dev/null; then
|
||||
local virt
|
||||
virt=$(systemd-detect-virt 2>/dev/null || true)
|
||||
if [[ -n "$virt" && "$virt" != "none" ]]; then
|
||||
CONTAINER_TYPE="$virt"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -f /proc/1/environ ]] && tr '\0' '\n' < /proc/1/environ | grep -q '^container=lxc$'; then
|
||||
CONTAINER_TYPE="lxc"
|
||||
fi
|
||||
|
||||
if [[ "$CONTAINER_TYPE" == "lxc" ]]; then
|
||||
if [[ -r /proc/self/uid_map ]]; then
|
||||
local uid_map_line
|
||||
uid_map_line=$(head -n1 /proc/self/uid_map 2>/dev/null || true)
|
||||
if [[ "$uid_map_line" =~ ^0[[:space:]]+0[[:space:]]+ ]]; then
|
||||
CONTAINER_PRIVILEGE="privileged"
|
||||
else
|
||||
CONTAINER_PRIVILEGE="unprivileged"
|
||||
fi
|
||||
else
|
||||
CONTAINER_PRIVILEGE="unprivileged"
|
||||
fi
|
||||
fi
|
||||
|
||||
info "Container-Typ: $CONTAINER_TYPE"
|
||||
info "Privileg-Level: $CONTAINER_PRIVILEGE"
|
||||
}
|
||||
|
||||
# --- Hilfsfunktionen ----------------------------------------------------------
|
||||
|
||||
@@ -182,6 +210,53 @@ patch_existing_ripster_nginx_site() {
|
||||
'location /api/ {'
|
||||
}
|
||||
|
||||
generate_systemd_security() {
|
||||
SERVICE_SECURITY=$(cat <<EOF
|
||||
# Kein statisches DeviceAllow: Device-Pfade unterscheiden sich je nach Host/Container.
|
||||
# Damit Ripster auf unterschiedlichen Systemen funktioniert, kein Device-Cgroup-Filter.
|
||||
DevicePolicy=auto
|
||||
SupplementaryGroups=video render cdrom disk
|
||||
|
||||
# Für Skriptausführung via GUI (inkl. optionalem sudo in User-Skripten)
|
||||
# darf no_new_privileges nicht aktiv sein.
|
||||
NoNewPrivileges=false
|
||||
ProtectSystem=full
|
||||
ReadWritePaths=${INSTALL_DIR}/backend/data ${INSTALL_DIR}/backend/logs /tmp ${SERVICE_HOME} ${MAKEMKV_SERVICE_DIR}
|
||||
PrivateTmp=true
|
||||
EOF
|
||||
)
|
||||
|
||||
if [[ "$CONTAINER_TYPE" == "lxc" ]]; then
|
||||
warn "LXC erkannt – passe systemd-Sandbox an"
|
||||
|
||||
if [[ "$CONTAINER_PRIVILEGE" == "privileged" ]]; then
|
||||
SERVICE_SECURITY=$(cat <<EOF
|
||||
# Kein statisches DeviceAllow: Device-Pfade unterscheiden sich je nach Host/Container.
|
||||
# Damit Ripster auf unterschiedlichen Systemen funktioniert, kein Device-Cgroup-Filter.
|
||||
DevicePolicy=auto
|
||||
SupplementaryGroups=video render cdrom disk
|
||||
|
||||
# Für Skriptausführung via GUI (inkl. optionalem sudo in User-Skripten)
|
||||
# darf no_new_privileges nicht aktiv sein.
|
||||
NoNewPrivileges=false
|
||||
ProtectSystem=full
|
||||
PrivateTmp=false
|
||||
EOF
|
||||
)
|
||||
else
|
||||
SERVICE_SECURITY=$(cat <<EOF
|
||||
SupplementaryGroups=video render cdrom disk
|
||||
|
||||
# Für Skriptausführung via GUI (inkl. optionalem sudo in User-Skripten)
|
||||
# darf no_new_privileges nicht aktiv sein.
|
||||
NoNewPrivileges=false
|
||||
EOF
|
||||
)
|
||||
warn "Unprivileged LXC – systemd-Sandbox deaktiviert"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
install_node() {
|
||||
header "Node.js installieren"
|
||||
local required_major=20
|
||||
@@ -431,6 +506,20 @@ EOF
|
||||
fi
|
||||
}
|
||||
|
||||
detect_container_env
|
||||
|
||||
if [[ -z "$FRONTEND_HOST" ]]; then
|
||||
FRONTEND_HOST=$(hostname -I | awk '{print $1}')
|
||||
info "Erkannte IP: $FRONTEND_HOST"
|
||||
fi
|
||||
|
||||
info "Repository: $REPO_URL"
|
||||
info "Branch: $GIT_BRANCH"
|
||||
info "Installationsverzeichnis: $INSTALL_DIR"
|
||||
info "Systembenutzer: $SERVICE_USER"
|
||||
info "Backend-Port: $BACKEND_PORT"
|
||||
info "Frontend-Host: $FRONTEND_HOST"
|
||||
|
||||
# --- HandBrake-Installmodus auswählen ----------------------------------------
|
||||
select_handbrake_mode
|
||||
|
||||
@@ -661,6 +750,8 @@ chmod 700 "$MAKEMKV_SERVICE_DIR" 2>/dev/null || true
|
||||
# --- Systemd-Dienst: Backend -------------------------------------------------
|
||||
header "Systemd-Dienst (Backend) erstellen"
|
||||
|
||||
generate_systemd_security
|
||||
|
||||
cat > /etc/systemd/system/ripster-backend.service <<EOF
|
||||
[Unit]
|
||||
Description=Ripster Backend API
|
||||
@@ -689,17 +780,7 @@ StandardOutput=journal
|
||||
StandardError=journal
|
||||
SyslogIdentifier=ripster-backend
|
||||
|
||||
# Kein statisches DeviceAllow: Device-Pfade unterscheiden sich je nach Host/Container.
|
||||
# Damit Ripster auf unterschiedlichen Systemen funktioniert, kein Device-Cgroup-Filter.
|
||||
DevicePolicy=auto
|
||||
SupplementaryGroups=video render cdrom disk
|
||||
|
||||
# Für Skriptausführung via GUI (inkl. optionalem sudo in User-Skripten)
|
||||
# darf no_new_privileges nicht aktiv sein.
|
||||
NoNewPrivileges=false
|
||||
ProtectSystem=full
|
||||
ReadWritePaths=${INSTALL_DIR}/backend/data ${INSTALL_DIR}/backend/logs /tmp ${SERVICE_HOME} ${MAKEMKV_SERVICE_DIR}
|
||||
PrivateTmp=true
|
||||
${SERVICE_SECURITY}
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -829,4 +910,4 @@ if [[ ${#missing_tools[@]} -gt 0 ]]; then
|
||||
echo -e " Diese können in den Ripster-Einstellungen konfiguriert werden."
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
Reference in New Issue
Block a user