Remix.run Logo
Alternatives to MinIO for single-node local S3(rmoff.net)
113 points by rmoff 6 hours ago | 62 comments
cadamsdotcom 3 hours ago | parent | next [-]

> 2026-03-02: Ruohang Feng has forked MinIO to pgsty/minio and is promising to maintain a stable, CVE-patched, distribution.

This is what I went with.

I use it in end to end tests as an S3 simulator that starts and stops instantly and reads & writes to a local directory, - as you'd expect it's great in that role. No complaints. Given the fork's maintainer puts their real name on it & stakes their reputation, you'd assume it can be trusted - but my use case is simpler than most.

nacnud 2 hours ago | parent | next [-]

According to https://github.com/pgsty/silo it's pgsty/silo now:

> Renamed from pgsty/minio to pgsty/silo, default branch master → main, on 2026-08-06

spapas82 19 minutes ago | parent [-]

This is what I use. I had a minio instance that was replaced flawlessly with silo. This is an excellent project and needs more traction. All existing minio users must switch to Silo ASAP.

samgranieri 2 hours ago | parent | prev [-]

I might have to try this. I’m currently pinned on the last non-crippled version of minio

c0balt 4 hours ago | parent | prev | next [-]

A notable mention should also be Versity GW, https://github.com/versity/versitygw/

nodoodles 2 hours ago | parent | next [-]

+1 switched to versity for homelab, been simple and stable as a rock. Point at a directory per bucket and done.

Also discussions few months ago here when healthcheks.io switched to it: https://news.ycombinator.com/item?id=47806348

markusw 3 hours ago | parent | prev | next [-]

This is what I switched to as well, works nicely. Can have just a folder as a backend as well, which makes things pretty simple.

swills 2 hours ago | parent | prev [-]

I've had good experiences with Versity GW too and it's a shame it's not more well known.

pveierland 4 hours ago | parent | prev | next [-]

Garage added an automatic configuration feature in v2.3.0 that makes it easier to set up single nodes:

  garage server --single-node --default-bucket
https://garagehq.deuxfleurs.fr/documentation/quick-start/
apexalpha an hour ago | parent | prev | next [-]

I had previously used seaweedfs, which has more moving parts but seems more feature-rich. It was overkill for a homelab, so I went to garage.

Garage is very stable, but the metadata engine / file MUST live on NVMe. Otherwise it gets slow on small files. It also lacks features like per bucket retention settings and stuff. It really is "just" a S3 bucket.

otabdeveloper4 2 minutes ago | parent | next [-]

The very first thing Garage did after I installed it on a test three-node cluster is get corrupted and lose files.

No thanks.

nijave 22 minutes ago | parent | prev | next [-]

For testing/dev setups you can turn sync off and get some performance back but that's only useful for cases where losing data is okay.

jszymborski 36 minutes ago | parent | prev [-]

The trouble I had with SeaweedFS was that the docs I found were rather sparse. Garage, on the other hand seemed pretty well documented.

alexpotato an hour ago | parent | prev | next [-]

We ran RustFS in production at a past job.

Was the backend for an archiving service and we found it to work well on baremetal machines and seamlessly integrated with existing services that used the S3 api.

This was on an internal network so YMMV when it comes to running on the open internet especially with the CVE mentioned in the post.

Jedd 3 hours ago | parent | prev | next [-]

A weird target, the author has.

The title is 'for single node local S3' but what they actually mean is 'for minio-compatibility', which is an entirely different question.

When I abandoned minio a year or so ago, I also surveyed the options, and settled on Garage. It lacked the GUI, but felt about the same complexity as minio. Perhaps a smidge more complexity, as I moved to 3-node and 5-node separate instances of garage, running as containers under Nomad.

I don't recall it being onerous, but I was looking for some basic S3-alike capabilities, not just minio-alike.

