Tutorial

Databases

Hosting MinIO on a VPS

MinIO turns your VPS into high-performance object storage compatible with Amazon's S3 API. Ideal for hosting files, backups, assets and artifacts without depending on a public cloud. Here is how to deploy it cleanly with console, TLS and encryption. Note that the MinIO Community edition is archived, which changes how you should decide before installing or keeping an instance.

7 min read6 steps
Contents· MinIO Community Edition is archived1/11
  1. 01MinIO Community Edition is archived
  2. 02MinIO Community Edition is archived: the real state of the project
  3. 03What this means for an instance already in service
  4. 04Stay or migrate: how to decide
  5. 05Stay, compile, migrate: the decision table
  6. 06Why self-host MinIO on a VPS
  7. 07The strengths of in-house object storage
  8. 08Realistic prerequisites
  9. 09Step-by-step deployment
  10. 10MinIO: when staying is defensible
  11. 11The conditions for a reasonable decision to stay

MinIO Community Edition is archived

The minio/minio repository has been read-only since April 2026 and is no longer maintained. An existing instance no longer receives community security fixes: read "Stay or migrate" below. To move off it, the guide migrer-minio-vers-garage-ou-rustfs-vps describes the method, and heberger-garage-s3-vps and self-host-rustfs-vps describe the two destinations.

MinIO Community Edition is archived: the real state of the project

The minio/minio repository is archived: it is read-only, its last commit dates from April 2026 and its README states that the repository is no longer maintained. This is the end of a slide visible since autumn 2025: the vendor announced in October 2025 that it would stop publishing Docker images, then the project went into "maintenance only" in December 2025, with no new contributions accepted and, at best, case-by-case review of critical fixes only. The Community edition is now distributed as source code only, under the AGPLv3 licence, and the vendor points to AIStor Free (standalone edition, free licence) or AIStor Enterprise (distributed edition with commercial support). The code is still available and your data is still readable: what disappears is the upstream team that fixes vulnerabilities.

What this means for an instance already in service

  • No more community security fixes — the next flaw affecting the S3 server, the console or authentication will, by default, be fixed by nobody upstream; you stay exposed until you fix it yourself
  • Bumping the image tag no longer helps — docker compose pull no longer brings back a fixed version of minio/minio; automatic updates give a false sense of security
  • Rebuilding from source means becoming the maintainer — with source-only distribution, compiling, signing and tracking the CVEs of Go dependencies become your job
  • The ecosystem moves on without you — S3 SDKs, tools and applications will keep working for a while, but nobody will run interoperability tests against new MinIO versions any more
  • Your data is not in immediate danger — nothing breaks on the day of the archive and both mc and rclone still read your buckets; the risk is slow, it is security debt
  • Exposure sets the urgency — an instance reachable from the Internet has a different risk profile from one on a private network, behind a VPN or a firewall

Stay or migrate: how to decide

Ask three questions in this order. Is the instance reachable from the Internet? Does the data justify security monitoring that nobody else will do for you? Can your team carry the maintenance of a home-built binary? A "yes" to the first question, or three "no" answers to the others, point to migrating; a private, little-exposed instance with tested backups gives you time to prepare. Either way, do not decide in a rush: an S3 migration has to be prepared (bucket inventory, policies, presigned URLs, versioning) and that is what the guide migrer-minio-vers-garage-ou-rustfs-vps details. The destinations are described in heberger-garage-s3-vps and self-host-rustfs-vps, two S3-compatible storages whose feature gaps with MinIO you should know before choosing.

Stay, compile, migrate: the decision table

Scroll the table

OptionWhen it holds upWhat it implies
Stay on the last community versionPrivate instance, low-sensitivity data, planned exitNo upstream fixes, isolation and monitoring are on you
Compile from sourceA team able to track Go CVEs and rebuildYou become the maintainer of your own binary
Move to the vendor's AIStor editionYou want to stay in the MinIO ecosystemVendor-specific licence and terms, to read before committing
Migrate to GarageModest volume, simple S3 needs, replication between sitesVersioning, ACLs and bucket policies are not supported
Migrate to RustFSYou need a console and usage close to MinIOACLs not supported, region and addressing style to set explicitly
Go back to public S3 storageNo in-house operations capacityEgress fees and per-request billing return

