Reports
The Reports feature requires an Enterprise license. If you are on the Community plan, this page will display an upgrade prompt.
The Reports page lets you generate, schedule, and manage infrastructure reports for your Proxmox environment. Reports are produced as PDF documents, with the data behind them also available as CSV, and can be customized by type, date range, language, and sections.
In MSP / IaaS deployments, reports respect tenant boundaries. Tenant users can report on their own resources, while provider administrators can generate tenant and vDC reports across the platform.
Overview
The Reports page is organized into four tabs:
- Generate -- Create a new on-demand report
- History -- View previously generated reports and download them as PDF or CSV
- Schedules -- Configure automated recurring report generation
- Customization -- Adjust the layout of the generated PDFs (administrators only)
Operational Requirements
- The orchestrator service must be running.
- PostgreSQL must be reachable by the application.
- PDF generation requires the WeasyPrint sidecar in Docker deployments.
- Scheduled email delivery requires notification settings and SMTP to be configured.
- Tenant and vDC reports require multi-tenancy and vDC assignments to be configured first.
Generating a Report
To create a new report:
- Navigate to the Generate tab
- Select a Report Type from the dropdown (each type includes a description)
- Optionally set a custom Name for the report
- Choose a Date Range using the date pickers (defaults to the last 30 days)
- Select the Language for the report output (English, French, etc.)
- Choose which Sections to include:
- All Sections is selected by default
- Uncheck "All Sections" to pick individual sections from the list
- Each section shows its name and description to help you decide
- Click Generate to start report generation
Report generation happens asynchronously. After clicking Generate, you will be automatically switched to the History tab where you can track the report's progress.
Report Configuration
Date Range
Select the start and end dates to define the reporting period. The date range determines which data is included in metrics, charts, and tables within the report.
Language Selection
Reports can be generated in multiple languages. The language selection affects all text content within the generated PDF, including section headers, labels, and descriptions.
Section Selection
Each report type defines a set of available sections. You can include all sections or pick specific ones to create a focused report. This is useful when you only need certain aspects of the infrastructure overview.
vDC Reports
The vDC report type is available to provider administrators. It summarizes one or more virtual datacenters across the selected period, including:
- Tenant and vDC identity
- Quota allocation and consumption
- VM and container inventory
- Backup coverage and restore points
- Alert and event summary
- Green IT estimates when datacenter factors are configured
Tenant users remain scoped to their own visible resources. Provider-only vDC reports are intended for MSP operations, customer reviews, and capacity planning.
Report History
The History tab shows all previously generated reports with their:
- Report name and type
- Generation status (Pending, Generating, Completed, Failed)
- Date range covered
- File size
- Creation timestamp
Downloading Reports
Once a report has completed generation, the History tab offers two downloads: the PDF document, and a CSV export of the data behind it. See CSV Export for the shape of that file.
Deleting Reports
Reports can be deleted individually from the History tab. This removes the report metadata, the generated PDF and its CSV export.
Scheduled Reports
The Schedules tab allows you to configure automated, recurring report generation.
Creating a Schedule
Configure a schedule with:
| Field | Description |
|---|---|
| Name | A descriptive name for the schedule |
| Report Type | The type of report to generate |
| Frequency | Daily, Weekly, or Monthly |
| Day of Week | For weekly schedules, which day to run |
| Day of Month | For monthly schedules, which day to run |
| Time | What time of day to generate the report |
| Connections | Which Proxmox connections to include |
| Sections | Which report sections to include |
| Recipients | Email addresses to send the completed report to |
Managing Schedules
For each schedule you can:
- Enable/Disable the schedule
- Edit the schedule configuration
- Run Now to trigger an immediate generation outside the normal schedule
- Delete the schedule
The schedule list shows the last run time and next scheduled run for each entry.
Scheduled reports require the ProxCenter orchestrator service to be running. If the orchestrator is down, scheduled reports will not be generated until it is restored.
Customization
The Customization tab defines a report template for the current tenant: how every generated PDF is laid out around your brand identity. It is visible to users holding the admin.settings permission, the same permission as the White Label settings.
The template builds on the White Label configuration, which remains the source of the application name, logo and primary colour. The Customization tab decides how those elements are laid out and lets you refine the result.
Template Settings
| Section | Setting | Effect |
|---|---|---|
| Page | Paper size | A4 or Letter |
| Orientation | Portrait or landscape | |
| Font | Sans-serif (default), Serif or DejaVu Sans. These are the fonts installed in the PDF renderer. | |
| Base font size | 9, 10 or 11 pt; headings and tables scale with it | |
| Colours | Primary colour | Overrides the White Label colour for reports only (cover band, section markers, accents). Leave empty to keep the White Label colour. |
| Cover page | Show the logo | Hides or shows the White Label (or default) logo on the cover |
| Cover subtitle | Replaces the default "Enterprise Report" line under the application name | |
| Cover note | Free text printed under the report details, for example the customer name or a postal address. Line breaks are kept. | |
| Header and footer | Running header | Printed at the top of every page. {app} is replaced by the application name and {report} by the report title. Leave empty to remove the header. |
| Classification mention | Printed bottom right on every page (default "Confidential"). Leave empty to remove it. | |
| Show page numbers | Hides or shows the "Page x / y" counter | |
| Custom CSS | Custom CSS | A stylesheet appended after the built-in one, so your rules take precedence |
Changes apply to the next generated report, on-demand or scheduled, without restarting any service. Reports already in the History keep the layout they were generated with.
Preview
The right-hand pane renders a sample Alerts report with the current draft each time you pause editing, in the language you pick. Nothing is stored until you click Save, so you can experiment freely; Reset to defaults restores the original layout (it still needs to be saved).
The preview requires the WeasyPrint sidecar, like report generation itself.
Custom CSS
The built-in stylesheet uses plain class names you can target: .cover, .cover-header, .cover-title, .section-header, .stat-card, .info-box, .badge, table, thead th, tbody td, .metric-bar, .ai-analysis. The primary colour is exposed as the --primary CSS variable. Open the preview in a new tab and inspect the layout to find the class you need.
For safety, the stylesheet is validated before it reaches the renderer:
@importis refused.url()may only referencedata:URIs; external images, fonts or stylesheets are not fetched.- Backslash escapes are refused. Type the character directly (for example
▶rather than\25B6). - The stylesheet is limited to 32 KB.
A stylesheet that fails these checks is reported under the field and cannot be saved.
Multi-tenant Behaviour
Each tenant has its own template. A tenant that has not customized anything inherits the provider's template, then the built-in defaults, in that order, the same way White Label settings are inherited.
PDF Export
All reports are exported as PDF documents. The generated PDF includes:
- A cover page with report name, type, and date range
- Table of contents based on selected sections
- Charts, tables, and metrics for each section
- Timestamps and metadata
Reports are stored on the server and can be downloaded at any time from the History tab until they are manually deleted.
WeasyPrint Sidecar
Scheduled PDF rendering uses a dedicated WeasyPrint sidecar container. This keeps PDF generation isolated from the main application process and improves reliability for large scheduled report batches.
If report generation remains stuck in Generating, verify that the orchestrator can reach the sidecar and that container logs do not show missing font or rendering errors.
The sidecar only serves resources embedded in the document itself (data: URIs). Any reference to an http(s) or file URL, whether it comes from a custom stylesheet, an uploaded SVG logo or the HTML itself, is refused and logged as URL refused; the PDF is still produced without that resource.
CSV Export
Every completed report also carries a CSV export of the data behind it, offered next to the PDF in the History tab. Use it to load report data into a database, a spreadsheet or a BI tool.
The export is one CSV file per report, holding one row per object the report covers. An object_type column names what each row is (cluster, node, vm, storage, vulnerability, failed_check, replication_job, and so on), and the columns of a report type are the union of what its objects carry, left blank where they do not apply. Filtering on object_type gives back an individual table, for example object_type = 'vm' for the guest inventory of an infrastructure report.
Six columns identify the report in front of every row: report_id, report_type, report_name, date_from, date_to and generated_at. Several months of the same report can therefore be appended into a single table and grouped by report.
Two conventions make recurring imports safe:
- Column names never change with the language. They are stable snake_case English identifiers, whatever language the report was generated in.
- Values are raw. Sizes are byte counts, percentages carry no unit suffix, and timestamps are RFC 3339. The rounded, readable values in the PDF are a display concern only.
The display limits of the PDF do not apply to the CSV. Where a PDF table stops at the first 50 vulnerabilities or the last 30 alerts, the export carries every row.
Aggregates that the PDF computes for display are not exported, because they can be recomputed from the rows that are: summary blocks, per-node vulnerability counters and category totals. Two exceptions are kept, since neither can be derived from the detail: the capacity forecast, on a row whose object_type is estate, and the per-category results of a compliance report, which details only the checks that failed.
The CSV is built when the report is generated, from the same data as the PDF, so the two always agree. A report generated before this feature shipped has no CSV and only offers its PDF. A report whose content is made entirely of aggregates, such as a backup report covering a window with no backup job, stores no CSV at all.
The same export is available from the orchestrator API, by adding format=csv to the report download endpoint.