A high performance S3-compatible object server written in Go, using erasure coding across local drives instead of a filesystem or database. Its community edition was the default self-hosted S3 endpoint for years; the upstream repository is now archived and development has moved to the commercial AIStor product.
Our verdict on MinIO#
Do not start a new deployment on it. The upstream repository was archived on 25 April 2026 and its README opens with THIS REPOSITORY IS NO LONGER MAINTAINED, after being marked unmaintained in February 2026. The community edition is now source only: there are no new pre-compiled binaries or images, the historical ones stay downloadable but frozen, and the last release was RELEASE.2025-10-15T17-29-55Z, itself a privilege escalation fix. Before that, RELEASE.2025-05-24T17-08-30Z removed the embedded management console and stripped external OIDC and LDAP login from the community build, so an in-place upgrade silently took away people's admin UI and their SSO. The replacement, AIStor Free, is not open source: its licence permits standalone single-node use only, with no clustering, no modification and no redistribution. The AGPLv3 code still works and you can still build it with Go 1.24 or later, but you are now the maintainer. Most self-hosters should move to Garage or another maintained project.
Who MinIO is for#
Choose it if
- An existing MinIO cluster you cannot move yet, where the job is now pinning a version, isolating it from the internet and planning an exit.
- Someone who needs the widest S3 API surface on-premises today and has the Go skills to build and patch it themselves.
- Short-lived test and CI environments that need an S3 endpoint and do not care that the image is frozen.
- Anyone willing to accept a proprietary EULA for a single node, for whom AIStor Free is a supported path off the archived code.
Look elsewhere if
- You are choosing a self-hosted S3 endpoint today. The upstream project is archived, so pick something with a maintainer.
- You need OIDC or LDAP login and a management console. Both were removed from the community build in May 2025.
- You are unwilling to compile from source and monitor CVEs yourself, because there are no more community binaries or security releases.
What running it actually looks like#
One container per node, S3 API on 9000 and, on older builds, a console on the port given to --console-address (conventionally 9001). It wants whole block devices or dedicated directories, not a shared filesystem, and the drive count and layout are decided at first start: erasure sets are formed then and cannot be reshaped, so growth means adding a whole new server pool, not adding disks. Default credentials are minioadmin:minioadmin and changing them is the first thing you do. Today, the community route is go install github.com/minio/minio@latest with Go 1.24 or later, because no new binaries or images are published; the archived images up to RELEASE.2025-10-15 remain pullable and multi-arch, including arm64. Upgrades are effectively over, and the docs site now covers only the commercial AIStor product.
Resource profile#
- Memory
- 250 MB idle, around 900 MB in ordinary use. Estimates for a single-node homelab instance. Memory scales with concurrent requests and with the number of objects being listed or scanned; large clusters were always specified with far more, and there is no current community sizing guidance because the community documentation is gone.
- CPU and acceleration
- Erasure coding and per-object checksums cost CPU on every write; the background scanner that verifies and heals objects adds a steady baseline that grows with object count.
- Storage growth
- Erasure coding means usable capacity is raw capacity minus parity, and the drive layout is fixed at deployment. Single-drive mode does erasure coding on nothing, so it protects against nothing.
- Operational load
- 4 of 5, Heavy. Even before the archive it needed drive layout planning, healing awareness and version-pinned upgrades. With no upstream maintainer you are now also responsible for compiling it yourself and tracking Go and dependency CVEs, which pushes it firmly into the version-pinned, rehearsal-worthy band.
Figures describe a small single-household install and are the working assumptions behind our stack planner. Your numbers will differ with library size, user count and hardware. See methodology.
Data and backup surface#
Two things need protecting and people usually only think about one. The buckets are the obvious part, but .minio.sys on every drive holds the internal state: access keys, policies, bucket metadata, versioning and lifecycle configuration. Copying only the bucket directories gives you objects that no longer have identities or permissions attached, so replicate at the S3 layer (mc mirror, bucket replication, or a backup tool writing to a second endpoint) rather than at the filesystem layer. Integrity is checked continuously by the background scanner, which compares erasure-coded shards and rebuilds damaged ones; that only works if you have parity, so a single-drive deployment can detect nothing and repair nothing. Losing more drives in an erasure set than its parity count loses that set outright, and no scan recovers it.
Derived backup shape
File copy. Copy the config and data directories. Safe while running for anything that writes atomically.
Traps and surprises#
The repository is archived and read-only
GitHub archived minio/minio on 25 April 2026 and the README states the project is no longer maintained. There will be no further security releases, no issue triage and no community binaries. If you are running it, the realistic posture is to firewall the admin surface, pin the last release (RELEASE.2025-10-15T17-29-55Z), and treat any newly disclosed Go or MinIO CVE as something you patch and build yourself, or as a reason to migrate.
May 2025 upgrade removed the console and SSO
RELEASE.2025-05-24T17-08-30Z was a breaking release: the embedded management UI was deprecated and moved out to a separate object browser, and external identity provider logins via LDAP and OIDC were removed from the community build and made part of the commercial product. Anyone who upgraded a running instance lost their admin interface and their directory logins in one step, with policy and replication management moving to mc on the command line.
AIStor Free is a proprietary single-node licence
The recommended successor is not a licence change of MinIO, it is a different product under a EULA. The free tier permits installation and use only in standalone mode, meaning single node with no distributed clustering and no high availability, and it forbids modifying, reverse engineering or redistributing the software. It is fine for a homelab if you accept that, but it is not open source and it will not run your three-node cluster.
The drive layout is fixed the moment you start
MinIO forms erasure sets from the drives present at first start and cannot reshape them afterwards. You do not add a disk to an existing set; you add an entire new server pool with its own drives, and existing objects are not rebalanced into it automatically. Homelabbers who start with two disks intending to add a third later find out that the only path is a new pool or a full data migration into a fresh deployment.
The community documentation is gone
docs.min.io now documents AIStor exclusively, describing installation and operations for AIStor Server clusters. Configuration references, tuning guidance and troubleshooting for the community server are no longer published there, so operational answers you find in search results may describe commands or flags the archived binary does not have, or the reverse. Keep a local copy of whatever documentation your version needs before you need it.
Specifications#
- Category
- Backup and object storage
- Licence
- AGPL-3.0 (repository archived) (Copyleft)
- Written in
- Go
- First release
- 2015
- Maturity
- Slowed
- Datastore
- None external. Objects and their metadata live on the raw drives, with erasure coding and internal state under .minio.sys
- Default ports
9000,9001- Ships as
- docker, native binary (historical), build from source, kubernetes operator
- arm64 builds
- Yes
- Identity
- Local accounts only. External identity via OIDC and LDAP was removed from the community build in RELEASE.2025-05-24 and moved into the commercial product. What is left is local access keys and policies.
- Replaces
- Amazon S3, Wasabi, Backblaze B2, DigitalOcean Spaces
- Project site
- www.min.io
- Source
- github.com/minio/minio
- Documentation
- docs.min.io
Alternatives to MinIO#
Everything else in backup and object storage, closest in operational weight first.
| Tool | Ops load | Idle RAM | Licence |
|---|---|---|---|
| Duplicati | 3, Moderate | 200 MB | MIT |
| Garage | 3, Moderate | 150 MB | AGPL-3.0-only |
| BorgBackup | 2, Light | 80 MB | BSD-3-Clause |
| Kopia | 2, Light | 200 MB | Apache-2.0 |
| rclone | 2, Light | 40 MB | MIT |
| restic | 2, Light | 100 MB | BSD-2-Clause |
Where MinIO comes up elsewhere#
Head to head
Sources#
Facts on this page were checked against the project's own material. Where a number is our own estimate rather than a published figure, the text says so.
Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.