From 9250f9fae94c7ff1cf1ed8adea8b39fc235cf4be Mon Sep 17 00:00:00 2001 From: rcourtman Date: Wed, 6 Aug 2025 08:58:20 +0100 Subject: [PATCH] fix: update Pulse scripts for v4 Go rewrite support (#6574) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: update Pulse scripts for v4 Go rewrite support - Update install script to download universal package - Update update_script to preserve data directory during updates - Remove Node.js dependencies and use built-in installer - Scripts now support v4 (Go) architecture * Update pulse-install.sh * refactor: use community-scripts helper functions - Use fetch_and_deploy_gh_release as requested - Add architecture detection for multi-arch support - Simplify update script to use helper functions - Remove unnecessary code and keep it minimal * fix: use correct PULSE_DATA_DIR environment variable Changed from PULSE_CONFIG_DIR to PULSE_DATA_DIR to match what Pulse v4.0.3 actually uses. The default is /etc/pulse anyway, but being explicit ensures consistency. * fix update * fix install * address review comments: add version file creation * remove * fix: update version file after successful update * Update pulse.sh --------- Co-authored-by: Pulse Monitor Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com> Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> Co-authored-by: rcourtman Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com> --- ct/pulse.sh | 36 ++++++++++++++---------------------- install/pulse-install.sh | 37 +++++++++++-------------------------- 2 files changed, 25 insertions(+), 48 deletions(-) diff --git a/ct/pulse.sh b/ct/pulse.sh index c5dced532..5c8a953ee 100644 --- a/ct/pulse.sh +++ b/ct/pulse.sh @@ -23,42 +23,34 @@ function update_script() { header_info check_container_storage check_container_resources - if [[ -d /opt/pulse-monitor ]]; then - msg_error "An old installation was detected. Please recreate the LXC from scratch (https://github.com/community-scripts/ProxmoxVE/pull/4848)" - exit 1 - fi if [[ ! -d /opt/pulse ]]; then msg_error "No ${APP} Installation Found!" exit fi - RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') - if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + + if [[ ! -f ~/.pulse ]]; then + msg_error "Old Installation Found! Please recreate the container due big changes in the software." + exit 1 + fi + + RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | jq -r '.tag_name' | sed 's/^v//') + if [[ "${RELEASE}" != "$(cat ~/.pulse 2>/dev/null)" ]] || [[ ! -f ~/.pulse ]]; then msg_info "Stopping ${APP}" systemctl stop pulse msg_ok "Stopped ${APP}" - msg_info "Updating Pulse" - temp_file=$(mktemp) - mkdir -p /opt/pulse - rm -rf /opt/pulse/* - curl -fsSL "https://github.com/rcourtman/Pulse/releases/download/v${RELEASE}/pulse-v${RELEASE}.tar.gz" -o "$temp_file" - tar zxf "$temp_file" --strip-components=1 -C /opt/pulse - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated Pulse to ${RELEASE}" - - msg_info "Setting permissions for /opt/pulse..." - chown -R pulse:pulse "/opt/pulse" - find "/opt/pulse" -type d -exec chmod 755 {} \; - find "/opt/pulse" -type f -exec chmod 644 {} \; - msg_ok "Set permissions." + fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "*-linux-amd64.tar.gz" + chown -R pulse:pulse /etc/pulse /opt/pulse msg_info "Starting ${APP}" systemctl start pulse msg_ok "Started ${APP}" + + msg_ok "Updated Successfully" else - msg_ok "No update required. ${APP} is already at ${RELEASE}." + msg_ok "No update required. ${APP} is already at v${RELEASE}" fi - exit + exit } start diff --git a/install/pulse-install.sh b/install/pulse-install.sh index e9e65273e..902126828 100644 --- a/install/pulse-install.sh +++ b/install/pulse-install.sh @@ -20,37 +20,22 @@ $STD apt-get install -y \ policykit-1 msg_ok "Installed Dependencies" -msg_info "Creating dedicated user pulse..." +msg_info "Creating User" if useradd -r -m -d /opt/pulse-home -s /bin/bash pulse; then - msg_ok "User created." + msg_ok "Created User" else - msg_error "User creation failed." + msg_error "User creation failed" exit 1 fi -NODE_VERSION="20" setup_nodejs - -msg_info "Setup Pulse" -RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -temp_file=$(mktemp) -mkdir -p /opt/pulse -curl -fsSL "https://github.com/rcourtman/Pulse/releases/download/v${RELEASE}/pulse-v${RELEASE}.tar.gz" -o "$temp_file" -tar zxf "$temp_file" --strip-components=1 -C /opt/pulse -touch /opt/pulse/.env -chown pulse:pulse /opt/pulse/.env -echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "*-linux-amd64.tar.gz" +chown -R pulse:pulse /etc/pulse /opt/pulse msg_ok "Installed Pulse" -msg_info "Setting permissions for /opt/pulse..." -chown -R pulse:pulse "/opt/pulse" -find "/opt/pulse" -type d -exec chmod 755 {} \; -find "/opt/pulse" -type f -exec chmod 644 {} \; -msg_ok "Set permissions." - msg_info "Creating Service" cat </etc/systemd/system/pulse.service [Unit] -Description=Pulse Monitoring Application +Description=Pulse Monitoring Server After=network.target [Service] @@ -58,12 +43,13 @@ Type=simple User=pulse Group=pulse WorkingDirectory=/opt/pulse -EnvironmentFile=/opt/pulse/.env -ExecStart=/usr/bin/npm run start -Restart=on-failure -RestartSec=5 +ExecStart=/opt/pulse/pulse +Restart=always +RestartSec=3 StandardOutput=journal StandardError=journal +Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" +Environment="PULSE_DATA_DIR=/etc/pulse" [Install] WantedBy=multi-user.target @@ -75,7 +61,6 @@ motd_ssh customize msg_info "Cleaning up" -rm -f "$temp_file" $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned"