From 5c1954c85d15230b8d03634423e1083208b448c1 Mon Sep 17 00:00:00 2001
From: Spyros Roum <spyros.roum@posteo.net>
Date: Thu, 9 Jan 2025 17:25:45 +0200
Subject: [PATCH] Install/update ActualBudget based on releases, not latest
 master (#1254)

* Install/update ActualBudget based on releases, not latest main

* Use tarballs for actualbudget install/update
---
 ct/actualbudget.sh              | 11 ++++++++---
 install/actualbudget-install.sh |  6 ++++--
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh
index 8bad74dcd..63c94e3e4 100644
--- a/ct/actualbudget.sh
+++ b/ct/actualbudget.sh
@@ -34,11 +34,16 @@ function update_script() {
     fi
     msg_info "Updating ${APP}"
     systemctl stop actualbudget.service
+    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 actualbudget-actual-server-*/* /opt/actualbudget/
     cd /opt/actualbudget
-    git pull &>/dev/null
     yarn install &>/dev/null
     systemctl start actualbudget.service
-    msg_ok "Successfully Updated ${APP}"
+    msg_ok "Successfully Updated ${APP} to ${RELEASE}"
+    rm -rf "${TEMPD}"
     exit
 }
 
@@ -49,4 +54,4 @@ description
 msg_ok "Completed Successfully!\n"
 echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 echo -e "${INFO}${YW} Access it using the following URL:${CL}"
-echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5006${CL}"
\ No newline at end of file
+echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5006${CL}"
diff --git a/install/actualbudget-install.sh b/install/actualbudget-install.sh
index 64995d5a7..3a62fb5ee 100644
--- a/install/actualbudget-install.sh
+++ b/install/actualbudget-install.sh
@@ -35,8 +35,10 @@ $STD apt-get install -y nodejs
 $STD npm install --global yarn
 msg_ok "Installed Node.js"
 
-msg_info "Installing Actual Budget"
-$STD git clone https://github.com/actualbudget/actual-server.git /opt/actualbudget
+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
 mkdir -p /opt/actualbudget/server-files
 chown -R root:root /opt/actualbudget/server-files
 chmod 755 /opt/actualbudget/server-files