Deploy Garage S3 + WebUI
Self-hosted S3 storage with a web management dashboard
Garage S3
Just deployed
/garage-volume
Just deployed
Deploy and Host Garage S3 + WebUI on Railway
Garage S3 + WebUI is a self-hosted, S3-compatible object storage stack. It pairs the lightweight Garage storage server with the khairul169/garage-webui dashboard, deploying both as pre-connected services over Railway's private network — giving you working object storage plus a MinIO-style web console with no manual setup.
About Hosting Garage S3 + WebUI
This template provisions two services in one project. The Garage S3 service runs the Garage v2.2.0 binary, automatically initializing the cluster layout, creating your first bucket, and provisioning an S3 access key on first boot — all persisted to a Railway volume so data and credentials survive restarts. The WebUI service runs the garage-webui dashboard and connects to Garage's Admin API (port 3902) and S3 endpoint (port 3900) over the private network. Both services share an admin token, so cluster health, bucket management, and the object browser work immediately. Auto-generated credentials appear in the Garage service's deploy logs.
Common Use Cases
- S3 storage for your apps — a drop-in endpoint for any app or SDK that speaks S3 (uploads, user files, static assets).
- Self-hosted MinIO alternative — lightweight object storage with a visual console for browsing buckets and objects.
- Backups & archival — a durable, low-overhead target for database dumps, logs, and file backups via AWS CLI,
s3cmd, orrclone.
Dependencies for Garage S3 + WebUI Hosting
- A Railway persistent volume (mounted at
/data) for Garage metadata and object data. - A shared admin token (
GARAGE_ADMIN_TOKEN) used by the WebUI to authenticate against Garage's Admin API.
Deployment Dependencies
- Garage object storage — https://garagehq.deuxfleurs.fr/
- Garage WebUI (community dashboard) — https://github.com/khairul169/garage-webui
Implementation Details
Recommended variables for the WebUI service (connecting over the private network):
| Variable | Value | Notes |
|---|---|---|
API_BASE_URL | http://${{ "Garage S3".RAILWAY_PRIVATE_DOMAIN }}:3902 | Garage Admin API |
S3_ENDPOINT_URL | http://${{ "Garage S3".RAILWAY_PRIVATE_DOMAIN }}:3900 | Garage S3 endpoint |
API_ADMIN_KEY | ${{ "Garage S3".GARAGE_ADMIN_TOKEN }} | Must match the Garage admin token |
AUTH_USER_PASS | admin:$2b$12$... | Optional bcrypt login; leave blank to disable |
Use path-style addressing in your S3 client (Railway has no wildcard subdomains): boto3 Config(s3={'addressing_style': 'path'}), AWS SDK forcePathStyle: true, or s3cmd --host-bucket=''.
Why Deploy Garage S3 + WebUI 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 S3 + WebUI on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content
Garage S3
matheusac19/railway_garage_templateGARAGE_ACCESS_KEY
(Recommended) Create your S3 Access Key ID. It MUST start with 'GK' (Ex: GKmyproject123). If left blank, a secure key will be generated in the logs of the first deployment.
GARAGE_SECRET_KEY
(Recommended) Create your S3 Secret Key. It must be EXACTLY 64 hexadecimal characters (letters a-f, numbers 0-9). If left blank, one will be automatically generated in the logs.
GARAGE_ADMIN_TOKEN
The administration API key (port 3902) used by the WebUI. Any random string will do (recommended: 'openssl rand -hex 32'). If blank, it will be generated in the logs. It must be IDENTICAL to the WebUI's API_ADMIN_KEY.
AUTH_USER_PASS
Bcrypt-hashed login for the UI — format: user:$2b$... — leave blank to disable auth