(How many people set out to build an object storage system with some number of AWS S3 primitives, but primarily try to match a third-party proprietary system's foibles?)

> So, Garage does work, but gosh…it is not just a drop-in replacement in terms of code changes.

I think in terms of actual code that uses local S3, it pretty much was a drop-in replacement. (I have multiple distribution/registry, Grafana Loki / Mimir, influx3 - all backing onto my object storage system, and the config changes there were modest - key+secret, and url - just as you'd expect.)

uroni 2 hours ago | parent | prev | next [-]

My https://github.com/uroni/hs5 is designed for this use case.

One notable thing is that compared to MinIO (and others) it does not store the objects as individual files. I also have DuckDB directly integrated.

The readme has a comparison to Garage, seaweedfs, RustFS and Ceph.

cuu508 an hour ago | parent [-]

Very cool, I like the conceptual simplicity of it. Even I can understand it, at least at a surface level :-)

Is there a safe way to make backups of the index.lmdb and data0 files without stopping the server?

uroni an hour ago | parent [-]

Not without snapshot currently. I guess I could collect all writes in the (optional) WAL file while a backup is running, then the files would be consistent.

KronisLV 2 hours ago | parent | prev | next [-]

Running Sentry on prem, I had to swap out their default SeaweedFS setup for Garage because the former kept failing under concurrent writes. I tried digging around for a bit, but found that the swap was easier and faster, Garage has also worked great for single node use cases (e.g. tested up to around 10 TB of data). I still think that SeaweedFS is a cool project, might have been a config issue or something, wasn’t worth tweaking.

The setup for Garage sucks, especially cause their Docker image doesn’t automatically create keys or buckets and permissions for you like for example various RDBMS images do. Doing that the first time manually was annoying, but their docs are pretty nice and an AI agent can build you your own Docker image with custom init in about 15 minutes.

Worst with it I’ve had were issues with hooking up WinSCP to it directly to browse saved satellite data, initial connections would hang for some reason, not sure what the problem was either.

Also used Zenko but kinda got the feeling that the project wasn’t as healthy and straight up felt abandoned (e.g. the outdated container images and such), though there is some activity.

mickael-kerjean 3 hours ago | parent | prev | next [-]

Filestash (https://github.com/mickael-kerjean/filestash) has a s3 gateway plugin that I made. It proxy the S3 traffic to any downstream storage: SFTP, FTP, another S3, SMB, NFS, IPFS, ...

lathiat an hour ago | parent [-]

Almost went past looking at this option, it has a far bigger ecosystem of both storage and auth plugins and otherwise looks to be more mature than I might have guessed from the passing comment.

gclawes 9 minutes ago | parent | prev | next [-]

SeaweedFS has a great IAM/STS/policy layer as well. It can support a secretless auth flow similar enough to AWS IRSA with it's OIDC integration

cannonpalms 2 hours ago | parent | prev | next [-]

Is there any "local"/minio-esque object store properly implements the full conditional GET/PUT/DELETE spec, ETag, etc.? I have struggled to find this in the past.

Helmut10001 an hour ago | parent | prev | next [-]

I run Scality S3 (Zenko Cloudserver in the blig) since about 2 years and it is quite capable and frequently updated. Just make sure to point it to the latest Github Registry, not the outdated Docker.com one.

firesteelrain 27 minutes ago | parent | prev | next [-]

Are any of these truly alternatives? MinIO is built for scale and not small projects. Ceph is maybe closest.

crtasm 8 minutes ago | parent [-]

as per the title the scope here is single-node local S3

justincormack an hour ago | parent | prev | next [-]

I wouldnt use Garage for Iceberg, Iceberg relies on conditional PUT working correctly, while Garage is eventually consistent, so they don't provide the correct guarantee.

aljarry 4 hours ago | parent | prev | next [-]

I did try seaweedfs ~half a year ago and I had issues with setting up users through terraform module (if I recall correctly, users endpoint were not correctly responding on delete), and lack of S3 expiry rules (you needed to use seaweedfs configuration or API for that). Other than that, I was pretty happy with it.

rugma 4 hours ago | parent | prev | next [-]

Rustfs, works pretty well for me

markab21 2 hours ago | parent [-]

Yup, same. We use RustFS in a production system with no issues. We switched over after MinIO license changes and after evaluating a few different stacks.

We have heavy concurrent usage, and we haven't had a single issue yet.

dalton74 4 hours ago | parent | prev | next [-]

For single-node local S3, I often just use `s3fs` mounting a local directory. MinIO always felt like overkill for simple dev.

hn9zmdcaou 2 hours ago | parent | prev | next [-]

Versity's posix backend was the one that stuck for us, multipart uploads land as real files on disk so you can inspect them with ls when a test fails.

stevefan1999 3 hours ago | parent | prev | next [-]

I use JuiceFS https://github.com/juicedata/juicefs if you think the Chinese are worth the trust

almaight 27 minutes ago | parent | next [-]

In the decades that open-source projects have existed on GitHub—even those backed by the Chinese government—there has never been an instance of them containing spyware; conversely, we frequently see NSA hacking tools exploiting open-source projects to launch massive cyberattacks and cause data breaches. Reality isn't like American movies where Americans are always the heroes; in fact, those GIs are usually the ones doing the invading. To me, your statement sounds like a resident living under Nazi rule telling everyone, "There's actually a pretty good project over on the Allied side—if you choose to believe it."

paulryanrogers 16 minutes ago | parent [-]

https://www.npr.org/2024/02/22/1233178131/leaked-document-tr...

cyanydeez 3 hours ago | parent | prev [-]

If it's open source, you don't do daily pulls and you have a competent AI to crawl the codebase; why does it matter the ethnicity at this point?

philipallstar 3 hours ago | parent [-]

Ethnicity never mattered (other than for the people that think too many white people are doing something). It's culture, in particular government ties, that are the worry with China.

brinepot 2 hours ago | parent | prev | next [-]

Often just spinning up `localstack` works well, even if only for S3. Gives you other AWS services if you ever need them.

paulryanrogers 23 minutes ago | parent [-]

Commercial use requires a paid subscription. Probably not an issue for a home lab, unless you run a small business on it.

rrhjm53270 4 hours ago | parent | prev | next [-]

I enjoyed the smooth transition from minio to RustFS quite a lot.

PunchyHamster 3 hours ago | parent [-]

I didn't. Hit bug after bug after bug in RustFS. Current version seems to work fine for now but it's definitely "new project"

On flipside the project maintainers react very fast on any bug I submitted and it's fixed pretty quickly, so not really complaint, just warning

de6u99er 4 hours ago | parent | prev | next [-]

I am using Garage for my local DEV environment.

https://garagehq.deuxfleurs.fr/

prologic 4 hours ago | parent | prev | next [-]

One alternative worth looking at is S2: https://github.com/mojatter/s2

pritambaral 3 hours ago | parent | prev | next [-]

Incus (spiritual successor to LXD, after the fork-off by Canonical) has a simple S3 server built-in.

weikju 3 hours ago | parent [-]

Isn’t that just minio? At least in LXD it’s minio.

pritambaral an hour ago | parent [-]

Replaced because minio is dead: https://github.com/lxc/incus/pull/3258

weikju an hour ago | parent [-]

Nice!

v3ss0n 2 hours ago | parent | prev | next [-]

I heard good news about SeaweedFS

orthoxerox 18 minutes ago | parent [-]

It's nice, I am just afraid of the pace Chris Lu can maintain with LLM assistance. Too many features are added in each new release, no stabilization time at all.

nater5000 34 minutes ago | parent | prev | next [-]

Crazy how large of a vacuum MinIO left lol

SSLy 4 hours ago | parent | prev | next [-]

or rclone serve

8fingerlouie 3 hours ago | parent [-]

Came to say this.

If we're just talking verifying S3 connectivity, simply spinning up "rclone serve s3" appears to be the simplest solution.

earth-tattoo 3 hours ago | parent | prev | next [-]

Shout-out to rustfs.

sdcfgy 4 hours ago | parent | prev [-]

Just use the damn file system. Why does everyone have to put HTTP between everything?

nijave 20 minutes ago | parent | next [-]

I can pay Amazon pennies on the dollar to saturate 100Gbps with arbitrarily high concurrency

Sometimes I also want a smaller version for when I don't need that performance but don't want multiple implementations of storage backends

Edit: before someone says NVMe, highly available across 3 fault domains

wink 4 hours ago | parent | prev | next [-]

Because this is about having a local standin for S3, which (in a production deploy) often solves a different problem than a (local) filesystem.

This post does not even mention the S3 API as a replacement for a filesystem.

bartekpacia 2 hours ago | parent | prev | next [-]

I like how you got 4 different comments all starting with "Because..." hah!

jonenst 2 hours ago | parent | prev | next [-]

Because AFAIK the filesystem is at the same time a huge API and designed for a different use case. I can think of the following examples:

- very flat structures: storing hundred of thousands of files in a single directory will fail

- designed for local disks and NFS is a leaky abstraction:

  - running a system using on locks will fail

  - cache behaviors work fine for the "humans browsing files" usecase but not so much for other cases
probably many more reasons
sdcfgy an hour ago | parent [-]

My point is to push the storage abstraction up a level. Then plug S3 or file system into it.

I wouldn’t say this if I hadn’t done this on the PB scale. On a file system! With billions of files!

People are blind to anything other than shitty cloud APIs now. It’s depressing.

Mashimo 3 hours ago | parent | prev | next [-]

Because if you ship a tool with s3 support, the customer can decide if he wants to store in the cloud, or spin up a docker container locally.

Tostino 4 hours ago | parent | prev | next [-]

Because you want to mock the tools you are going to use in production locally or in CI. Really good reasons to not totally change what you are doing in your app between environments.

xienze 4 hours ago | parent | prev [-]

Because you might be running something that only talks S3 and want to point it at something local.