pve-coretemp-chart adds the current Intel CPU package temperature and a native-style temperature history chart to the Proxmox VE node Summary page.
It is intentionally narrow: it reads Linux coretemp only, stores history in an independent fixed-size RRD, and never polls disks.
Warning
This is an unofficial community patch. It modifies two files shipped by pve-manager. Read the compatibility and rollback sections before installing. A Proxmox VE update can overwrite the patch.
- Current
Package id 0temperature on the node Summary page. - Native
proxmoxRRDCharttemperature graph. - Hour, day, week, month, and year ranges.
- AVERAGE and MAX consolidation functions.
- Independent fixed-size RRD with one sample per minute.
- Version/hash classification, backups, automatic failure recovery, verification, and rollback.
- Explicit unsupported-mode workflow without disabling hard safety checks.
The collector reads only:
/sys/class/hwmon/hwmon*/name -> coretemp
/sys/class/hwmon/hwmon*/temp*_label -> Package id 0
/sys/class/hwmon/hwmon*/temp*_input -> -50°C to 200°C
It does not install or invoke disk-health, NVMe-management, drive-temperature, or general sensor-enumeration tools. It does not scan block devices. The systemd service uses PrivateDevices=true, NoNewPrivileges=true, ProtectSystem=strict, and an explicit write allowlist.
The project does not modify the native PVE node RRD, pvestatd, pmxcfs, or proxmoxlib.js.
| Status | pve-manager | Nodes.pm SHA-256 | pvemanagerlib.js SHA-256 |
|---|---|---|---|
| Verified | pve-manager 8.4.19 | 8de083d1f3c4e134ebd85c1a238e9bf3dae66c7028a01a4e03e308f2f16d036e |
5a32a8e187ffed6eff0b1d909fb9868695a7423ddade1f6e2fb677dbbf78813c |
“Verified” means the complete collector, API, service, RRD, browser chart, refresh, and rollback workflow was tested on a real host. Community reports do not automatically extend this table.
pve-coretemp-rrd-update.timerruns every 60 seconds.- The oneshot collector reads
coretemp/Package id 0and updates/var/lib/rrdcached/db/pve-coretemp/<node>. - A
Sys.Auditprotected API endpoint exposes the RRD through/nodes/{node}/coretemp-rrddata. - An independent ExtJS model/store feeds a native PVE chart.
- The existing PVE time-range selector controls both native charts and the temperature chart.
The RRD contains one cpu_temp GAUGE data source with a 120-second heartbeat. AVERAGE and MAX archives retain 70 rows at PVE-compatible resolutions.
- A Proxmox VE host using an Intel CPU supported by the Linux
coretempdriver. pve-managerandrrdcachedinstalled and healthy.- Root shell access to the PVE host.
- The downloaded fixed-version release archive and its
SHA256SUMSfile.
No additional sensor package is required when the kernel hwmon interface already exposes coretemp.
Download both release assets from the GitHub Releases page:
pve-coretemp-chart-v1.0.0.tar.gz
SHA256SUMS
On the PVE host, verify before extracting:
sha256sum -c SHA256SUMS
tar -xzf pve-coretemp-chart-v1.0.0.tar.gz
cd pve-coretemp-chart-v1.0.0Do not pipe a network response directly into a shell. Download a fixed release, verify its hash, inspect it, and run the local script.
Review the pending changes first:
less patches/pve-manager-8.4.19/Nodes.patch
less patches/pve-manager-8.4.19/pvemanagerlib.patchInstall:
./scripts/install.shA matching host is recorded as:
installation_class=verified
The installer:
- checks root access, PVE services, version, and hashes;
- requires both patches to pass
patch --dry-run --fuzz=0; - backs up both PVE files and records hashes;
- patches copies and validates Perl, JavaScript markers, and systemd;
- installs the collector and timer;
- lets the timer perform the first sample exactly once;
- restarts
pvedaemonandpveproxyto load the protected API; - restores the original files automatically if installation fails.
Restarting those two management daemons does not restart running guests.
If the PVE version or either file hash is not in the verified matrix, the normal command stops with exit code 2. Inspect the reported version, hashes, patch, and upstream changes before deciding.
To attempt an unsupported installation explicitly:
./scripts/install.sh --force-unsupportedThe result is recorded as:
installation_class=unsupported/unverified
--force-unsupported bypasses only the compatibility policy. It cannot bypass:
patch --dry-run --fuzz=0;- Perl/JavaScript validation;
- systemd validation;
- backup creation;
- atomic target replacement;
- service/result checks;
- automatic failure restoration.
If an exact patch cannot apply, installation is rejected even in force mode.
Wait for at least three one-minute sampling intervals, then run:
./scripts/verify.shManual checks:
systemctl status pve-coretemp-rrd-update.timer --no-pager
systemctl show pve-coretemp-rrd-update.service -p Result --value
pvesh get /nodes/$(hostname)/coretemp-rrddata --timeframe hour --cf AVERAGE
pvesh get /nodes/$(hostname)/coretemp-rrddata --timeframe hour --cf MAXExpected service state:
- timer:
active; - oneshot service after completion:
inactive (dead); - oneshot
Result:success.
Open the node Summary page and perform a hard refresh if an older same-version JavaScript file is cached.
From the extracted project directory:
./scripts/rollback.shYou can also run the copy stored in the current backup directory:
/root/pve-coretemp-chart-current-backup/rollback.shTo select a specific backup:
./scripts/rollback.sh --backup /root/pve-coretemp-chart-backup-YYYYMMDD-HHMMSSRollback restores the exact files saved by that installation, disables the timer, removes only project-owned service files, restarts the PVE management daemons, and moves the custom RRD into archived-rrd/. Historical data is preserved rather than deleted.
Preferred sequence:
- run rollback before upgrading
pve-manager; - perform the PVE upgrade;
- wait for a verified compatibility entry for the new version, or independently review upstream changes;
- use normal or explicit unsupported installation as appropriate;
- rerun verification and browser checks.
Do not replay a patch merely because the package version looks similar. PVE package updates can change either target file without changing the surrounding feature behavior visibly.
Confirm that the CPU and kernel expose the Intel core temperature driver. This project does not install a fallback sensor stack.
The host is outside the verified version/hash matrix. This is a policy stop, not a partial installation. Review the diff before considering --force-unsupported.
Do not force or add fuzz. The installed PVE file differs structurally from the supported patch. Roll back other local modifications or prepare and test a version-specific patch.
Inspect the browser request for coretemp-rrddata. A 501 response after changing the protected API means pvedaemon has not loaded the new method. Restart pvedaemon and pveproxy, then refresh the page.
Check timer state, collector Result, the custom RRD path, and allow three sampling intervals. Missing sensor samples are stored as unknown rather than fabricated values.
Perform a hard browser refresh. PVE may cache the JavaScript file because the package version in its asset URL did not change.
/usr/local/sbin/pve-coretemp-rrd-update
/etc/systemd/system/pve-coretemp-rrd-update.service
/etc/systemd/system/pve-coretemp-rrd-update.timer
/var/lib/rrdcached/db/pve-coretemp/<node>
/root/pve-coretemp-chart-backup-<timestamp>/
The installer also modifies:
/usr/share/perl5/PVE/API2/Nodes.pm
/usr/share/pve-manager/js/pvemanagerlib.js
./tests/test_public_safety.sh .
./tests/test_patches.sh
./tests/test_install_contract.sh
./tests/test_docs_consistency.shCollector RRD tests require Perl RRDs. See CONTRIBUTING.md for compatibility evidence requirements.
See SECURITY.md for private security reports. Use GitHub Issues for reproducible non-sensitive bugs. Never attach full host configuration, credentials, raw task logs, or unredacted screenshots.
Original project code is licensed under the MIT License.
This project is not affiliated with, endorsed by, or supported by Proxmox Server Solutions GmbH. Proxmox and Proxmox VE names are used only to describe compatibility.
