Alternatives to MinIO for single-node local S3

5 min read Original article ↗

Let’s now explore the different alternatives to MinIO, and how easy they are to switch MinIO out for.

I’ve taken the above project and tried to implement it with as few changes to use the replacement for MinIO. I’ve left the MinIO S3 client, mc in place since that’s no big deal to replace if you want to rip out MinIO completely (s3cmd, aws CLI, etc etc).

S3Proxy 🔗

Version tested: 3.0.0

Ease of config: 👍👍

Very easy to implement, and seems like a nice lightweight option.

One thing I did notice was that one of the projects that S3Proxy uses, jclouds, was moved to the Apache Attic (i.e. retired) in mid-2025—although probably nbd if you’re only using local storage anyway?

RustFS 🔗

Version tested: 1.0.0-alpha.79

Ease of config: ✅✅

Be aware that there was recently a pretty bad security vuln found in RustFS, which has put some people off from using it. The website looks pretty smart but several links resolve to the same page, giving it that "fresh paint" smell of a new project :) This might matter less for demos, if it’s easy to switch out. You’ll also note that the project is currently only 'alpha' release.

rustfs.excalidraw

RustFS also includes a GUI:

rustfs gui

SeaweedFS 🔗

Version tested: 4.06

Ease of config: 👍

seaweedfs.excalidraw

This quickstart is useful for getting bare-minimum S3 functionality working. (That said, I still just got Claude to do the implementation…). Overall there’s not too much to change here; a fairly straightforward switchout of Docker images, but the auth does need its own config file (which as with Garage, I inlined in the Docker Compose).

Edit: Straight after posting this blog, the project replied to say they’ll be removing this extra requirement, making it even easier to use! How cool is that :)

SeaweedFS comes with its own basic UI which is handy:

seaweedfs ui

The SeaweedFS website is surprisingly sparse and at a glance you’d be forgiven for missing that it’s an OSS project, since there’s a "pricing" option and the title of the front page is "SeaweedFS Enterprise" (and no GitHub link that I could find!). But an OSS project it is, and a long-established one: SeaweedFS has been around with S3 support since its 0.91 release in 2018. You can also learn more about SeaweedFS from these slides, including a comparison chart with MinIO.

Zenko CloudServer 🔗

Version tested: 9.2.8

Ease of config: 👍

cloudserver.excalidraw

Formerly known as S3 Server, CloudServer is part of a toolset called Zenko, published by Scality. It drops in to replace MinIO pretty easily, but I did find it slightly tricky at first to disentangle the set of names (cloudserver/zenko/scality) and what the actual software I needed to run was. There’s also a slightly odd feel that the docs link to an outdated Docker image.

Garage 🔗

Ease of config: 😵

Version tested: 1.0.0

I had to get a friend to help me with this one. As well as the garage container, I needed another to do the initial configuration, as well as a TOML config file which I’ve inlined in the Docker Compose to keep things concise.

garage.excalidraw

Could I have sat down and RTFM’d to figure it out myself? Yes. Do I have better things to do with my time? Also, yes.

So, Garage does work, but gosh…it is not just a drop-in replacement in terms of code changes. It requires different plumbing for initialisation, and it’s not simple at that either. A simple example: The specified key ID is not a valid Garage key ID (starts with GK, followed by 12 hex-encoded bytes). Excellent for production hygiene…overkill for local demos, and in fact somewhat of a hindrance TBH.

Is this an entirely fair assessment? If I were looking at it as a new piece of technology in its own right, completely not! Many pieces of excellent technology, particularly those that can support running distributed, will have a steep learning curve for configuration. However, my requirement here is a simple drop-in replacement for MinIO—which Garage is not.

Apache Ozone 🔗

Version tested: 2.1.0

Ozone was spun out of Apache Hadoop (remember that?) in 2020, having been initially created as part of the HDFS project back in 2015.

Ease of config: 😵

apacheozone.excalidraw

It does work as a replacement for MinIO, but it is not a lightweight alternative; neither I nor Claude could figure out how to deploy it with any fewer than four nodes. It gives heavy Hadoop vibes, and I wouldn’t be rushing to adopt it for my use case here.

Ceph Object Gateway 🔗

Ozone (above) is heavyweight enough; I’m sure both are great at what they do, but they are not a lightweight container to slot into my Docker Compose stack for local demos.