Railway

Deploy Garage — Self-Hosted S3 Storage, MinIO Alternative

Self-host S3-compatible storage: the lightweight MinIO replacement.

Deploy Garage — Self-Hosted S3 Storage, MinIO Alternative

/data

Deploy and Host Garage on Railway

Garage is the lightweight, self-hosted, S3-compatible object store built by the Deuxfleurs collective — a single Rust binary that gives you Amazon S3's API on your own infrastructure with zero JVM, zero cluster complexity, and zero drama. Store files in buckets, get S3 compatibility that works with the AWS CLI, restic, Immich, Nextcloud, and any S3 SDK, and even serve static websites directly from buckets — a feature MinIO and Ceph don't offer.

With MinIO's community edition archived and end-of-lifed in 2026, Garage has become the most-recommended self-hosted S3 replacement — actively maintained (v2.3.0, in production since 2020), AGPL-3.0, and light enough to run on a Raspberry Pi. Self-host on Railway for ~$5–15/month flat, and pay for storage you own instead of AWS S3's per-GB-plus-egress bill.


What This Template Deploys

ServicePurpose
GarageThe S3-compatible object store — S3 API on port 3900, admin API on 3903, optional static web serving on 3902, backed by a persistent volume
Persistent VolumeMounted for object data and metadata — your buckets and files survive every redeploy

Single Rust binary, tiny footprint — no JVM, no external database, no cluster orchestration. Runs comfortably on a small Railway instance. Configure buckets and access keys via the garage CLI or the admin API, then point any S3 client at your Railway URL.


About Hosting Garage

Every self-hosted app that needs storage — Immich, Nextcloud, restic, Mastodon, PeerTube — wants an S3 endpoint. AWS S3 bills per GB plus egress, and MinIO, the old go-to, archived its community edition in 2026. Garage is the lightweight replacement the community moved to: S3-compatible, resilient, and easy to operate.

Railway runs Garage as a single service with a persistent volume and automatic HTTPS. As a compact Rust binary with no external dependencies, it starts fast and runs cheap — set up a bucket and access keys, and any S3 tool works against your Railway endpoint immediately.

> Two honest tradeoffs: Garage uses full duplication rather than erasure coding, so a > multi-node replicated setup uses 3× disk per byte (fine for single-node/personal use; matters at > TB scale). And it doesn't implement S3 Object Lock, so if you rely on bucket-level immutability > for ransomware-proof restic/Kopia backups, factor that in. For most self-hosted storage needs, > neither is a blocker.

Typical cost: ~$5–15/month on Railway depending on storage. AWS S3 charges per GB stored plus $0.09/GB egress; Garage on Railway is flat compute plus your volume, with no egress metering and full data ownership.


Deploy in Under 5 Minutes

  1. Click Deploy on Railway — Garage builds automatically (~1–2 minutes)
  2. Add a persistent volume for object data and metadata
  3. Initialize the cluster layout and create an access key with the garage CLI
  4. Create a bucket and grant your key access to it
  5. Point any S3 client at your Railway URL on port 3900aws s3 --endpoint-url ls

No JVM. No Kubernetes. No cluster tuning.


Common Use Cases

  • Self-hosted S3 replacement for MinIO — the community's most-recommended drop-in after MinIO's 2026 end-of-life, with a lighter footprint and simpler operation
  • S3 backend for Immich, Nextcloud, and self-hosted apps — give any app that expects S3 a real endpoint on your own infrastructure instead of paying AWS
  • Backup target for restic and Kopia — S3-compatible storage for encrypted, deduplicated backups you fully control (note: no Object Lock — see tradeoffs)
  • Static website hosting from buckets — Garage serves static sites directly from S3 buckets with domain-to-bucket mapping, a feature MinIO and Ceph lack
  • Media storage for Mastodon, PeerTube, or Matrix — S3-compatible object storage for fediverse and chat platforms that offload media to S3
  • Application file storage — user uploads, images, documents, and CI/CD artifacts via the S3 API, with no per-GB-plus-egress cloud bill

Configuration

VariableRequiredDescription
GARAGE_RPC_SECRET✅ RequiredShared secret for node RPC — 32-byte hex, openssl rand -hex 32
GARAGE_ADMIN_TOKEN✅ RecommendedBearer token for the admin API — set a strong value
GARAGE_METRICS_TOKENOptionalToken protecting the Prometheus /metrics endpoint
RUST_LOGOptionalLog verbosity — e.g. info
S3 API portPre-set3900 — the S3-compatible endpoint
Admin API portPre-set3903 — cluster and key management
Web portOptional3902 — static website serving from buckets

