mrkeyoor.com_
Thu 17 Sept 04:05 UTC
Self-Hostedevaluationupdated 17 Sept 2026

versitygw review

VersityGW puts an S3-compatible API in front of a local POSIX filesystem, ScoutFS, Azure Blob Storage, or another S3 service. It is for teams that have storage already and need software written for S3 to talk to it without replacing the backend.

Verdict

Our run of VersityGW installed 174 packages and passed all 60 tests, so the checked-out gateway earned a production trial in front of existing storage. Use it when preserving that backend is the point, then test every client and IAM path you plan to expose. Choose a full object store when you also need the software to own replication, placement, and disk failure recovery.

We ran it

Lab card: what happened when we ran versitygwScreenshot of versitygw (www.versity.com/products/versitygw)
Install✓ · 28s174 packages
Build✓ · 76s
Tests✓ · 43s60 passed · 0 failed of 60 (go test)
Repo974 files~244,303 lines of source · 9.7 MB · 23 CI workflows · Dockerfile · tests dir

Answers from our run

Does versitygw build from source?

Dependencies installed in 28 seconds (174 packages), and the build succeeded in 76 seconds. We cloned commit c111b7d into a clean Debian container with 3 CPUs and no project-specific setup.

Do versitygw's tests pass?

Yes: 60 of 60 passed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use versitygw?

Teams treating S3 compatibility as a checkbox: open issue 2398 shows aws-chunked metadata breaking strict readers after an otherwise successful upload.

What are the alternatives to versitygw?

SeaweedFS, Ceph, Garage. Our run of VersityGW installed 174 packages and passed all 60 tests, so the checked-out gateway earned a production trial in front of existing storage.

Setup4/528-second install; production identity still needs design
Docs4/5Quick start and detailed wiki cover backends and IAM
Community4/52,939 stars and active September 2026 issue work
Maturity4/5v1.8.0 is active; S3 edge cases remain open

Who it’s for

Storage teams exposing an existing POSIX or ScoutFS tree to S3 clients.
Operators who need an S3 proxy in front of Azure Blob Storage or another S3 service.
Go teams that want a stateless gateway they can place behind a load balancer.
Self-hosters willing to test their exact AWS CLI, SDK, identity, and object-versioning paths.

Who it’s NOT for

Teams treating S3 compatibility as a checkbox: open issue 2398 shows aws-chunked metadata breaking strict readers after an otherwise successful upload.
Small installations that require encrypted local credential storage without another service: the global-options documentation says internal IAM files are plain text, protected only by file permissions.
Multi-tenant POSIX deployments that expect Unix ownership to enforce each S3 user's access: open issue 513 requests that permission model, while the process otherwise needs access across the gateway root.
Buyers seeking a storage durability system rather than a protocol gateway: the README calls VersityGW stateless, so replication and disk failure handling belong to the selected backend.

Setup reality

Our sandbox install succeeded in 28 seconds and added 174 Go packages. The build succeeded in 76 seconds. Tests finished in 43 seconds with 60 passed and 0 failed out of 60.

A local POSIX trial needs a backend directory plus root access and secret keys. Versioning uses another directory. The optional WebUI, TLS, virtual-host routing, and standalone IAM service each add their own listener or files.

The quick start is short, but a production setup still needs an identity backend, certificate handling, storage permissions, backups, and client compatibility tests. Internal IAM stores account files as plain text; the dedicated IAM service runs separately and uses a Unix socket or mutual TLS.

4 backend paths make it a translator, not a storage layer

VersityGW v1.8.0 translates S3 requests for 4 backend paths: POSIX, ScoutFS, Azure Blob Storage, and another S3 service. That makes it useful when applications already speak S3 but the data must remain on storage you own. The gateway is stateless, so several instances can sit behind a load balancer without assigning buckets to a particular gateway. The backend still owns the bytes.

The scope has grown beyond a thin filesystem adapter. Release v1.8.0 added a standalone IAM service, OIDC federation work, a Helm chart for that service, static website fixes, and an RDMA service tied to NVIDIA cuObject. GitHub showed 2,939 stars and 154 open issues and pull requests combined when we fetched the repository. This is active infrastructure code, with a correspondingly wide surface to check before deployment.

Ports 7070 and 8080 make the demo easy, identity remains your job

The v1.8.0 POSIX quick start listens on port 7070 and needs two credentials plus a directory. An optional second directory keeps older object versions. You can add the browser interface on port 8080 and sign in with the same access and secret keys. That is enough to put an AWS CLI in front of a local directory and learn whether the basic translation suits your application.

