make Pulse installation non-interactive (#4848)

* fix: streamline Pulse installation for web-based configuration

- Remove all interactive prompts during installation
- Remove .env setup (handled by web UI)
- Remove configuration messages (handled by web UI)
- Change install directory from /opt/pulse-proxmox to /opt/pulse
- Update JSON note to reflect web-based setup wizard

Pulse now features a complete web-based configuration system with
automatic setup detection, making manual .env configuration obsolete.

The new workflow:
1. Script installs Pulse without any user interaction
2. Service starts automatically
3. User navigates to the provided URL
4. Pulse shows setup wizard for configuration
5. No SSH or manual file editing required

This provides the ideal community script experience - completely
hands-off installation with configuration through the web interface.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update pulse.sh to align with non-interactive installation

- Change paths from /opt/pulse-proxmox to /opt/pulse
- Remove .env file backup/restore logic since Pulse now uses web-based configuration
- Simplify permissions setting to match new installation approach

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* little fixes

* Update pulse.sh

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
This commit is contained in:
rcourtman 2025-06-02 09:45:00 +01:00 committed by GitHub
parent 8d50a5d8a9
commit f2bf6c9a6f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 31 additions and 45 deletions

View File

@ -1,5 +1,5 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: rcourtman
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
@ -23,40 +23,37 @@ function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/pulse-proxmox ]]; then
if [[ ! -d /opt/pulse ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
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
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
msg_info "Stopping ${APP}"
systemctl stop pulse-monitor
systemctl stop pulse
msg_ok "Stopped ${APP}"
msg_info "Updating Pulse"
if [[ -f /opt/pulse-proxmox/.env ]]; then
cp /opt/pulse-proxmox/.env /tmp/.env.backup.pulse
fi
temp_file=$(mktemp)
mkdir -p /opt/pulse-proxmox
rm -rf /opt/pulse-proxmox/*
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-proxmox
if [[ -f /tmp/.env.backup.pulse ]]; then
mv /tmp/.env.backup.pulse /opt/pulse-proxmox/.env
fi
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-proxmox..."
chown -R pulse:pulse "/opt/pulse-proxmox"
find "/opt/pulse-proxmox" -type d -exec chmod 755 {} \;
find "/opt/pulse-proxmox" -type f -exec chmod 644 {} \;
chmod 600 /opt/pulse-proxmox/.env
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 "Starting ${APP}"
systemctl start pulse-monitor
systemctl start pulse
msg_ok "Started ${APP}"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}."

View File

@ -12,7 +12,7 @@
"documentation": null,
"website": "https://github.com/rcourtman/Pulse",
"logo": "https://raw.githubusercontent.com/rcourtman/Pulse/main/src/public/logos/pulse-logo-256x256.png",
"config_path": "/opt/pulse-proxmox/.env",
"config_path": "/opt/pulse/.env",
"description": "A lightweight monitoring application for Proxmox VE that displays real-time status for VMs and containers via a simple web interface.",
"install_methods": [
{
@ -35,6 +35,10 @@
{
"text": "Create Proxmox-API-Token first: `https://github.com/rcourtman/Pulse?tab=readme-ov-file#creating-a-proxmox-api-token`",
"type": "Info"
},
{
"text": "After installation, access the web interface to configure your Proxmox connection details through the built-in setup wizard",
"type": "Info"
}
]
}

View File

@ -17,7 +17,7 @@ update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
diffutils
msg_ok "Installed Core Dependencies"
msg_ok "Installed Dependencies"
msg_info "Creating dedicated user pulse..."
if useradd -r -m -d /opt/pulse-home -s /bin/bash pulse; then
@ -32,36 +32,21 @@ NODE_VERSION="20" install_node_and_modules
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-proxmox
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-proxmox
tar zxf "$temp_file" --strip-components=1 -C /opt/pulse
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Pulse"
read -rp "${TAB3}Proxmox Host (z.B. https://proxmox.example.com:8006): " PROXMOX_HOST
read -rp "${TAB3}Proxmox Token ID (z.B. user@pam!mytoken): " PROXMOX_TOKEN_ID
read -rp "${TAB3}Proxmox Token Secret: " PROXMOX_TOKEN_SECRET
read -rp "${TAB3}Port (default: 7655): " PORT
PORT="${PORT:-7655}"
msg_info "Creating .env file"
cat <<EOF >/opt/pulse-proxmox/.env
PROXMOX_HOST=${PROXMOX_HOST}
PROXMOX_TOKEN_ID=${PROXMOX_TOKEN_ID}
PROXMOX_TOKEN_SECRET=${PROXMOX_TOKEN_SECRET}
PORT=${PORT}
EOF
msg_ok "Created .env file"
msg_info "Setting permissions for /opt/pulse-proxmox..."
chown -R pulse:pulse "/opt/pulse-proxmox"
find "/opt/pulse-proxmox" -type d -exec chmod 755 {} \;
find "/opt/pulse-proxmox" -type f -exec chmod 644 {} \;
chmod 600 /opt/pulse-proxmox/.env
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 <<EOF >/etc/systemd/system/pulse-monitor.service
cat <<EOF >/etc/systemd/system/pulse.service
[Unit]
Description=Pulse Monitoring Application
After=network.target
@ -70,8 +55,8 @@ After=network.target
Type=simple
User=pulse
Group=pulse
WorkingDirectory=/opt/pulse-proxmox
EnvironmentFile=/opt/pulse-proxmox/.env
WorkingDirectory=/opt/pulse
EnvironmentFile=/opt/pulse/.env
ExecStart=/usr/bin/npm run start
Restart=on-failure
RestartSec=5
@ -81,7 +66,7 @@ StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now pulse-monitor
systemctl enable -q --now pulse
msg_ok "Created Service"
motd_ssh