From e8e630c8417dd64e135af736b6927ca06e73ead3 Mon Sep 17 00:00:00 2001 From: HydroshieldMKII Date: Tue, 30 Sep 2025 17:41:22 -0400 Subject: [PATCH] Refactor update_script function to replace Docker commands with systemctl for service management and enhance database backup/restore process --- ct/guardian.sh | 44 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/ct/guardian.sh b/ct/guardian.sh index d1da2113..4b67897b 100755 --- a/ct/guardian.sh +++ b/ct/guardian.sh @@ -34,30 +34,56 @@ function update_script() { if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then msg_info "Stopping $APP" - cd /opt/Guardian - docker compose down + systemctl stop guardian-backend guardian-frontend msg_ok "Stopped $APP" - msg_info "Updating $APP to v${RELEASE}" - curl -fsSL -o docker-compose.yml "https://raw.githubusercontent.com/HydroshieldMKII/Guardian/main/docker-compose.example.yml" - docker compose pull + msg_info "Saving Database" + if [[ -f "/opt/Guardian/backend/plex-guard.db" ]]; then + cp "/opt/Guardian/backend/plex-guard.db" "/tmp/plex-guard.db.backup" + msg_ok "Database backed up" + fi + + + msg_info "Updating $APP to v${RELEASE}" + cd /tmp + + curl -fsSL -o "${RELEASE}.zip" "https://github.com/HydroshieldMKII/Guardian/archive/refs/tags/${RELEASE}.zip" + unzip -q "${RELEASE}.zip" + rm -rf /opt/Guardian + + FOLDER_NAME=$(echo "${RELEASE}" | sed 's/^v//') + mv "Guardian-${FOLDER_NAME}/" "/opt/Guardian" + + if [[ -f "/tmp/plex-guard.db.backup" ]]; then + msg_info "Restoring Database" + cp "/tmp/plex-guard.db.backup" "/opt/Guardian/backend/plex-guard.db" + rm "/tmp/plex-guard.db.backup" + msg_ok "Database restored" + fi + + cd /opt/Guardian/backend + npm ci + npm run build + + cd /opt/Guardian/frontend + npm ci + DEPLOYMENT_MODE=standalone npm run build echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated $APP to v${RELEASE}" msg_info "Starting $APP" - cd /opt/Guardian - docker compose up -d + systemctl start guardian-backend guardian-frontend msg_ok "Started $APP" msg_info "Cleaning Up" - docker system prune -f + rm -rf /tmp/"${RELEASE}.zip" /tmp/"Guardian-${FOLDER_NAME}" /tmp/plex-guard.db.backup msg_ok "Cleanup Completed" msg_ok "Update Successful" else - msg_ok "No update required. ${APP} is already at ${RELEASE}" + msg_ok "No update required. ${APP} is already at v${RELEASE}" fi exit }