Garage has worked well for me and gives a good sense of stability. They provide helm charts for deployment and a CLI. There's also very few concepts to learn to start to use it, while e.g. for SeaweedFS I feel like you need to parse a lot of docs and understand more specific terminology.

I added an Zenko Scality CloudServer S3-compatible Storage backend to a selfhosted Grist [1] instance. This allowed me to create forms with attachements in Grist (e.g. users can upload photos). I experimented with several and settled on Zenko Scality CloudServer [2]:

- MinIO [3] is somewhat deprecated and not really open source anymore. Its future is unsure.

- GarageHQ [4] looks pretty great and I wished I could have used this, but it is not yet feature-complete with S3 protocol and specifically missing the versioning feature (I reported this [5])

- Zenko Scality works out of the box; it is a bit too "big" for my context (aimed at thousands of parallel users) and uses 500MB memory; but it does the job for now.

I posted my compose here [6]. Since then (~months ago), it works really well and I am happy with Zenko Scality S3.

    [1]: https://github.com/gristlabs/grist-core
    [2]: https://github.com/scality/cloudserver
    [3]: https://www.min.io/
    [4]: https://garagehq.deuxfleurs.fr/
    [5]: https://git.deuxfleurs.fr/Deuxfleurs/garage/issues/166
    [6]: https://github.com/scality/Zenko/discussions/1779#discussioncomment-15869532