
Deploy SeaweedFS | (Just Updated) S3 Object Store, Public URL and Keys Set
SeaweedFS S3 store. Keys set from boot, public URL, data kept on volume
seaweedfs
Just deployed
/data
Deploy and Host SeaweedFS on Railway
SeaweedFS is a distributed object and file store with an S3-compatible API. It stores small and large blobs cheaply, and any S3 client (aws-cli, boto3, rclone, MinIO SDKs) can talk to it.
This template runs SeaweedFS 4.48 as one service from a digest-pinned official image: master, volume server, filer and S3 gateway together, the S3 API on a public Railway domain, and all data on a Railway volume.
About Hosting SeaweedFS
- The S3 API needs keys from the first request. A stock
weed server -s3container accepts anonymous writes: an unauthenticatedPUT /bucketreturned 200. Here an access key and secret key are generated per deploy and anonymous requests are rejected with 403. - It has a public URL. The S3 gateway listens on Railway's
PORTand the template creates the domain, so clients outside Railway can connect straight away. Services in the same project use the private endpoint. - Data survives redeploys. Objects live on the attached volume, in a subdirectory so the
volume's
lost+foundnever lands in the data directory. An object written before a redeploy was read back after it. - Many buckets work on a small volume. SeaweedFS gives each bucket its own volume files and
works out how many it may create from the free disk divided by the volume-file size (30 GB by
default). On a 5 GB Railway volume that allowed three, and the first upload after creating a
bucket failed with
No writable volumes and no free volumes left. Here files are capped at 256 MB and the slot count is set explicitly, so buckets and uploads work from the first request.
Common Use Cases
- An S3-compatible bucket for application uploads, backups and static assets
- A cheaper object store for AI datasets, model files and embeddings snapshots
- A MinIO or S3 replacement for services that only need the S3 API
- Blob storage behind a filer with directories and TTLs
Dependencies for SeaweedFS Hosting
- One Railway volume for the data directory (created by the template)
Deployment Dependencies
- SeaweedFS documentation: https://github.com/seaweedfs/seaweedfs/wiki
- Official image: https://hub.docker.com/r/chrislusf/seaweedfs
Implementation Details
| Variable | Purpose |
|---|---|
S3_ACCESS_KEY | S3 access key id, generated per deploy. |
S3_SECRET_KEY | S3 secret key, generated per deploy. |
S3_ENDPOINT | Public HTTPS endpoint, for clients outside Railway. |
S3_PRIVATE_ENDPOINT | Private endpoint, for services in the same project. |
export AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY=
aws --endpoint-url --region us-east-1 s3 mb s3://my-bucket
aws --endpoint-url --region us-east-1 s3 cp file.txt s3://my-bucket/
Use path-style addressing. The master, volume and filer ports stay on the private network and are not exposed by the template.
Why Deploy SeaweedFS 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 SeaweedFS 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
seaweedfs
chrislusf/seaweedfs:4.48