> Set GARAGE_RPC_SECRET and GARAGE_ADMIN_TOKEN before exposing the instance. After deploy, > initialize the cluster layout, create access keys, and create buckets via the garage CLI or > the admin API — access keys are how S3 clients authenticate. Garage requires the --endpoint-url > flag on every AWS CLI call since it's not AWS.


Garage vs. Object Storage Alternatives

Garage (Railway)MinIO (community)AWS S3SeaweedFS
Status✅ Active (v2.x)❌ Archived 2026✅ Managed✅ Active
Monthly cost~$5–15 flat— (EOL)Per GB + egressSelf-hosted
Egress fees✅ None❌ $0.09/GB✅ None
Self-hosted / own data✅ Yes⚠️ Was❌ AWS cloud✅ Yes
Footprint✅ Single Rust binary⚠️ Was single binaryN/A⚠️ Multi-process
Static site from buckets✅ Yes❌ No✅ Yes⚠️ Limited
Geo-distributed✅ Built-in⚠️ Complex✅ Managed✅ Yes
S3 Object Lock❌ No✅ Yes✅ Yes⚠️ Partial
Open source✅ AGPL-3.0⚠️ AGPL (EOL)❌ No✅ Apache-2.0

Dependencies for Garage Hosting

  • Railway account — Hobby plan (~$5–15/month) sized to your storage needs
  • A persistent volume for object data and metadata
  • Any S3-compatible client — AWS CLI, s3cmd, rclone, restic, or an SDK (no special tooling)

Deployment Dependencies

Implementation Details

This template deploys dxflrs/garage (a single Rust binary) with a persistent volume for object data and metadata. Garage exposes the S3 API on 3900, admin API on 3903, and optional static web serving on 3902. No external database or JVM — metadata lives in Garage's embedded store on the volume, keeping the footprint small.

After deploy, set GARAGE_RPC_SECRET and GARAGE_ADMIN_TOKEN, then use the garage CLI to initialize the layout (even for one node), create access keys, and create buckets. Garage uses full duplication rather than erasure coding — a multi-node setup uses 3× disk per byte; a single-node Railway deployment maps 1:1 to your volume. Connect clients with --endpoint-url.


Frequently Asked Questions

Is Garage a good replacement for MinIO? Yes — it's the option most recommended in self-hosted communities after MinIO's community edition was archived and end-of-lifed in 2026. Garage is S3-compatible, actively maintained, lighter to operate (a single Rust binary), and in production since 2020. It doesn't have MinIO's old web console, but it covers the core self-hosted S3 use case cleanly.

What can I connect to Garage? Anything that speaks S3 — the AWS CLI, s3cmd, rclone, restic, Kopia, and any S3 SDK, plus apps like Immich, Nextcloud, Mastodon, and PeerTube that offload storage to S3. Point the client at your Railway URL with --endpoint-url and use the access keys you created.

How does the cost compare to AWS S3? AWS S3 bills per GB stored plus $0.09/GB egress, which compounds with traffic. Garage on Railway is flat compute plus your volume, with no egress metering — you pay for storage you own. For backup targets, media serving, and app storage with meaningful traffic, self-hosting is dramatically cheaper.

Do I lose my data if Railway redeploys? No — object data and metadata live on the persistent volume, which survives redeploys and updates. As with any storage, keep independent backups of anything critical; a volume is not a backup.

Can Garage serve a static website? Yes, and it's a standout feature — Garage serves static sites directly from S3 buckets with domain-to-bucket mapping, which MinIO and Ceph don't support. Enable the web port (3902) and map a bucket to serve your site's files.

What are Garage's main limitations? Two to know: it uses full duplication rather than erasure coding, so multi-node replication uses 3× disk per byte (fine for single-node/personal, costly at TB scale); and it doesn't implement S3 Object Lock, so bucket-level immutability for ransomware-proof backups isn't available. For most self-hosted storage, neither blocks the use case.


Why Deploy and Host Garage on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Garage on Railway, you get a lightweight, S3-compatible object store — the community's top MinIO replacement, with static-site serving and no egress fees — in a single Rust binary at ~$5–15/month flat, with full ownership of your storage.


Template Content

More templates in this category

View Template
Garage S3 Storage
Ultra-light S3 server: fast, open-source, plug-and-play.

PROJETOS
7
View Template
Postgres Backup to Cloudflare R2 (S3-Compatible)
Automated PostgreSQL backups to S3-compatible storage with encryption

Artour
7
View Template
ReadySet
A lightweight caching engine for Postgres

Milo
34