From 759a7f24b107ba8c0198f59d42d345c4a8603824 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 29 Apr 2025 13:33:39 +0200 Subject: [PATCH] Refactor Sabnzbd --- ct/sabnzbd.sh | 51 ++++++++++++++++++++------------------ install/sabnzbd-install.sh | 48 +++++++++++++++++++++-------------- 2 files changed, 57 insertions(+), 42 deletions(-) diff --git a/ct/sabnzbd.sh b/ct/sabnzbd.sh index b67a184..a29ef5d 100644 --- a/ct/sabnzbd.sh +++ b/ct/sabnzbd.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE @@ -20,30 +20,33 @@ color catch_errors function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /opt/sabnzbd ]]; then - msg_error "No ${APP} Installation Found!" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/sabnzbd ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Updating $APP to ${RELEASE}" + systemctl stop sabnzbd.service + tar zxvf <(curl -fsSL https://github.com/sabnzbd/sabnzbd/releases/download/$RELEASE/SABnzbd-${RELEASE}-src.tar.gz) + cp -rf SABnzbd-${RELEASE}/* /opt/sabnzbd + rm -rf SABnzbd-${RELEASE} + + source /opt/sabnzbd/venv/bin/activate + pip install --upgrade pip + pip install -r /opt/sabnzbd/requirements.txt + deactivate + + echo "${RELEASE}" >/opt/${APP}_version.txt + systemctl start sabnzbd + msg_ok "Updated ${APP} to ${RELEASE}" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi exit - fi - RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') - if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Updating $APP to ${RELEASE}" - rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED - systemctl stop sabnzbd.service - tar zxvf <(curl -fsSL https://github.com/sabnzbd/sabnzbd/releases/download/$RELEASE/SABnzbd-${RELEASE}-src.tar.gz) - cp -rf SABnzbd-${RELEASE}/* /opt/sabnzbd - rm -rf SABnzbd-${RELEASE} - cd /opt/sabnzbd - $STD python3 -m pip install -r requirements.txt - echo "${RELEASE}" >/opt/${APP}_version.txt - systemctl start sabnzbd.service - msg_ok "Updated ${APP} to ${RELEASE}" - else - msg_ok "No update required. ${APP} is already at ${RELEASE}" - fi - exit } start diff --git a/install/sabnzbd-install.sh b/install/sabnzbd-install.sh index d838b6a..d174987 100644 --- a/install/sabnzbd-install.sh +++ b/install/sabnzbd-install.sh @@ -14,46 +14,58 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y par2 -$STD apt-get install -y p7zip-full +$STD apt-get install -y \ + par2 \ + p7zip-full +msg_ok "Installed Dependencies" + +msg_info "Setup Python3" +$STD apt-get install -y \ + python3-dev \ + python3-pip \ + python3-venv \ + python3-setuptools +msg_ok "Setup Python3" + +msg_info "Setup Unrar" cat </etc/apt/sources.list.d/non-free.list deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware EOF $STD apt-get update $STD apt-get install -y unrar rm /etc/apt/sources.list.d/non-free.list -msg_ok "Installed Dependencies" - -msg_info "Setup Python3" -$STD apt-get install -y \ - python3-dev \ - python3-pip -$STD apt-get install -y python3-setuptools -rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED -msg_ok "Setup Python3" +msg_ok "Setup Unrar" msg_info "Installing SABnzbd" RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') $STD tar zxvf <(curl -fsSL https://github.com/sabnzbd/sabnzbd/releases/download/$RELEASE/SABnzbd-${RELEASE}-src.tar.gz) mv SABnzbd-${RELEASE} /opt/sabnzbd -cd /opt/sabnzbd -$STD python3 -m pip install -r requirements.txt + +python3 -m venv /opt/sabnzbd/venv +source /opt/sabnzbd/venv/bin/activate +pip install --upgrade pip +pip install -r /opt/sabnzbd/requirements.txt +deactivate + echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed SABnzbd" msg_info "Creating Service" -service_path="/etc/systemd/system/sabnzbd.service" -echo "[Unit] +cat </etc/systemd/system/sabnzbd.service +[Unit] Description=SABnzbd After=network.target + [Service] WorkingDirectory=/opt/sabnzbd -ExecStart=python3 SABnzbd.py -s 0.0.0.0:7777 +ExecStart=/opt/sabnzbd/venv/bin/python SABnzbd.py -s 0.0.0.0:7777 Restart=always User=root + [Install] -WantedBy=multi-user.target" >$service_path -systemctl enable --now -q sabnzbd.service +WantedBy=multi-user.target +EOF +systemctl enable -q --now sabnzbd msg_ok "Created Service" motd_ssh