9.1 KiB
Pulse for Proxmox VE
A lightweight monitoring application for Proxmox VE that displays real-time status for VMs and containers via a simple web interface.
📋 Table of Contents
- Configuration
- Installation
- Running the Application
- Running the Application (Node.js)
- Running with Docker Compose
- Running with LXC Installation Script
- Features
- System Requirements
- Contributing
- License
- Trademark Notice
- Support
🛠️ Configuration
Environment Variables
-
Copy Example File: This application requires environment variables for configuration. Copy the example environment file from
server/.env.exampletoserver/.env.cp server/.env.example server/.env -
Edit
.env: Openserver/.envin a text editor and update the values for your Proxmox environment, including the Host, Token ID, and Token Secret obtained below.The following variables are available:
PROXMOX_HOST: URL of your Proxmox server (e.g.,https://your-proxmox-ip:8006).PROXMOX_TOKEN_ID: Your API Token ID (e.g.,user@pam!tokenid).PROXMOX_TOKEN_SECRET: Your API Token Secret.PROXMOX_ALLOW_SELF_SIGNED_CERTS: (Optional) Set totrueif your Proxmox server uses self-signed SSL certificates. Defaults tofalse.PORT: (Optional) Port for the Pulse server to listen on. Defaults to7655.PROXMOX_USERNAME,PROXMOX_PASSWORD,PROXMOX_REALM: (Optional) Fallback credentials if API token is not provided.
Creating a Proxmox API Token
An API token is recommended for connecting Pulse to Proxmox.
-
Log in to the Proxmox web interface
-
Create a dedicated user (optional but recommended for security)
- Go to
Datacenter→Permissions→Users. - Click
Add. - Enter a
User name(e.g., "pulse-monitor"), set Realm toProxmox VE authentication server, set a password, and ensureEnabledis checked. ClickAdd.
- Go to
-
Create an API token
- Go to
Datacenter→Permissions→API Tokens. - Click
Add. - Select the
Useryou created (e.g., "pulse-monitor@pam") orroot@pam. - Enter a
Token ID(e.g., "pulse"). - Leave
Privilege Separationchecked (more secure). - Click
Add. - Important: Copy the displayed
Secretvalue immediately and store it securely. It will only be shown once.
- Go to
-
Assign permissions
- Go to
Datacenter→Permissions→Add→User Permission. - Path:
/ - User: Select the user the token belongs to (e.g., "pulse-monitor@pam").
- Role:
PVEAuditor(provides read-only access). - Ensure
Propagateis checked. - Click
Add.
- Go to
-
Update your
server/.envfile with theToken ID(which looks likeuser@realm!tokenid, e.g.,pulse-monitor@pam!pulse) and theSecretyou saved.
Required Permissions
The PVEAuditor role is recommended as it provides the necessary read-only permissions for Pulse to monitor your Proxmox environment:
Datastore.AuditPermissions.Read(implicitly included)Pool.AuditSys.AuditVM.Audit
💾 Installation
Navigate to the project root directory and install the necessary Node.js dependencies.
# Install root dependencies
npm install
You also need to install dependencies for the server component:
# Install server dependencies
cd server
npm install
cd ..
▶️ Running the Application (Node.js)
These instructions are for running the application directly using Node.js.
Development Mode
To run the application in development mode (useful for testing changes):
npm run dev
This command starts the server, typically using nodemon or similar for automatic restarts on file changes. Check the terminal output for the URL (e.g., http://localhost:7655).
Production Mode
To run the application normally:
npm run start
This command starts the server using node. Access the application via the configured host and port.
🐳 Running with Docker Compose
Using Docker Compose is the recommended way to run the application in a containerized environment.
Prerequisites:
- Docker (Install Docker)
- Docker Compose (Install Docker Compose)
Steps:
-
Configure Environment: Ensure you have created and configured your
server/.envfile as described in the Environment Variables section above. -
Run: Navigate to the project root directory in your terminal and run:
docker compose up -d- This command will download the pre-built
rcourtman/pulse:latestimage from Docker Hub (if not already present) and start the container. -d: Runs the container in detached mode (in the background).
- This command will download the pre-built
-
Access: The application should now be running. Access it via
http://<your-host-ip>:7655(or the host port you mapped indocker-compose.yml).
Stopping the Application:
To stop the container(s) defined in the docker-compose.yml file, run:
docker compose down
Note: If you modify the server/.env file after the container is already running, you may need to restart the container for the changes to take effect. You can do this by running docker compose down followed by docker compose up -d, or by using docker compose up -d --force-recreate.
🚀 Running with LXC Installation Script (Recommended for Proxmox)
For users running Proxmox VE, a convenient installation script is provided to set up Pulse inside an LXC container (Debian/Ubuntu based). This script automates dependency installation, configuration, and setting up a systemd service.
Prerequisites:
- A running Proxmox VE environment.
- A Debian or Ubuntu based LXC container created in Proxmox.
- Network connectivity from the LXC to your Proxmox server.
- You will need your Proxmox API Token details (See Creating a Proxmox API Token).
Steps:
-
Access LXC Console: Log in to the console of your newly created LXC container (e.g., via the Proxmox web UI or SSH).
-
Download and Run the Script: Execute the following command in the LXC console. This downloads the script and runs it with
sudo:bash -c "$(wget -qLO - https://raw.githubusercontent.com/rcourtman/Pulse/main/scripts/install-pulse.sh)" --- Alternatively, you can download it first and then run it:
wget https://raw.githubusercontent.com/rcourtman/Pulse/main/scripts/install-pulse.sh chmod +x install-pulse.sh sudo ./install-pulse.sh
- Alternatively, you can download it first and then run it:
-
Follow Prompts: The script will guide you through the installation process:
- It will update the container and install necessary packages (
git,curl,nodejs,npm). - It will ask for your Proxmox Host URL, API Token ID, and API Token Secret.
- It will ask about allowing self-signed certificates and optionally setting a custom port.
- It will configure Pulse and set it up as a
systemdservice (pulse-proxmox.service) to run automatically.
- It will update the container and install necessary packages (
-
Access Pulse: Once the script finishes, it will display the URL (using the LXC's IP address) where you can access the Pulse dashboard (e.g.,
http://<LXC-IP-ADDRESS>:7655).
Managing the Service:
- Check Status:
sudo systemctl status pulse-proxmox.service - Stop Service:
sudo systemctl stop pulse-proxmox.service - Start Service:
sudo systemctl start pulse-proxmox.service - View Logs:
sudo journalctl -u pulse-proxmox.service -f
✨ Features
- Lightweight monitoring for Proxmox VE nodes.
- Displays real-time status for VMs and Containers via WebSocket updates.
- Simple, responsive web interface.
- Efficient polling: Only queries the Proxmox API when a user is actively viewing the UI, reducing load on the Proxmox server(s).
- Docker support for easy deployment.
💻 System Requirements
- Node.js (for local development/running): Version 16.x or higher recommended.
- Docker & Docker Compose (for containerized deployment): Recent versions recommended.
- Network: Connectivity between the Pulse server and your Proxmox server(s).
👥 Contributing
Contributions are welcome! Please follow standard fork-and-pull-request workflow. Refer to the main repository's contributing guidelines if available.
- Fork the repository
- Create a feature branch: `
