From dd0cdf5d2575cc12ffdb9e9418c23ed6f255de35 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 21 Jan 2025 14:38:38 +0100 Subject: [PATCH] ActualBudget: Fix Update-Function, Fix Wget Crawling, Add Versionscheck (#1643) * Update actualbudget-install.sh * Update actualbudget.sh * Update actualbudget-install.sh * Update actualbudget.sh --- ct/actualbudget.sh | 53 +++++++++++++++++++++------------ install/actualbudget-install.sh | 9 +++--- 2 files changed, 39 insertions(+), 23 deletions(-) diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index 4c779ad3..6e12d8a5 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -28,33 +28,48 @@ function update_script() { header_info check_container_storage check_container_resources + if [[ ! -d /opt/actualbudget ]]; then msg_error "No ${APP} Installation Found!" exit fi + if ! command -v jq >/dev/null 2>&1; then - echo "Installing jq..." - apt-get install -y jq >/dev/null 2>&1 - echo "Installed jq..." + echo "Installing jq..." + apt-get install -y jq >/dev/null 2>&1 + echo "Installed jq..." fi - msg_info "Updating ${APP}" - systemctl stop actualbudget RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual-server/tags | jq --raw-output '.[0].name') - TEMPD="$(mktemp -d)" - cd "${TEMPD}" - wget -q https://codeload.github.com/actualbudget/actual-server/legacy.tar.gz/refs/tags/${RELEASE} -O - | tar -xz - mv /opt/actualbudget /opt/actualbudget_bak - mkdir -p /opt/actualbudget/ - mv actualbudget-actual-server-*/* /opt/actualbudget/ - mv /opt/actualbudget_bak/.env /opt/actualbudget - mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files - cd /opt/actualbudget - yarn install &>/dev/null - systemctl start actualbudget - msg_ok "Successfully Updated ${APP} to ${RELEASE}" - rm -rf "${TEMPD}" - rm -rf /opt/actualbudget_bak + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop actualbudget + msg_ok "${APP} Stopped" + + msg_info "Updating ${APP} to ${RELEASE}" + wget -q https://github.com/actualbudget/actual-server/archive/refs/tags/${RELEASE}.tar.gz -O actual-server.tar.gz + tar -xzvf actual-server.tar.gz >/dev/null 2>&1 + mv /opt/actualbudget /opt/actualbudget_bak + mkdir -p /opt/actualbudget/ + mv actual-server-* /opt/actualbudget + mv /opt/actualbudget_bak/.env /opt/actualbudget + mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files + cd /opt/actualbudget + yarn install &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" + + msg_info "Starting ${APP}" + systemctl start actualbudget + msg_ok "Started ${APP}" + + msg_info "Cleaning Up" + rm -rf /opt/actualbudget_bak + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi exit } diff --git a/install/actualbudget-install.sh b/install/actualbudget-install.sh index e5400117..30c29406 100644 --- a/install/actualbudget-install.sh +++ b/install/actualbudget-install.sh @@ -27,7 +27,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" @@ -36,10 +36,10 @@ $STD apt-get install -y nodejs $STD npm install --global yarn msg_ok "Installed Node.js" +msg_info "Installing Actual Budget" RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual-server/tags | jq --raw-output '.[0].name') -msg_info "Installing Actual Budget $RELEASE" -wget -q https://codeload.github.com/actualbudget/actual-server/legacy.tar.gz/refs/tags/${RELEASE} -O - | tar -xz -mv actualbudget-actual-server-* /opt/actualbudget +wget -q https://github.com/actualbudget/actual-server/archive/refs/tags/${RELEASE}.tar.gz -O actual-server.tar.gz -O - | tar -xz +mv *ctual-server-* /opt/actualbudget mkdir -p /opt/actualbudget/server-files mkdir -p /opt/actualbudget-data chown -R root:root /opt/actualbudget/server-files @@ -52,6 +52,7 @@ PORT=5006 EOF cd /opt/actualbudget $STD yarn install +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed Actual Budget" msg_info "Creating Service"