PBS 4.2 Backups to Self-Hosted MinIO Object Storage

Proxmox Backup Server 4.2 adds S3 datastores. Point it at self-hosted MinIO on your NAS for object-storage backups you own — with the HTTPS and cache gotchas.

On this page
  1. Stand up MinIO (the object store)
  2. Point PBS 4.2 at it
  3. What’s next

For years, “send my backups to object storage” meant one of two things: a monthly bill to a cloud provider, or standing up a fiddly S3 gateway in front of something that wasn’t S3. I wanted the shape of object storage — buckets, immutability, scale — but on my hardware, in my house.

Proxmox Backup Server 4.2 finally makes that clean. Released in April 2026, it adds S3-compatible object storage as a first-class datastore backend — no longer a tech preview. Pair it with self-hosted MinIO and you get PBS backups landing in a bucket you own. This flagship builds exactly that, and I tested the MinIO side end-to-end: a real bucket, a real object round-trip. Two gotchas will trip you if nobody warns you — HTTPS and the local cache — so I’ll make sure they don’t.

A backup lands in a bucket you own — over HTTPS, cached locallyPBS 4.2backup joblocal cache64–128 GiBrequiredS3 datastoreHTTPS onlyMinIOon your NASpbs-backupsThe object store holds the data; the local cache keeps restores responsive.
First: make these values your own

Every name and credential below is an example. Replace 10.0.0.110 with your MinIO/NAS address, the bucket name pbs-backups with yours, and — most importantly — never reuse the demo credentials. Generate your own access/secret keys and keep them in your secret store. If a value looks specific to one machine, it’s a placeholder to change, not a literal to copy.


Stand up MinIO (the object store)

MinIO is a self-hosted, S3-compatible object store. You can run it as a container anywhere Docker runs, or — nicely for a homelab — install it straight onto a NAS.

1Run MinIO and create a bucket10 min

The container form is a one-liner. Set your own root credentials; the console lands on :9001, the S3 API on :9000.

MinIO via Docker

docker run -d --name minio -p 9000:9000 -p 9001:9001 \
-e MINIO_ROOT_USER=youradmin \
-e MINIO_ROOT_PASSWORD=CHANGE_ME_STRONG \
minio/minio server /data --console-address ":9001"

Then create the bucket PBS will use. I verified this exact round-trip against my own MinIO — here’s the real output, a bucket made and an object stored:

Real S3 round-trip (mc client)

$ mc mb local/pbs-backups
Bucket created successfully 'local/pbs-backups'.

$ mc cp probe.txt local/pbs-backups/probe.txt
$ mc ls local/pbs-backups
[2026-09-04 19:47:26 UTC]  15B STANDARD probe.txt
On a NAS? ASUSTOR ships MinIO in App Central

If your NAS is an ASUSTOR, there’s a MinIO CE package in App Central (deployed as a Docker container). Two things to know: it’s labeled for testing and development only, and it ships a well-known default login — change it the moment it’s up. It’s a lovely way to try self-hosted S3 on hardware you already run, as a homelab experiment rather than a production target.


Point PBS 4.2 at it

On the PBS side you first register an S3 endpoint, then create a datastore that uses it. These are the real PBS 4.2 CLI shapes.

1Create the S3 endpoint5 min
Register the S3 endpoint

proxmox-backup-manager s3 endpoint create myminio \
--access-key 'youradmin' \
--secret-key 'CHANGE_ME_STRONG' \
--endpoint 'https://10.0.0.110:9000' \
--region us-east-1 \
--path-style true

MinIO uses path-style bucket addressing (endpoint/bucket) rather than the virtual-host style AWS defaults to, so set that flag.

Gotcha #1: PBS refuses plain-text S3

Proxmox Backup Server does not support unencrypted S3 — all traffic is HTTPS. Plain-HTTP MinIO (fine for a quick mc test like mine above) will be rejected. Give MinIO a TLS certificate; if it’s self-signed, pass its fingerprint to the endpoint with --fingerprint so PBS can validate it. This is the single most common reason a first attempt fails.

2Create the S3-backed datastore5 min
Create the datastore (with its required local cache)

proxmox-backup-manager datastore create s3store /var/cache/pbs-s3 \
--backend type=s3,client=myminio,bucket=pbs-backups

That /var/cache/pbs-s3 is the mandatory local cache directory.

Gotcha #2: you still need local disk

An S3 datastore isn’t “no local storage.” PBS keeps a persistent local cache (the docs suggest 64–128 GiB) alongside the object backend, and the bucket must grant get, put, list, and delete. One S3 datastore also can’t be shared between two PBS instances at once. Plan the cache disk before you start.


What’s next

Your backups now live in an object store you own, with PBS’s deduplication on top. To close out this flagship run we head back into the hypervisor for a problem that bites every growing homelab: custom CPU models in Proxmox VE 9.2 so a VM can live-migrate between nodes with different processors.


Related posts:


Backups are only as good as your last successful restore — test yours.

Comments

Comments are powered by GitHub Discussions — sign in with a GitHub account to join the conversation.