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 #!/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 # Copyright (c) 2021-2025 community-scripts ORG
# Author: rcourtman # Author: rcourtman
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
@ -23,40 +23,37 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/pulse-proxmox ]]; then if [[ ! -d /opt/pulse ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi 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) }') 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 /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop pulse-monitor systemctl stop pulse
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
msg_info "Updating Pulse" msg_info "Updating Pulse"
if [[ -f /opt/pulse-proxmox/.env ]]; then
cp /opt/pulse-proxmox/.env /tmp/.env.backup.pulse
fi
temp_file=$(mktemp) temp_file=$(mktemp)
mkdir -p /opt/pulse-proxmox mkdir -p /opt/pulse
rm -rf /opt/pulse-proxmox/* rm -rf /opt/pulse/*
curl -fsSL "https://github.com/rcourtman/Pulse/releases/download/v${RELEASE}/pulse-v${RELEASE}.tar.gz" -o "$temp_file" 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
if [[ -f /tmp/.env.backup.pulse ]]; then
mv /tmp/.env.backup.pulse /opt/pulse-proxmox/.env
fi
echo "${RELEASE}" >/opt/${APP}_version.txt echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated Pulse to ${RELEASE}" msg_ok "Updated Pulse to ${RELEASE}"
msg_info "Setting permissions for /opt/pulse-proxmox..." msg_info "Setting permissions for /opt/pulse..."
chown -R pulse:pulse "/opt/pulse-proxmox" chown -R pulse:pulse "/opt/pulse"
find "/opt/pulse-proxmox" -type d -exec chmod 755 {} \; find "/opt/pulse" -type d -exec chmod 755 {} \;
find "/opt/pulse-proxmox" -type f -exec chmod 644 {} \; find "/opt/pulse" -type f -exec chmod 644 {} \;
chmod 600 /opt/pulse-proxmox/.env
msg_ok "Set permissions." msg_ok "Set permissions."
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start pulse-monitor systemctl start pulse
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}." msg_ok "No update required. ${APP} is already at ${RELEASE}."

View File

@ -12,7 +12,7 @@
"documentation": null, "documentation": null,
"website": "https://github.com/rcourtman/Pulse", "website": "https://github.com/rcourtman/Pulse",
"logo": "https://raw.githubusercontent.com/rcourtman/Pulse/main/src/public/logos/pulse-logo-256x256.png", "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.", "description": "A lightweight monitoring application for Proxmox VE that displays real-time status for VMs and containers via a simple web interface.",
"install_methods": [ "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`", "text": "Create Proxmox-API-Token first: `https://github.com/rcourtman/Pulse?tab=readme-ov-file#creating-a-proxmox-api-token`",
"type": "Info" "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" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y \
diffutils diffutils
msg_ok "Installed Core Dependencies" msg_ok "Installed Dependencies"
msg_info "Creating dedicated user pulse..." msg_info "Creating dedicated user pulse..."
if useradd -r -m -d /opt/pulse-home -s /bin/bash pulse; then 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" 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) }') 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) 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" 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 echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Pulse" 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" msg_info "Setting permissions for /opt/pulse..."
cat <<EOF >/opt/pulse-proxmox/.env chown -R pulse:pulse "/opt/pulse"
PROXMOX_HOST=${PROXMOX_HOST} find "/opt/pulse" -type d -exec chmod 755 {} \;
PROXMOX_TOKEN_ID=${PROXMOX_TOKEN_ID} find "/opt/pulse" -type f -exec chmod 644 {} \;
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_ok "Set permissions." msg_ok "Set permissions."
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/pulse-monitor.service cat <<EOF >/etc/systemd/system/pulse.service
[Unit] [Unit]
Description=Pulse Monitoring Application Description=Pulse Monitoring Application
After=network.target After=network.target
@ -70,8 +55,8 @@ After=network.target
Type=simple Type=simple
User=pulse User=pulse
Group=pulse Group=pulse
WorkingDirectory=/opt/pulse-proxmox WorkingDirectory=/opt/pulse
EnvironmentFile=/opt/pulse-proxmox/.env EnvironmentFile=/opt/pulse/.env
ExecStart=/usr/bin/npm run start ExecStart=/usr/bin/npm run start
Restart=on-failure Restart=on-failure
RestartSec=5 RestartSec=5
@ -81,7 +66,7 @@ StandardError=journal
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now pulse-monitor systemctl enable -q --now pulse
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh