# Proxmox Monitoring
system2mqtt can monitor a [Proxmox VE](https://www.proxmox.com/en/proxmox-virtual-environment/overview) node by querying its REST API. This is particularly useful when running system2mqtt inside a Docker container on a separate machine.
---
## How It Works
When `PVE_SYSTEM=True`, system2mqtt connects to the Proxmox API instead of reading local system metrics. It retrieves:
- **CPU usage** from the Proxmox node status endpoint
- **Memory usage** from the Proxmox node status endpoint
- **Storage usage** for each storage configured on the node
The collected data is published to MQTT using the same topic structure as bare-metal mode.
---
## Configuration
Add the following to your `s2m.conf`:
```ini
COMPUTER_NAME=MyPveNode
PVE_SYSTEM=True
PVE_HOST=192.168.1.50 # IP or hostname of the Proxmox server
PVE_NODE_NAME=pve # Node name as shown in the Proxmox UI (default: pve)
PVE_USER=root@pam # Proxmox user (default: root@pam)
PVE_PASSWORD=mysecretpw # Proxmox user password (required)
```
You also need standard MQTT and optional Home Assistant settings:
```ini
MQTT_HOST=192.168.1.100
HA_DISCOVERY=True # Optional: auto-register entities in Home Assistant
```
---
## Proxmox User Permissions
It is good practice to create a dedicated, read-only Proxmox user for monitoring rather than using `root@pam`.
### Creating a monitoring user in Proxmox
1. In the Proxmox UI, go to **Datacenter → Permissions → Users** and create a new user (e.g. `monitor@pve`).
2. Go to **Datacenter → Permissions → Roles** and verify or create a role with at least `Sys.Audit` and `Datastore.Audit` privileges.
3. Go to **Datacenter → Permissions** and assign the role to the user at the `/` path.
Then update your config:
```ini
PVE_USER=monitor@pve
PVE_PASSWORD=monitorpassword
```
---
## MQTT Topics (Proxmox Mode)
When running in Proxmox mode the same MQTT topic structure applies:
| Topic | Description |
|-------|-------------|
| `/cpu/usage` | Node CPU usage (%) |
| `/memory` | Node memory usage (%) |
| `/disks/storage/