Why self-host MinIO on a VPS

MinIO exposes a 100% S3-compatible API: all your SDKs, tools (aws s3, rclone, mc) and frameworks that speak S3 work without modification. Instead of paying for storage, requests and especially the egress of a public cloud, you get local object storage at the fixed price of your VPS. It is perfect for serving application assets, storing user uploads, receiving database snapshots, or building a backup target for your other servers, all on infrastructure you control.

The strengths of in-house object storage

  • A native S3 API: immediate compatibility with aws-cli, rclone, existing SDKs and frameworks
  • No egress fees or per-request GET/PUT billing
  • A built-in web console to manage buckets, policies and users
  • Server-side encryption and object versioning enabled per bucket
  • An ideal backup target for your VPS, databases and containers
  • Granular access policies and presigned links to share files securely

Realistic prerequisites

MinIO is light on CPU/RAM: a 2 vCPU / 2 GB RAM VPS is enough to get started. The determining factor is the disk: plan for an SSD volume sized according to your target capacity, with headroom for versioning. Docker + Compose installed, a subdomain for the API (s3.yourdomain.com) and another for the console (console.yourdomain.com). A TLS certificate is essential because MinIO carries credentials.

Step-by-step deployment

  1. Prepare storage on the VPS

    Create the data directory on your SSD: mkdir -p /opt/minio/data. If you have several volumes, MinIO can aggregate them in erasure-coding mode for resilience.

  2. Define the service with strong credentials

    In docker-compose.yml, use the minio/minio image, the server /data --console-address ":9001" command, and set MINIO_ROOT_USER / MINIO_ROOT_PASSWORD with randomly generated values. Mount /opt/minio/data:/data.

  3. Start and bind the ports locally

    Run docker compose up -d. Expose API port 9000 and console port 9001 only on 127.0.0.1: they will be published exclusively via the reverse proxy.

  4. Set up the TLS reverse proxy

    Configure two HTTPS virtual hosts: s3.yourdomain.com to port 9000 and console.yourdomain.com to 9001. Remember to allow large uploads with client_max_body_size 0; (Nginx) on the API host.

  5. Create a bucket and an application user

    With the mc client: mc alias set local https://s3.yourdomain.com ..., then mc mb local/mon-bucket and create a dedicated user with a readwrite policy limited to that bucket rather than using the root account.

  6. Enable versioning and encryption

    Enable versioning (mc version enable) to protect against accidental deletions and configure server-side encryption (SSE) on sensitive buckets.

Use the bucket replication feature (mc replicate) between your MinIO and a second remote VPS: you get a near real-time copy of your objects in another location, which constitutes a robust disaster-recovery strategy without depending on a third-party cloud. Combine it with lifecycle rules to automatically expire old versions and keep disk space in check.

MinIO: when staying is defensible

Staying is not a mistake in itself. An archived MinIO still stores and serves objects, and a poorly prepared migration often does more damage than a theoretical flaw on a service that is not exposed. Staying is defensible when you choose this risk knowingly, with an exit date, rather than ignoring it.

The conditions for a reasonable decision to stay

  • No public exposure — ports 9000 and 9001 bound to 127.0.0.1 or a private network, console never published, access through a VPN or SSH tunnel
  • Bounded use — internal backup target or artefact storage, no uploads from anonymous users or sensitive personal data
  • Independent, tested backup — a copy of the buckets on another medium with mc mirror or rclone, and a restore that has actually been tried
  • Features with no equivalent elsewhere — your application depends on versioning, bucket policies or replication that the destination does not support, and migrating would break it
  • A written deadline — a quarterly review and migration triggers: a published flaw with no fix, exposure that has become necessary, an application that requires a newer version

If one of these five points is missing, treat migration as a project to schedule, not a "someday" item: migrer-minio-vers-garage-ou-rustfs-vps for the method, heberger-garage-s3-vps and self-host-rustfs-vps to install the target.

Your S3 storage, on your VPS

With the ServOrbit Cloud VPS and its expandable SSD volumes, MinIO gives you S3-compatible object storage at a fixed cost. Docker template ready to deploy.