Skip to content

Frequently asked questions

Short answers, with a link to the page that has the detail.

What it does

Does CertiStack change my backups or my production VMs?

No. The PBS snapshot is mapped read-only. The sandbox VM is a new VM whose writes go to a disposable copy-on-write overlay (a UEFI VM's small firmware disks are restored as temporary raw copies). Source VMs and the production network are never touched, every resource the run created is removed, and the signed report records the proof. See the architecture.

Does it install anything on my Proxmox host?

No permanent software. A run uploads a temporary worker to a private directory under /var/lib/certistack/workers/<uuid> on the node and removes it when the run ends. The node must already have the tools the worker calls (qemu-img, proxmox-backup-client, nft and, for Linux network recovery, libguestfs-tools). See the deployment model.

Which Proxmox, PBS and guest versions are supported?

Proxmox VE 9.x with PBS 4.x on amd64, with a Linux amd64 controller: the pair the release evidence covers. Any other pair is unsupported until it has its own evidence, even if the tools install. Linux guests have their network adapted on the disposable overlay; Windows guests keep their own network and are checked with wire or guest-agent probes. The full contract is in release readiness.

Can it validate encrypted backups?

Yes, when you give the controller the PBS encryption key (CERTISTACK_PBS_KEYFILE, plus PBS_ENCRYPTION_PASSWORD if the key has a passphrase). Without it, a run stops before restoring anything and names the missing setting. See the configuration reference.

Can I test an older backup instead of the newest one?

Yes. snapshot: latest resolves the newest backup when the run starts and records the exact snapshot in the report. To replay a historical restore point, pin it in the plan. See snapshot selection.

How long does a run take?

Minutes for a small VM. Before each VM boots, the run reads every byte of its mapped disks to verify them, so disk size dominates, and a cold Windows boot is slow. The report's phase_timings shows where the time went.

Does a pass mean my application works?

It means the probes you wrote passed in an isolated sandbox. A tcp probe proves a listener and an http probe proves a status code; the report records each probe and where it ran. Choose probes for what each VM exists to do, as in the example plans. A pass is evidence of one run, not a compliance certification.

Is there a dashboard or a web UI?

Not in the Community Edition, which is a command-line tool. The dashboard, HTTP API, notifications and HTML or PDF reports belong to the Enterprise Edition.

Reports and evidence

How do I get an HTML or PDF report?

The Community Edition produces and verifies signed JSON only. Rendering it as an HTML binder or a PDF certificate is an Enterprise Edition feature that works from the same JSON. See Reports and verification.

Does verify-report tell me whether the recovery passed?

No. It tells you that the signature is valid and the signer is one you trust. A correctly signed report of a failed recovery verifies too, so read all_passed and all_cleaned. See Verify a report.

Can an auditor verify a report without CertiStack?

Yes. The signature is a standard Ed25519 signature over RFC 8785 canonical JSON. Verify without CertiStack has a complete script.

Where are reports kept, and for how long?

On the controller, under /var/lib/certistack/reports/<plan_id>/ unless you choose another directory. CertiStack never deletes them; retention and backup of the reports and the public keys are yours to manage. See Reports and verification.

Running it

Can I run validations on a schedule?

Yes, with cron, a systemd timer or your CI system. See Automation and scheduling, which includes a tested wrapper script and timer units.

Can two validations run at once?

Not on the same node: each node allows one CertiStack operation at a time, and a second run is refused. Runs on different nodes can overlap if their plans use different sandbox VM IDs, zone_id and vnet_id. See Rules for scheduled runs.

What if a run is interrupted, or the controller crashes?

The node keeps a durable journal of every resource the run created. The next run on that node reconciles it before it changes anything, and certistack recover does the same on demand. Do not delete a retained worker workspace first. See Recover from an interrupted run.

Do I need root?

Not on the controller: it holds plans, credentials, keys and reports as an unprivileged user or container. On the node, the temporary worker runs as root (through a root SSH account or passwordless sudo), so that SSH identity is root-equivalent. Evaluate on a dedicated lab or staging node first. See the deployment model.

Does CertiStack send data anywhere?

No telemetry, no webhooks, no vendor account and no internet connection are required. Its only connections are to the PVE, PBS and SSH endpoints you configure and to the guests in the isolated sandbox. The details are in the security policy.

How do I upgrade or roll back?

Verify the new release, install it beside the old one, repoint the symlink, and run a known-safe plan. Finish or recover every active run first. See Verify, install, upgrade, and roll back a release.

What does CertiStack leave on my node, and how do I remove it?

No service, package, cron job or kernel module is installed on a node. Between runs it holds only the state directory, /var/lib/certistack by default: the run journal, the worker supervisor logs and the scratch directory. Nothing in it is needed once no run is active and the journal is in the cleaned phase (certistack inspect shows it), and only then is it safe to delete. The PVE role, API token and overlay storage you created for CertiStack stay until you remove them. To retire it completely, delete the certistack binary or container image on the controller, revoke the PVE token and PBS credential, and remove the controller's key from the node's authorized_keys. Keep the reports and the public keys for as long as your retention policy requires.

Something failed. Where do I start?

Run the command again with --debug, read the error, and look it up in troubleshooting. For a failed validation, verify the signed report and read its failed probes; for a refused run, certistack doctor on the node shows which prerequisite is missing.

Licensing and support

What license is it under?

The Community Edition is open source under the GNU Affero General Public License v3.0, with no capacity cap and no restriction on commercial use. If the AGPL's network-copyleft condition does not suit you, commercial licenses are available. See editions and the licensing FAQ.

Where do I get help?

Community support is best effort, through GitHub Discussions for questions and issues for reproducible bugs. Report a security vulnerability privately, as the security policy describes, never in a public issue. Before you post, run the failing command with --debug, note the output of certistack version and your Proxmox VE and PBS versions, and remove credentials and anything from a real customer environment.