In v1.8.0, production identity still takes more thought. The convenient --iam-dir mode writes account records as plain text and relies on file permissions, a limitation the documentation states directly. VersityGW also supports LDAP, Vault, S3-backed IAM, FreeIPA, and a separate IAM process. The standalone route handles users, roles, policies, access keys, and OIDC, but it is another service with its own storage, root credentials, and private connection. A Unix socket is the simpler single-host choice, while a network endpoint requires mutual TLS.

What happened when we ran it

Our sandbox installed 174 Go packages in 28 seconds. The build completed in 76 seconds, and go test finished in 43 seconds with 60 passed and 0 failed. Our measurement setup used commit c111b7d in an unprivileged Debian container with 3 CPUs and 8 GB of RAM. Nothing in the supplied run log showed an install, compiler, or test error.

The checkout contained 974 files, about 244,303 lines of source, and occupied 9.7 MB before dependencies. We found 23 CI workflow files, a Dockerfile, and a tests directory. That is better evidence of routine project discipline than a polished quick start alone, though our 60-test run did not exercise a live Azure account, a multi-node load balancer, RDMA hardware, or each S3 client your users may bring.

Passing 60 tests does not settle every S3 edge case

Open issue 2398, filed against v1.7.0, describes uploads whose decoded bytes are correct but whose stored metadata still includes Content-Encoding: aws-chunked. Strict readers can then reject a later download. An open pull request was already addressing that report on September 16, 2026. The sequence is encouraging, but it also shows why a gateway needs client-level acceptance tests rather than a single successful upload and download.

Other open reports reach into less common paths. Issue 2309 documents a race and an HTTP 405 when one VersityGW instance using the S3 backend is chained to another using POSIX. Issue 513 asks for per-user Unix permission enforcement in multi-tenant POSIX mode. Neither report makes the common single-gateway path unusable. Both mark boundaries a storage administrator should test before exposing shared files or stacking gateways.

The README's stateless gateway does not add storage replicas

VersityGW v1.8.0 is stateless, so adding gateway instances does not replicate a one-disk POSIX backend. If that disk fails, its failure story remains a single disk. ScoutFS, Azure, or an upstream S3 service brings a different story. This distinction is VersityGW's appeal and its limit: you keep the existing storage architecture, including its backup, recovery, and consistency decisions.

The same rule applies to security boundaries. Root credentials have full authorization. TLS is optional rather than automatic, and the default S3 listener uses port 7070. The admin service can listen separately. Event delivery can target Kafka, NATS, RabbitMQ, or a webhook, yet each integration adds credentials and failure handling outside the gateway. A careful rollout starts with one backend, one client matrix, and the identity mode you intend to retain.

September activity makes a focused trial reasonable

The repository was pushed on September 16, 2026, twelve days after v1.8.0 was published. The release included IAM, OIDC, RDMA, Azure pagination, and several S3 behavior fixes. Issue and pull-request activity continued after the tag, including work on chunked upload metadata and list response fields. That combination points to active maintenance, while the 146 open issues show that compatibility work is ongoing.

VersityGW is easiest to recommend when replacing the storage backend would be the wrong project. Its 28-second install and clean 60-test result make evaluation cheap, and its backend choices cover several real migration shapes. Do not stop at the green suite. Put your SDK versions, multipart uploads, checksums, versioning rules, IAM policies, and failure recovery through the exact deployment you plan to keep.

Alternatives

ProjectWhat it isPick it when
SeaweedFS gh↗A distributed system that provides S3, filesystem, and table storage.pick this instead when you need the storage layer itself to scale across nodes, not just an S3 face on an existing backend.
CephA distributed object, block, and file storage platform with an S3 gateway.pick this instead when one storage cluster must provide object, block, and file services and you can operate Ceph.
GarageA small geo-distributed S3-compatible object store mirrored on GitHub.pick this instead when lightweight multi-node object storage matters more than direct POSIX access to existing files.

What people are saying

  1. [github-trending] versity/versitygw

Sources

  1. VersityGW README
  2. VersityGW quick start
  3. VersityGW global options
  4. VersityGW v1.8.0 release
  5. Open aws-chunked metadata issue
  6. Open POSIX permission enforcement issue

More self-hosted reviews

Octop · newsnow · forem · octo-server · runtime · openfang · the whole board →