- Updated build-release.sh to create universal tarball with all architectures - Use pulse-wrapper.sh as main executable that auto-detects architecture - Wrapper automatically cleans up unused architecture binaries - Single tarball works for amd64, arm64, and armv7 - Compatible with Proxmox helper script expectations |
||
|---|---|---|
| cmd/pulse | ||
| docs | ||
| frontend-modern | ||
| internal | ||
| pkg | ||
| .dockerignore | ||
| .gitignore | ||
| build-release-simple.sh | ||
| build-release.sh | ||
| docker-compose.yml | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| install.sh | ||
| LICENSE | ||
| pulse-wrapper.sh | ||
| pulse.service | ||
| README.md | ||
| VERSION | ||
Pulse for Proxmox
Real-time monitoring for Proxmox VE and PBS with alerts, webhooks, and a clean web interface.
Key Features
- Real-time Monitoring - Live updates for VMs, containers, nodes, and storage via WebSockets
- Smart Alerts - Configurable thresholds with email and webhook notifications (Discord, Slack, Gotify, Telegram, ntfy.sh, Teams)
- Alert History - Persistent storage of alert events with detailed metrics and timeline
- Unified Backups - Single view for PBS backups, PVE backups, and snapshots
- PBS Push Mode - Monitor isolated/firewalled PBS servers without inbound connections
- Modern UI - Responsive design with dark/light themes, virtual scrolling, and expandable charts
- Performance - Built with Go for minimal resource usage, stops polling when no clients connected
- Secure by Default - Encrypted configuration storage with flexible credential management
Support Development
Pulse is a solo hobby project developed in my free time. If you find it useful, your support helps keep me motivated and covers hosting costs.
Quick Start (2 minutes)
Prerequisites
- Proxmox VE 7.0+ or PBS 2.0+
- Network access to Proxmox API (ports 8006/8007)
Install Pulse
Choose one method:
# Option A: Automated LXC Container (Easiest)
bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/pulse.sh)"
# Option B: Docker (For existing Docker hosts)
docker run -d -p 7655:7655 -v pulse_config:/etc/pulse -v pulse_data:/data rcourtman/pulse:latest
# Option C: Manual Install (For existing LXC/VMs)
curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | sudo bash
Configure Pulse
- Open Pulse in your browser:
http://<your-server>:7655 - Go to Settings → Nodes → Add Node
- Enter your Proxmox credentials
- Click Save - Pulse will start monitoring immediately
Configuration
Pulse uses a modern, secure configuration system similar to popular apps like Radarr and Sonarr:
Everything Through the UI
- All configuration is done via the web interface - no manual file editing needed
- Settings → Nodes: Add/remove Proxmox instances with a simple form
- Settings → General: Configure ports, intervals, themes, and more
- Alerts: Set up thresholds and notification channels
- Configuration is encrypted and stored securely with proper permissions
Zero Configuration Files
Unlike traditional monitoring tools:
- No YAML/JSON files to edit
- No environment variables to set
- No complex configurations
- Works immediately after installation
Just open the web UI, add your Proxmox nodes through the interface, and you're done!
For Docker Users
The only environment variables needed are for the initial ports if you want to change defaults:
docker run -d -p 8080:8080 \
-e PULSE_SERVER_FRONTEND_PORT=8080 \
-v pulse_config:/etc/pulse \
rcourtman/pulse:latest
Once running, all configuration is done through the web UI.
Security
Pulse automatically encrypts and secures all configuration:
- Credentials are encrypted using AES-256-GCM
- Configuration files have restricted permissions (0600)
- No plaintext passwords in config files
- Encryption keys derived from machine ID
See Security Guide for additional security options.
Webhooks
Pulse supports multiple webhook providers for alerts:
- Discord - Native Discord webhooks with rich embeds
- Slack - Slack incoming webhooks
- Gotify - Self-hosted push notifications
- Telegram - Telegram bot notifications
- ntfy.sh - Simple pub-sub notifications
- Teams - Microsoft Teams incoming webhooks
- Generic - Any webhook endpoint (JSON POST)
Configure webhooks in Alerts → Destinations → Webhooks.
PBS Agent (Push Mode)
For isolated PBS servers that can't be reached directly:
# On the PBS server:
cd /opt
wget https://github.com/rcourtman/Pulse/releases/latest/download/pulse-pbs-agent.tar.gz
tar xzf pulse-pbs-agent.tar.gz
cd pulse-pbs-agent
./install.sh
Configure the agent to push data to your Pulse instance. See PBS Agent Guide.
Docker Compose
version: '3.8'
services:
pulse:
image: rcourtman/pulse:latest
container_name: pulse
ports:
- "7655:7655"
volumes:
- pulse_config:/etc/pulse
- pulse_data:/data
restart: unless-stopped
volumes:
pulse_config:
pulse_data:
After starting, configure everything through the web UI at http://localhost:7655.
Building from Source
# Clone repository
git clone https://github.com/rcourtman/Pulse.git
cd Pulse
# Build backend
go build -o pulse ./cmd/pulse
# Build frontend
cd frontend-modern
npm install
npm run build
# Run
./pulse
API Documentation
Pulse provides a REST API for integration:
Core Endpoints
GET /api/state- Current state of all resourcesGET /api/health- Health check endpointGET /api/version- Version informationGET /api/diagnostics- System diagnostics
Monitoring
GET /api/charts- Historical metrics dataGET /api/storage/:id- Storage detail informationGET /api/storage-charts- Storage charts data
Configuration
GET /api/config/nodes- Get node configurationsPOST /api/config/nodes- Add new nodePUT /api/config/nodes/:id- Update nodeDELETE /api/config/nodes/:id- Delete nodePOST /api/config/nodes/test-connection- Test node connectionGET /api/config/system- System settingsPUT /api/config/system- Update system settings
Alerts & Notifications
GET /api/alerts- Alert configuration and historyPOST /api/alerts/:action- Alert actions (acknowledge, etc.)GET /api/notifications- Notification settingsPUT /api/notifications- Update notifications
Backups
GET /api/backups- All backup informationGET /api/backups/pve- PVE backups onlyGET /api/backups/pbs- PBS backups onlyGET /api/snapshots- VM/CT snapshots
Updates
GET /api/updates/check- Check for updatesPOST /api/updates/apply- Apply updateGET /api/updates/status- Update status
Settings
GET /api/settings- Get all settingsPOST /api/settings/update- Update settings
WebSocket endpoint: ws://your-server:7655/ws for real-time updates.
Troubleshooting
Common Issues
-
"Connection refused" error
- Check firewall rules for port 7655
- Verify Pulse is running:
systemctl status pulse-backend
-
"Invalid credentials" error
- Ensure user has at least
PVEAuditorrole - For PBS, user needs
DatastoreReaderpermissions - Try token authentication instead of password
- Ensure user has at least
-
No data showing
- Check browser console for errors
- Verify Proxmox API is accessible from Pulse server
- Check Pulse logs:
journalctl -u pulse -f
Getting Help
License
This project is licensed under the MIT License - see LICENSE file for details.
Acknowledgments
Made with ❤️ for the Proxmox community
