Install cv4pve-report and export a Proxmox VE inventory
cv4pve-report runs outside the cluster (on your workstation, a management VM or a scheduled job) and talks only to the Proxmox VE REST API on port 8006. Nothing is installed on the nodes.
First report
Section titled “First report”Install cv4pve-report
arch=$(uname -m | sed 's/x86_64/x64/;s/aarch64/arm64/;s/armv7l/arm/')wget https://github.com/Corsinvest/cv4pve-report/releases/latest/download/cv4pve-report-linux-$arch.zipunzip cv4pve-report-linux-$arch.zipchmod +x cv4pve-reportcurl -s https://api.github.com/repos/Corsinvest/cv4pve-report/releases/latest | grep -o "https://[^\"]*-$(dpkg --print-architecture)\.deb" | xargs curl -LOsudo dpkg -i cv4pve-report-*-$(dpkg --print-architecture).debcurl -s https://api.github.com/repos/Corsinvest/cv4pve-report/releases/latest | grep -o "https://[^\"]*-$(rpm --eval %_target_cpu)\.rpm" | xargs curl -LOsudo rpm -i cv4pve-report-*-$(rpm --eval %_target_cpu).rpmyay -S cv4pve-reportbrew install corsinvest/tap/cv4pve-reportcurl -s https://api.github.com/repos/Corsinvest/cv4pve-report/releases/latest | grep -o "https://[^\"]*-$(uname -m)\.pkg" | xargs curl -LOsudo installer -target / -pkg cv4pve-report-*-$(uname -m).pkgarch=$(uname -m | sed 's/x86_64/x64/')curl -LO https://github.com/Corsinvest/cv4pve-report/releases/latest/download/cv4pve-report-osx-$arch.zipunzip cv4pve-report-osx-$arch.zipchmod +x cv4pve-reportwinget install Corsinvest.cv4pve.report$arch = @{ AMD64 = 'x64'; x86 = 'x86'; ARM64 = 'arm64' }[$env:PROCESSOR_ARCHITECTURE]Invoke-WebRequest https://github.com/Corsinvest/cv4pve-report/releases/latest/download/cv4pve-report.exe-win-$arch.zip -OutFile cv4pve-report.zipExpand-Archive cv4pve-report.zip -DestinationPath . -ForceAll files are on the latest release page.
Create an API token
Create a dedicated user and an API token in Proxmox VE, with the privileges the tool needs: see Permissions.
Run
cv4pve-report exportPoint the tool at any node:
cv4pve-report --host=pve01 --api-token='report@pve!report=<uuid>' exportSeveral nodes, username and password, certificates and options in a file for scheduled runs: see Connection.
Open the report
The report is a
.zipin the current folder, with the sections of the cluster, one sheet, page or file each: Output explains the formats and where to start reading, and Sections every table and column.
cv4pve-report has two commands:
| Command | What it does |
|---|---|
export |
Reads the cluster and writes the report. |
create-settings |
Writes settings.json in the current folder with the default settings (or those of --fast / --full), to edit and pass with --settings-file, see Settings. Needs no connection to the cluster. |
Options of export:
| Option | What it does |
|---|---|
--format |
Xlsx (default), Html or Json, see Output. |
--output, -o |
Path of the .zip to write. Default: Report_YYYYMMDD_HHmmss.zip in the current folder. If the path does not end in .zip, .zip is appended. An existing file is overwritten. |
--fast |
Fast profile, overview tables only: no detail sheets, snapshots, disks, partitions, guest agent data, RRD, storage content, backups or firewall. For a quick look at a large cluster. |
--full |
Full profile: adds SMART data, syslog, cluster log, guest RRD and the Capacity Planning section, reads a week of RRD history instead of a day, and limits the firewall log to the last 3 days. |
Without --fast or --full the standard profile is used. The profiles
page lists exactly what each one turns on.
cv4pve-report --host=pve01 --api-token='report@pve!report=<uuid>' export # standard profile, Excelcv4pve-report --host=pve01 --api-token='report@pve!report=<uuid>' export --fast # quick inventory of a large clustercv4pve-report --host=pve01 --api-token='report@pve!report=<uuid>' export --full # everything, for auditscv4pve-report --host=pve01 --api-token='report@pve!report=<uuid>' export --format Html -o cluster-2026-09
# Your own selection of sectionscv4pve-report create-settings --full # then edit settings.jsoncv4pve-report --host=pve01 --api-token='report@pve!report=<uuid>' --settings-file=settings.json export--format, --output, --fast and --full go after export. --settings-file goes before
the command, with the connection options. A settings file always wins over --fast and --full.
While it runs, the tool shows the section it is reading on one line. When the output is redirected (a
scheduled job, a log file) it prints one line per step instead. At the end it prints
Report generated: <path>.