From 9798c7d6c95637da431c0589bd1f8dc40b63ca1c Mon Sep 17 00:00:00 2001 From: Vincent <114195376+HydroshieldMKII@users.noreply.github.com> Date: Wed, 1 Oct 2025 08:52:27 -0400 Subject: [PATCH] Updated install and update script for PR request. Update the json for the interface --- ct/guardian.sh | 81 ++++++++++++------------------ frontend/public/json/guardian.json | 6 +-- install/guardian-install.sh | 53 ++++++------------- 3 files changed, 50 insertions(+), 90 deletions(-) diff --git a/ct/guardian.sh b/ct/guardian.sh index 07203be2..1017b2c1 100755 --- a/ct/guardian.sh +++ b/ct/guardian.sh @@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}" var_ram="${var_ram:-2048}" var_disk="${var_disk:-6}" var_os="${var_os:-debian}" -var_version="${var_version:-12}" +var_version="${var_version:-13}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -20,72 +20,55 @@ color catch_errors function update_script() { - header_info - check_container_storage - check_container_resources +header_info +check_container_storage +check_container_resources - if [[ ! -d "/opt/${APP}" ]]; then +if [[ ! -d "/opt/guardian" ]] ; then msg_error "No ${APP} Installation Found!" exit - fi +fi - - RELEASE=$(curl -fsSL https://api.github.com/repos/HydroshieldMKII/Guardian/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') - if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - - msg_info "Stopping $APP" +if check_for_gh_release "guardian" "HydroshieldMKII/Guardian" ; then + msg_info "Stopping Services" systemctl stop guardian-backend guardian-frontend - msg_ok "Stopped $APP" + msg_ok "Stopped Services" - 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" + if [[ -f "/opt/Guardian/backend/plex-guard.db" ]] ; then + msg_info "Saving Database" + cp "/opt/Guardian/backend/plex-guard.db" "/tmp/plex-guard.db.backup" + msg_ok "Database backed up" fi + cp /opt/guardian/.env /opt + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "guardian" "HydroshieldMKII/Guardian" "tarball" "latest" "/opt/guardian" + mv /opt/.env /opt/guardian - msg_info "Updating $APP to ${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" + 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 + msg_info "Updating Guardian" cd /opt/Guardian/backend - npm ci - npm run build + $STD npm ci + $STD npm run build cd /opt/Guardian/frontend - npm ci - DEPLOYMENT_MODE=standalone npm run build + $STD npm ci + $STD DEPLOYMENT_MODE = standalone npm run build - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated $APP to v${RELEASE}" + msg_ok "Updated Guardian" - msg_info "Starting $APP" + msg_info "Starting Services" systemctl start guardian-backend guardian-frontend - msg_ok "Started $APP" - - msg_info "Cleaning Up" - 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}" - fi - exit + msg_ok "Started Services" + msg_ok "Updated Successfully" +fi +exit } start diff --git a/frontend/public/json/guardian.json b/frontend/public/json/guardian.json index 57381efd..97568819 100644 --- a/frontend/public/json/guardian.json +++ b/frontend/public/json/guardian.json @@ -8,10 +8,10 @@ "privileged": false, "interface_port": 3000, "documentation": null, - "config_path": "", + "config_path": "/opt/guardian/.env", "website": "https://github.com/HydroshieldMKII/Guardian", "logo": null, - "description": "A tool to manage devices access to your Plex server with a nice Dashboard ", + "description": "Guardian is a lightweight companion app for Plex that lets you monitor, approve or block devices in real time. It helps you enforce per-user or global policies, stop unwanted sessions automatically and grant temporary access - all through a simple web interface.", "install_methods": [ { "type": "default", @@ -21,7 +21,7 @@ "ram": 2048, "hdd": 6, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/install/guardian-install.sh b/install/guardian-install.sh index de05a8e8..0a5cb5d6 100644 --- a/install/guardian-install.sh +++ b/install/guardian-install.sh @@ -14,86 +14,63 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y \ - git \ - sqlite3 \ - unzip \ - curl \ - ca-certificates \ - gnupg - -curl -fsSL https://deb.nodesource.com/setup_24.x | bash - -$STD apt-get install -y nodejs - +$STD apt install -y \ + sqlite3 +NODE_VERSION="24" setup_nodejs msg_ok "Installed Dependencies" msg_info "Setup Guardian" -RELEASE=$(curl -fsSL https://api.github.com/repos/HydroshieldMKII/Guardian/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -curl -fsSL -o "${RELEASE}.zip" "https://github.com/HydroshieldMKII/Guardian/archive/refs/tags/${RELEASE}.zip" -unzip -q "${RELEASE}.zip" - -FOLDER_NAME=$(echo "${RELEASE}" | sed 's/^v//') -mv "Guardian-${FOLDER_NAME}/" "/opt/Guardian" - -echo "${RELEASE}" >/opt/Guardian_version.txt -msg_ok "Setup Guardian" +fetch_and_deploy_gh_release "guardian" "HydroshieldMKII/Guardian" "tarball" "latest" "/opt/guardian" msg_info "Building backend" cd /opt/Guardian/backend -npm ci -npm run build +$STD npm ci +$STD npm run build msg_ok "Built backend" msg_info "Building frontend" cd /opt/Guardian/frontend -npm ci -DEPLOYMENT_MODE=standalone npm run build +$STD npm ci +$STD DEPLOYMENT_MODE=standalone npm run build msg_ok "Built frontend" -msg_info "Creating Backend Service" +msg_info "Creating Services" cat </etc/systemd/system/guardian-backend.service [Unit] Description=Guardian Backend After=network.target - [Service] WorkingDirectory=/opt/Guardian/backend ExecStart=/usr/bin/node dist/main.js Restart=always RestartSec=3 - [Install] WantedBy=multi-user.target EOF -systemctl enable -q --now guardian-backend -msg_ok "Created Backend Service" -msg_info "Creating Frontend Service" cat </etc/systemd/system/guardian-frontend.service [Unit] Description=Guardian Frontend After=guardian-backend.service network.target Wants=guardian-backend.service - [Service] WorkingDirectory=/opt/Guardian/frontend Environment=DEPLOYMENT_MODE=standalone ExecStart=/usr/bin/npm run start Restart=always RestartSec=3 - [Install] WantedBy=multi-user.target EOF + +systemctl enable -q --now guardian-backend systemctl enable -q --now guardian-frontend -msg_ok "Created Frontend Service" +msg_ok "Created Services" motd_ssh -customize -msg_info "Cleaning up" -rm -f "${RELEASE}".zip -$STD apt-get -y autoremove -$STD apt-get -y autoclean +apt -y autoremove +apt -y autoclean +apt -y clean msg_ok "Cleaned"