Find a file
Pulse Monitor 55e0190777 fix: manual node setup 'Node ID Required' error
Fixed issue where discovered nodes and manual node setup would incorrectly
call updateNode instead of addNode. The problem was that discovered nodes
were set with an empty string ID, which made the code think it was editing
an existing node.

Now properly checks for both editingNode existence AND a valid ID before
deciding whether to update or add.

Fixes #289
2025-08-10 20:02:28 +00:00
.devdata/alerts fix: address additional critical bugs and security vulnerabilities 2025-08-09 10:54:10 +01:00
cmd/pulse feat: add encrypted config export/import for automation 2025-08-05 21:45:25 +00:00
docs docs: add DISCOVERY_SUBNET configuration documentation 2025-08-10 19:54:15 +00:00
frontend-modern fix: manual node setup 'Node ID Required' error 2025-08-10 20:02:28 +00:00
internal feat: add DISCOVERY_SUBNET environment variable support for Docker network discovery configuration 2025-08-10 19:44:31 +00:00
pkg feat: major improvements to cluster detection, auto-registration, and UI 2025-08-08 21:25:28 +00:00
screenshots Add Updates UI to Settings page 2025-08-07 18:17:13 +00:00
scripts refactor: implement directory-based auto-update approach 2025-08-10 09:48:53 +00:00
testing-tools feat: major improvements to cluster detection, auto-registration, and UI 2025-08-08 21:25:28 +00:00
.dockerignore Add Docker deployment files for production readiness 2025-08-03 16:18:18 +00:00
.env.example docs: update all documentation for simplified configuration 2025-08-09 09:39:23 +00:00
.gitignore chore: clean up repository 2025-08-06 21:55:36 +00:00
build-release.sh fix: tarball structure to extract files to bin/ directory 2025-08-10 14:51:42 +00:00
docker-compose.yml Remove PBS summary card and fix backup chart timezone 2025-08-08 15:30:28 +00:00
docker-entrypoint.sh fix: Docker permission issues and alert history file access 2025-08-10 06:51:45 +00:00
Dockerfile Remove PBS summary card and fix backup chart timezone 2025-08-08 15:30:28 +00:00
go.mod fix: release channel persistence and expanded .env support 2025-08-08 23:19:26 +00:00
go.sum fix: update dependencies to address security vulnerabilities 2025-08-08 22:38:59 +00:00
install.sh fix: critical bugs in v4.1.5 2025-08-10 18:49:51 +00:00
LICENSE fix: consolidate to encrypted-only configuration system 2025-08-03 11:19:32 +00:00
README.md docs: add DISCOVERY_SUBNET configuration documentation 2025-08-10 19:54:15 +00:00
VERSION chore: bump version to v4.1.6 2025-08-10 18:58:08 +00:00

Pulse for Proxmox

Real-time monitoring for Proxmox VE and PBS with alerts and webhooks.

⚠️ Upgrading from v3? See Migration Guide - automatic upgrades will break.

Dashboard

Features

  • Auto-Discovery: Automatically finds and configures Proxmox nodes
  • Cluster Support: Detects and monitors entire Proxmox clusters
  • Live monitoring of VMs, containers, nodes, storage
  • Alerts with email and webhooks (Discord, Slack, Telegram, Teams, ntfy.sh, Gotify)
  • Unified view of PBS backups, PVE backups, and snapshots
  • PBS push mode for firewalled servers
  • Secure Config Export/Import: Encrypted backup and restore
  • Dark/light themes, responsive design
  • Built with Go for minimal resource usage

Screenshots →

Quick Start

Install

# Option A: Proxmox Helper Script (creates LXC container)
bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/pulse.sh)"

# Option B: Docker
docker run -d -p 7655:7655 -v pulse_data:/data rcourtman/pulse:latest

# Option C: Manual (existing systems)
curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | sudo bash

Configure

Option 1: Auto-Registration (NEW)

  1. Open http://<your-server>:7655
  2. Settings → Nodes → Shows discovered nodes automatically
  3. Click "Setup Script" to copy one-liner
  4. Run script on Proxmox node - auto-configures everything

Option 2: Manual

  1. Settings → Nodes → Add Node
  2. Enter credentials manually
  3. Save

Docker

Basic

docker run -d \
  --name pulse \
  -p 7655:7655 \
  -v pulse_data:/data \
  --restart unless-stopped \
  rcourtman/pulse:latest

With Network Discovery

# Specify your LAN subnet for auto-discovery
docker run -d \
  --name pulse \
  -p 7655:7655 \
  -v pulse_data:/data \
  -e DISCOVERY_SUBNET=192.168.1.0/24 \
  --restart unless-stopped \
  rcourtman/pulse:latest

Docker Compose

services:
  pulse:
    image: rcourtman/pulse:latest
    container_name: pulse
    ports:
      - "7655:7655"
    volumes:
      - pulse_data:/data
    environment:
      # Optional: specify your LAN subnet for auto-discovery
      # - DISCOVERY_SUBNET=192.168.1.0/24
    restart: unless-stopped

volumes:
  pulse_data:

PBS Agent (Push Mode)

For isolated PBS servers, see PBS Agent documentation

Configuration

Quick start - most settings are in the web UI:

  • Settings → Nodes: Add/remove Proxmox instances
  • Settings → System: Polling intervals, CORS settings
  • Alerts: Thresholds and notifications

For deployment overrides (ports, etc), use environment variables:

# Systemd: sudo systemctl edit pulse-backend
Environment="FRONTEND_PORT=8080"

# Docker: -e FRONTEND_PORT=8080

📖 Full Configuration Guide →

Backup/Restore

# Export (v4.0.3+)
pulse config export -o backup.enc

# Import
pulse config import -i backup.enc

Or use Settings → Security tab in UI.

Updates

Docker

docker pull rcourtman/pulse:latest
docker stop pulse
docker rm pulse
# Run docker run command again

Manual Install

Settings → System → Check for Updates

After updates complete, refresh your browser (Ctrl+F5 or Cmd+Shift+R) to load the new version.

API

# Status
curl http://localhost:7655/api/status

# Metrics
curl http://localhost:7655/api/metrics

# With authentication (if configured)
curl -H "X-API-Token: your-token" http://localhost:7655/api/status

Troubleshooting

Connection Issues

  • Check Proxmox API is accessible (port 8006/8007)
  • Verify credentials have PVEAuditor role minimum
  • For PBS: ensure API token has Datastore.Audit permission

High CPU/Memory

  • Reduce polling interval in Settings
  • Check number of monitored nodes
  • Disable unused features (backups, snapshots)

Logs

# Docker
docker logs pulse

# Manual
journalctl -u pulse -f

Security

  • Credentials stored encrypted (AES-256-GCM)
  • Optional API token authentication
  • Export/import requires passphrase
  • Security Details →

Development

# Frontend
cd frontend-modern
npm install
npm run dev

# Backend
go run cmd/pulse/*.go

License

MIT - See LICENSE