Linuxstorage

PBS 4.2 S3 Datastore on Self-Hosted MinIO

Deploy MinIO as an S3 target and add it to Proxmox Backup Server 4.2 as an S3 datastore — with the HTTPS requirement and mandatory local cache made explicit.

DistrosDebian 13, Ubuntu 24.04
Shellbash
Updated
Script
bash
# Self-hosted object-storage backups: MinIO S3 target + PBS 4.2 S3 datastore.
# Full walkthrough: /articles/pbs-42-minio-s3-backups

# ===== Part A: MinIO S3 target (verified this session) =====
# Set your OWN credentials. Console :9001, S3 API :9000.
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"

# Create the bucket PBS will use (path-style addressing).
export MC_HOST_local="http://youradmin:CHANGE_ME_STRONG@localhost:9000"
docker run --rm --network host -e MC_HOST_local minio/mc mb local/pbs-backups
docker run --rm --network host -e MC_HOST_local minio/mc ls local     # confirm

# ===== Part B: PBS 4.2 S3 datastore (official CLI; run on the PBS host) =====
# PBS requires HTTPS for S3 -> MinIO must present TLS. For a self-signed cert,
# pass its fingerprint with --fingerprint <sha256>.
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
  # --fingerprint <sha256-of-self-signed-cert>

# The datastore needs a persistent LOCAL CACHE dir (docs suggest 64-128 GiB).
proxmox-backup-manager datastore create s3store /var/cache/pbs-s3 \
  --backend type=s3,client=myminio,bucket=pbs-backups

What this does

This stands up self-hosted object-storage backups: MinIO as an S3-compatible target, added to Proxmox Backup Server 4.2 as an S3 datastore (a feature that left tech-preview in the April 2026 release). Your PBS backups then land in a bucket on hardware you own.

Full walkthrough and the two gotchas are in PBS 4.2 Backups to Self-Hosted MinIO Object Storage.

Prerequisites

  • Docker for MinIO (or the ASUSTOR App Central MinIO CE package on a NAS).
  • Proxmox Backup Server 4.2+ for the S3 datastore backend.
  • A TLS certificate for MinIO (PBS rejects plain-text S3) and a local disk for the datastore cache.

Notes

  • Honest status: this playbook is tested: false as a whole. Part A (MinIO + bucket + object round-trip) was verified on real hardware this session — the bucket created and an object stored and listed. Part B (the proxmox-backup-manager S3 commands) is taken verbatim from the official PBS 4.2 storage docs and was not run against a live PBS 4.2 host here. Validate Part B on your own PBS before relying on it.
  • Make these values your own: replace 10.0.0.110 with your MinIO host, pick your own root credentials (never the demo ones), and change any default login immediately — the ASUSTOR MinIO CE package in particular ships a well-known default and is labeled testing-only. If a value looks specific to one machine, it’s a placeholder to change.
  • HTTPS is mandatory. PBS does not talk plain-text S3. MinIO must present TLS; for a self-signed cert, supply the SHA-256 fingerprint via --fingerprint.
  • MinIO uses path-style addressing (endpoint/bucket), so set --path-style true.
  • You still need local disk. The S3 datastore requires a persistent local cache directory (docs suggest 64–128 GiB), and the bucket must grant get/put/list/delete. One S3 datastore can’t be shared by two PBS instances simultaneously.