Find a file
Pulse Monitor b2a8a71ad8 fix: alert threshold UI bugs (issue #295)
- VMs now properly display as "VM" instead of "CT" in custom thresholds
- Slider thumb now reaches 0% and 100% edges correctly
- Custom rules and schedule changes now trigger unsaved changes warning
- Fixed missing setHasUnsavedChanges calls for override operations
2025-08-11 14:20:42 +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 Major improvements to security, alerts, and ease of use 2025-08-11 13:59:58 +00:00
frontend-modern fix: alert threshold UI bugs (issue #295) 2025-08-11 14:20:42 +00:00
internal Major improvements to security, alerts, and ease of use 2025-08-11 13:59:58 +00:00
pkg Major improvements to security, alerts, and ease of use 2025-08-11 13:59:58 +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 Major improvements to security, alerts, and ease of use 2025-08-11 13:59:58 +00:00
VERSION chore: bump version to v4.1.8 2025-08-11 07:57:50 +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: Finds Proxmox nodes on your network, one-liner setup via generated scripts
  • Cluster Support: Configure one node, monitor entire cluster
  • Security: Credentials encrypted at rest, masked in logs, never sent to frontend
  • 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
  • Config export/import with encryption and authentication
  • 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 Nodes

  1. Open http://<your-server>:7655
  2. Go to Settings → Nodes
  3. Discovered nodes appear automatically
  4. Click "Setup Script" next to any node
  5. Run the generated one-liner on that node
  6. Node is configured and monitoring starts

The script handles user creation, permissions, token generation, and registration automatically.

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

Security

  • Credentials encrypted at rest (AES-256-GCM)
  • Tokens masked in logs
  • Frontend never receives actual credentials
  • Export requires authentication

See Security Documentation for details.

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