Proxmox Backup Server
PegaProx integrates with Proxmox Backup Server (PBS) for enterprise-grade backup management:
- Connect and manage multiple PBS instances
- Browse backup contents and restore individual files
- Schedule automated backups to PBS
- Monitor backup job status and storage usage
- Restore VMs/CTs from PBS backups
Changes in 1.3
- API tokens: a PBS server can be connected with an API token instead of a password (#805).
- Linking to clusters: a PBS server is linked to the clusters that may use it. Only a global administrator can leave a server linked to no cluster (which makes it visible to every tenant); other users link it to clusters they reach. An update that leaves
linked_clustersout keeps the stored links. - Shared PBS servers: where one PBS serves several clusters or tenants, each user sees only the backups of guests on clusters they may use. Server-wide actions (changing or running jobs, stopping tasks, garbage collection, prune, verify, datastore changes, host upgrade) need every linked cluster.
- Certificate fingerprint: when a fingerprint is stored, a connection whose certificate does not match it is refused, also in the storage pre-flight. Adding the PBS as storage to clusters puts the stored credentials only on clusters the server is linked to.
- Changing the address: a new host or port needs the credential again in the same step.
Datastore Management
Garbage Collection
Reclaim disk space by removing unreferenced chunks. GC identifies orphaned data blocks and purges them safely. Run on schedule or trigger manually.
Verify Integrity
Validate checksums of every stored chunk to detect bit rot or silent corruption. Schedule weekly or monthly depending on datastore size.
Prune Snapshots
Apply retention policies to remove old snapshots. Pruning respects keep rules and protection flags.
Retention Policies
| Rule | Description | Example |
|---|---|---|
keep-last |
Keep N most recent snapshots | 3 retains latest 3 |
keep-hourly |
One per hour for N hours | 24 keeps one per hour for 1 day |
keep-daily |
One per day for N days | 7 keeps daily for 1 week |
keep-weekly |
One per week for N weeks | 4 keeps weekly for 1 month |
keep-monthly |
One per month for N months | 6 keeps monthly for 6 months |
keep-yearly |
One per year for N years | 2 keeps yearly for 2 years |
Snapshot Protection & Notes
Protected snapshots cannot be deleted manually or by automated prune jobs. Notes are searchable and useful for tagging important backups (e.g. "pre-migration" or "before kernel upgrade").
Sync, Verify & Prune Jobs
Sync Jobs
Replicate snapshots between PBS servers using incremental deduplication. Useful for offsite DR.
Verify Jobs
Validate chunk integrity by recomputing checksums. Detects bit rot and storage corruption.
Prune Jobs
Automated retention policy enforcement on a schedule. Dry-run mode available.
Traffic Control
| Parameter | Description | Default |
|---|---|---|
| Rate In | Max incoming bandwidth (MiB/s) for uploads | Unlimited |
| Rate Out | Max outgoing bandwidth (MiB/s) for restores/sync | Unlimited |
| Time Windows | Cron-style schedule for when limits are active | Always |
Notification Endpoints
SMTP
Email notifications via SMTP relay with TLS support.
Gotify
Push notifications with severity-mapped priority levels.
Webhook
HTTP POST with JSON payload for Slack, Teams, or custom alerting.
Matchers filter notifications by job type (backup, sync, verify, prune), severity, and datastore name.
Disk SMART Monitoring
| Attribute | Warning | Significance |
|---|---|---|
| Reallocated Sectors | > 0 | Physical media damage; rising count signals imminent failure |
| Pending Sectors | > 0 | Sectors awaiting reallocation |
| Temperature | > 55°C | Excessive heat accelerates wear |
| Power-On Hours | Info | Lifecycle tracking |
| SSD Wear | < 10% | Remaining flash endurance |
Complete PBS API Reference (41 Endpoints)
Server Management
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/pbs |
List PBS servers |
POST |
/api/pbs |
Add PBS server |
PUT |
/api/pbs/{id} |
Update config |
DELETE |
/api/pbs/{id} |
Remove server |
POST |
/api/pbs/{id}/test |
Test connection |
GET |
/api/pbs/{id}/status |
Server status |
Datastores
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/pbs/{id}/datastores |
List datastores |
POST |
/api/pbs/{id}/datastores |
Create datastore |
DELETE |
/api/pbs/{id}/datastores/{store} |
Delete datastore |
POST |
/api/pbs/{id}/datastores/{store}/gc |
Run garbage collection |
POST |
/api/pbs/{id}/datastores/{store}/verify |
Verify integrity |
POST |
/api/pbs/{id}/datastores/{store}/prune |
Prune snapshots |
Snapshots
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/pbs/{id}/datastores/{store}/snapshots |
List snapshots |
DELETE |
/api/pbs/{id}/datastores/{store}/snapshots |
Delete snapshot |
PUT |
/api/pbs/{id}/datastores/{store}/protected |
Toggle protection |
GET |
/api/pbs/{id}/datastores/{store}/catalog |
Browse catalog |
GET |
/api/pbs/{id}/datastores/{store}/file-download |
Download file |
Jobs
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/pbs/{id}/jobs |
List all jobs |
POST |
/api/pbs/{id}/jobs/{type} |
Create job |
POST |
/api/pbs/{id}/jobs/{type}/{job_id}/run |
Trigger manual run |
Monitoring
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/pbs/{id}/tasks |
List tasks |
GET |
/api/pbs/{id}/disks |
Disk info + SMART |
GET |
/api/pbs/{id}/rrd |
Performance metrics |
Traffic & Notifications
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/pbs/{id}/traffic-control |
Traffic rules |
POST |
/api/pbs/{id}/traffic-control |
Create traffic rule |
GET |
/api/pbs/{id}/notifications |
List notification config |
POST |
/api/pbs/{id}/notifications/targets/{type}/{name} |
Create target |
POST |
/api/pbs/{id}/notifications/matchers/{name} |
Create matcher |