Object Storage: Tell us what you need
timomeh
EMPLOYEEOP

4 months ago

We've heard you: many of you have asked for Object Storage on Railway.

We're now exploring adding object storage, and we'd love your input before we build.

- What would you use object storage for on Railway?

- How do you handle it today, and what frustrates you about that process? What do you like about it?

- What features matter most to you? (e.g. S3 API, versioning, TTL/lifecycle, public vs private files, CDN)

Open to any other thoughts, ideas and input you have!

Under Review

0 Threads mention this feature

62 Replies

yo
PRO

4 months ago

I’d definitely use object storage on Railway for user-generated content and media assets (images, docs, videos, backups). Today I usually wire up S3 or Cloudflare R2 alongside Railway deployments, which works but adds extra complexity in setup, permissions, and networking. It feels like a step outside the otherwise smooth Railway developer workflow.

The features that matter most for me:

  • S3-compatible API so it’s easy to plug into existing SDKs

  • Support for multipart uploads to handle large files reliably

  • Granular access controls (public, private, signed URLs)

  • Lifecycle policies for things like auto-expiry

  • CDN edge delivery baked in for global performance

What I’d love is the "Railway way" of making it feel native: one-click provisioning, easy environment variable injection, and clear observability (storage used, bandwidth, request counts). That’d save me from juggling multiple dashboards and credentials.


medim
MODERATOR

4 months ago

Amazing!

For me, being compatible with aws-sdk is the most important thing, being able to just change the endpoint like when using CF R2 and everything working as intended without extensive refactoring.


mathu97
PRO

4 months ago

For us:
- S3 compatible API
- Signed URLs
- CDN


x-lem
HOBBY

4 months ago

Wow, this would be awesome! Something price competitive with Interserver or Backblaze B2. Primary use would be for backing up my home server. Secondary reason would be what @yo mentioned above. I was building an app that needed to store user uploaded images. Tried a few different solutions on Railway, but nothing that I liked due to the lack of object storage.


evhaus
PRO

4 months ago

The brutal reality is that if it doesn't compete on price with S3 itself it will be tough to justify making the move. There's very little "feature wise" that I think I would need and just having the excellent Railway UX polish on it will probably not be good enough to justify any significant cost overhead.


shixzie
PRO

4 months ago

I imagine a new 'service' that's a single bucket, same credentials tab as databases

  • Match S3 prices (get as close as possible to R2)

  • S3 compatibility (again, can use R2 as a baseline)

  • A way to configure how much GBs to keep cached (similar to how one can limit a service's cpu/mem)

  • A way to configure which regions should keep the cache or replicate the entire bucket


yo

I’d definitely use object storage on Railway for user-generated content and media assets (images, docs, videos, backups). Today I usually wire up S3 or Cloudflare R2 alongside Railway deployments, which works but adds extra complexity in setup, permissions, and networking. It feels like a step outside the otherwise smooth Railway developer workflow.The features that matter most for me:S3-compatible API so it’s easy to plug into existing SDKsSupport for multipart uploads to handle large files reliablyGranular access controls (public, private, signed URLs)Lifecycle policies for things like auto-expiryCDN edge delivery baked in for global performanceWhat I’d love is the "Railway way" of making it feel native: one-click provisioning, easy environment variable injection, and clear observability (storage used, bandwidth, request counts). That’d save me from juggling multiple dashboards and credentials.

timomeh
EMPLOYEEOP

4 months ago

Granular access controls (public, private)

Are you specifically referring to public and private files within the same bucket? Or just in general the ability to have public and private files? If within the same bucket, could you give an example where it's necessary for you?


espensgr
PRO

4 months ago

Maybe take a look at Garage, could be a good fit, maybe able to use replicas to scale it too.

I would like a S3 compatible system, with cdn edge caching, user keys for buckets.

We would use it for S3 storage for media, pictures and picture transforms served via global CDN for CMS’s.


milestonetech
PRO

4 months ago

S3 API compat, CDN cache...SIMPLICITY...good UI/UX for managing it inline in the Railway environment (custom domain overlays (and internal endpoints like you've done elsewhere), simple default permissions rather than having to force everything to be "publicly viewable" if you have to manage it in the UI environment) and file management functions.

People are quite simply leaving AWS etc for layer 2 cloud solutions like Railway, Vercel etc because AWS has become so insanely cumbersome to manage all of the integrations, layers and layers of permissions, 50 steps to do basic things...take the time to really focus on the developer experience so we dont end up with just another AWS "feature sprawl" situation...and you'll be great!


drivenbyvalues
HOBBY

4 months ago

I want to enable my hobby project to store images, documents, short videos that requires S3. I tried integrating with S3 compatible library. Would love to have something similar to database where is it is easy to setup, has standard s3 compatible interface and reasonably prized based on storage. Thanks for considering this feature. Definitely there is a need.


rtwalz
PRO

4 months ago

I would only care about price being better than DO or CF.


lchin21
HOBBY

4 months ago

It would have to be better than S3 and/or R2.

Someone above said signed URLs, which I agree with.

Additionally, the pricing would at least have to be competitive.


osamaqarem
FREE

4 months ago

thinking about a photo gallery app, I'd love

  • File versioning, so I can edit and restore unedited versions of a photo

  • Events, so I can mirror the object state in my DB

  • A way to tell if the version of the file I have locally is the same one in storage, helpful when syncing to multiple devices

  • Batch create signed URLs (private photo gallery)

  • No egress fees grimacing emoji


budivoogt
PRO

4 months ago

I would care about:

- S3 compatibility
- Versioning
- Compatible with Cloudflare
- R2-esque TTL/lifecycle


joggienl
HOBBY

3 months ago

I would love this! I tried Minio on Railway (is that technically even allowed for production use?) but a "native" way to get object storage would be great!

  • S3 compatibility

  • Encryption

  • Versioning

  • Locking

  • Retention

The api compatibility and encryption possibility would be my personal selling point. Encryption is underrated to be able to save more sensitive data when a project asks for it. It would be nice to have a railway-provided-key (bucket encryption) or SSE-C (bring your own key, which is harder imo).

fire emojimuscle emoji


joggienl

I would love this! I tried Minio on Railway (is that technically even allowed for production use?) but a "native" way to get object storage would be great!S3 compatibilityEncryptionVersioningLockingRetentionThe api compatibility and encryption possibility would be my personal selling point. Encryption is underrated to be able to save more sensitive data when a project asks for it. It would be nice to have a railway-provided-key (bucket encryption) or SSE-C (bring your own key, which is harder imo).

timomeh
EMPLOYEEOP

3 months ago

is that technically even allowed for production use?

Of course it is slightly_smiling_face emoji


rtwalz

I would only care about price being better than DO or CF.

timomeh
EMPLOYEEOP

3 months ago

price being better than DO or CF

Interesting comparison, DigitalOcean and Cloudflare have 2 different pricing models. Which one do you prefer?


lchin21

It would have to be better than S3 and/or R2.Someone above said signed URLs, which I agree with.Additionally, the pricing would at least have to be competitive.

timomeh
EMPLOYEEOP

3 months ago

What specifically would you like to see better compared to S3 and R2? Would be interesting to hear what you dislike or find annoying about those existing offerings.


timomeh

is that technically even allowed for production use?Of course it is

joggienl
HOBBY

3 months ago

appologies, I did not use proper wording I suppose, I was referreing to the Minio license itself. I believe you need a specific license for it to run it for actual production usage but I have not checked that any further blush emoji


timomeh

What specifically would you like to see better compared to S3 and R2? Would be interesting to hear what you dislike or find annoying about those existing offerings.

pepijn
PRO

3 months ago

Most annoying with R2 is that either it is public or private, you cannot control access per object.


flyingcroissant
HOBBY

3 months ago

Consider support for conditional requests (especially writes) based on ETag and/or modification date/time (eg. only perform the request if the object still matches the provided ETag).


brody
EMPLOYEE

3 months ago

Just want to mention that there will be S3 compatibility, that is guaranteed.


yo
PRO

3 months ago

That’s epic @brody! Multipart upload support would be amazing, along with presigned URLs.

These two are most used by me across all my projects.


timomeh

price being better than DO or CFInteresting comparison, DigitalOcean and Cloudflare have 2 different pricing models. Which one do you prefer?

rtwalz
PRO

3 months ago

For certain things, one can be better than the other. DO does not charge for API calls, while CF does. CF does not charge for bandwidth, while DO does. So bandwidth-intense, small number of files, I go with CF. If I have large number of files and little bandwidth, DO wins.


yashko
PRO

3 months ago

- What would you use object storage for on Railway?

Right now I have to store number of static assets (HTML, images) and there is no easy way for me to do it via Railway.

- How do you handle it today, and what frustrates you about that process? What do you like about it?

What I currently use is AWS S3 + AWS amplify which allow me to drag-n-drop my files into S3 and make them available in less than 5 minutes.

What I don't like is that I have to do a lot of click-ops here and there to upload files for the first time/update them later. There is a way to automate it but I'm okay doing it manually for my case.

- What features matter most to you? (e.g. S3 API, versioning, TTL/lifecycle, public vs private files, CDN)

Easy way to host static assets.

For me personally S3 API and TTL/lifecycle matter less than having CDN and versioning


benisenstein
PRO

3 months ago

Hi Railway team and thanks for you hard work!

In addition to all of the wonderful features mentioned by the folks in this thread, I would really love to see a local-first approach that allows us to build with Railway storage locally. I would like to see railway storage packaged up as a docker image so we can build storage features into our apps and test locally. DX is not to be dismissed as a key factor for adoption here.

From a more high-level perspective, I believe you would be wise to stick to your primitives of "services, with volumes" that took you to another level with databases. I remember when databases were changed from a specific offering into templates on top of the "services and volumes" primitives. It was awe-inspiring reading the blogs from those days in late 2022. And part of what I love so much about Railway is that I can work local-first, building my applications in monorepos, with or without Docker, and trust that they'll run in the Railway environment very similarly to how they run on my machine. And in order to achieve that experience building apps with S3-compatible storage, we'll need to run the storage service locally.

And I believe for that reason, the Functions primitive is just a fun novelty item, or an easy cloud-only tool to do a bit of scripting, but not a truly powerful technology like what you've done so far with "services and volumes". It all comes down to that, and the sophistication of your control plane, DNS, build layer, scheduler, scaling of replicas, how you're managing machines in the data centers --- you guys are eminent wizards of this stuff and I'm constantly ecstatic to be participating in your platform.

Anyway, just food for thought, consider developing your object storage in a way that hooks into your platform infrastructure modularly, can be packaged up in a docker image, and let us run it as just another template with a volume mounted. AND get the fees competitive slightly_smiling_face emoji Love your work and thanks again!


pedroapfilho
PRO

3 months ago

TBH, the only thing that is missing on my side is a GUI, or a script, for the migration


aditya-devalalikar
HOBBY

3 months ago

Are there any official documentation for accessing images from the bucket for public viewing? The buckets are private by default, and it is recommended to deploy a public proxy. Does it support the presigned URL mechanism for public access? Are there any detailed or thorough docs available on this?


aditya-devalalikar

Are there any official documentation for accessing images from the bucket for public viewing? The buckets are private by default, and it is recommended to deploy a public proxy. Does it support the presigned URL mechanism for public access? Are there any detailed or thorough docs available on this?

timomeh
EMPLOYEEOP

3 months ago

Docs will be coming in the future before we GA buckets. Presigned URLs are supported. For public access without a presigned URL, you can use a public proxy like imgproxy (which has S3 support) or https://railway.com/deploy/s3-proxy. Template support for Buckets will also be coming to make deploying these usecases even easier.


knollfear
HOBBY

3 months ago

I made a POC so I could understand how this all works. https://github.com/knollfear/ImageUploader. I am able to deploy this to railway direct from github and it appears to handle the uploading directly to the bucket via a signed URL and a POST request. It can also displaying the image with a signed URL.


ajaykarthikr
PRO

3 months ago

Right it's difficult to find from where to create a bucket. Ideally would be better have that option in the create modal itself.


ajaykarthikr

Right it's difficult to find from where to create a bucket. Ideally would be better have that option in the create modal itself.

timomeh
EMPLOYEEOP

3 months ago

We'll add it to the create modal and the command palette latest when Buckets go into GA


nlvogel
HOBBY

3 months ago

I'm looking forward to this being GA so I can make some templates for fully contained projects! I'd love to be able to have a file system-type view to see what files are in the bucket from the project canvas. Similar to how I can see what's in a database in a table, it would be great to know what's in the bucket at any given time. This includes the ability to delete files as well.

I've seen a few mentions about a CDN, so I'll cast another vote for that. It would really put everything I need in one project and simplify future workflows while minimizing complexity.


thejufo
HOBBY

3 months ago

  1. S3 compatibility

  2. CDN


evhaus

The brutal reality is that if it doesn't compete on price with S3 itself it will be tough to justify making the move. There's very little "feature wise" that I think I would need and just having the excellent Railway UX polish on it will probably not be good enough to justify any significant cost overhead.

version3034
HOBBY

3 months ago

Not everyone is concerned about price, price, price.

For applications and sites that are big users of storage - 100% absolutely it plays a major role.

However, for less resource intensive apps. Many people want just a one click, application where everything is all under one roof, fast and works.

Railway likely will never compete with AWS or Cloudflare unless they make that a major mission to offer that service functionality and all the growing pains that would come with it.

But for the average DEV builder, they will likely just want something that offers backups , is one click deploy, has a CDN functionality and common framework stacks. If it costs 5-10 cents more, they are likely not going to care that much.


version3034

Not everyone is concerned about price, price, price. For applications and sites that are big users of storage - 100% absolutely it plays a major role. However, for less resource intensive apps. Many people want just a one click, application where everything is all under one roof, fast and works. Railway likely will never compete with AWS or Cloudflare unless they make that a major mission to offer that service functionality and all the growing pains that would come with it.But for the average DEV builder, they will likely just want something that offers backups , is one click deploy, has a CDN functionality and common framework stacks. If it costs 5-10 cents more, they are likely not going to care that much.

tsurg
HOBBY

2 months ago

Yeah, it seems like the hobby users are concerned about price


prodoxx
PRO

2 months ago

I was going to move from Cloudflare R2 to Railway's Object Storage but I need some of my files to be publicly accessible. What I liked about Cloudflare R2 is that there is no ingress cost for that and the users can load files directly from Cloudflare. From the blog post in Railway I read that if I want to make the files publicly accessible, I have to add a public proxy to load the files. My concern is that this public proxy might incur ingress and bandwidth cost.

Can you please help me clarify these?


prodoxx

I was going to move from Cloudflare R2 to Railway's Object Storage but I need some of my files to be publicly accessible. What I liked about Cloudflare R2 is that there is no ingress cost for that and the users can load files directly from Cloudflare. From the blog post in Railway I read that if I want to make the files publicly accessible, I have to add a public proxy to load the files. My concern is that this public proxy might incur ingress and bandwidth cost. Can you please help me clarify these?

timomeh
EMPLOYEEOP

2 months ago

I assume you mean egress, not ingress. When you add a proxy service to make files public, you have to pay for the public network egress of the proxy service, yes. You could consider adding a CDN cache in front of your proxy service (for example Cloudflare's free CDN cache), to reduce egress cost by having more cache hits.


timomeh

I assume you mean egress, not ingress. When you add a proxy service to make files public, you have to pay for the public network egress of the proxy service, yes. You could consider adding a CDN cache in front of your proxy service (for example Cloudflare's free CDN cache), to reduce egress cost by having more cache hits.

prodoxx
PRO

2 months ago

Sorry, I meant egress. I'm using Cloudflare R2 right now which provides free egress + CDN for my object storage. Can you please help understand what benefits I'll have in moving my files from Cloudflare R2 to Railway's Object Storage besides the fact that they will be in the same network? Sorry, for the noob questions.


prodoxx

Sorry, I meant egress. I'm using Cloudflare R2 right now which provides free egress + CDN for my object storage. Can you please help understand what benefits I'll have in moving my files from Cloudflare R2 to Railway's Object Storage besides the fact that they will be in the same network? Sorry, for the noob questions.

timomeh
EMPLOYEEOP

2 months ago

It's about allowing you to ship faster, for example: you can use bucket credentials as service variables instead of copy-pasting them from Cloudflare's dashboard; we automatically create a separate bucket and credentials per environment; you don't have to add your credit card to another provider and configure yet another usage limit.


timomeh

It's about allowing you to ship faster, for example: you can use bucket credentials as service variables instead of copy-pasting them from Cloudflare's dashboard; we automatically create a separate bucket and credentials per environment; you don't have to add your credit card to another provider and configure yet another usage limit.

aditya-devalalikar
HOBBY

2 months ago

Could you please confirm if there are any upcoming pricing plans for storage buckets, and what potential charges (such as storage size, read/write operations, or data transfer) we should expect?


aditya-devalalikar

Could you please confirm if there are any upcoming pricing plans for storage buckets, and what potential charges (such as storage size, read/write operations, or data transfer) we should expect?

timomeh
EMPLOYEEOP

2 months ago

Adding pricing for buckets is planned for this quarter, and we'll announce the pricing once we made a final decision what it will be. I know that pricing is an important consideration to make before moving to Railway's buckets for your production projects.


bramsuurdje
HOBBY

2 months ago

Is it true that buckets with S3 support is already a thing? Maybe I'm missing something here but when I'm in a project I'm able to create a bucket. but not when i click on create in the top right.


bramsuurdje

Is it true that buckets with S3 support is already a thing? Maybe I'm missing something here but when I'm in a project I'm able to create a bucket. but not when i click on create in the top right.

timomeh
EMPLOYEEOP

2 months ago

Yes, you're right. S3 Buckets are already a thing. Right now you can only create a bucket in the context menu when you right-click on the project canvas. They are right now not visible in the Command Palette or the "+ Create" button. But we'll finish the work on it this quarter


Anonymous
HOBBY

2 months ago

Would be a nice quality of life improvement for a bucket to expose a ${{bucket.URL}} variable that expands to the full s3:// URL.


Would be a nice quality of life improvement for a bucket to expose a ${{bucket.URL}} variable that expands to the full s3:// URL.

timomeh
EMPLOYEEOP

2 months ago

Good point. Out of curiosity, can you share what's your exact usecase? Is it a specific library/framework that needs the full s3:// url?


paulscan
PRO

2 months ago

@timomeh Feedback for you – I switched an in-development project from a MinIO instance (within the Railway project) to Railway's buckets since it seemed easier to deal with, but my "gotcha" was realizing that there was no public access option. I'm storing processed images that should be exposed to public users (via a Flask app) when referenced, but I didn't realize there was no public option.

Each user may need to access 10-25 images for my use case, and I didn't realize you couldn't just pre-sign a whole path prefix (folder) for access to a range of images.

I see I can proxy, but that's just... more to do and maintain. I might as well use the MinIO template or S3/R2 (also more to do and maintain). I ideally want to avoid all of that and want "Railway frictionless".


louisdeconinck
HOBBY

2 months ago

Is there a way to see what's inside the bucket?


louisdeconinck

Is there a way to see what's inside the bucket?

x-lem
HOBBY

2 months ago

As far as I can tell not via the UI. This would be a very helpful feature tho (even if it was just viewing to start with).


goatkenziee
PRO

2 months ago

Subject: Service healthy but edge returns 502 for all requests

Project: Oriumai / nEW ORIUMAI V2

Service: OriumAI-v2 (e44446a2)

URL: https://oriumai-v2-new-oriumai-v2.up.railway.app

Issue:

My service shows "Active" status and deploy logs confirm:

- Uvicorn running on 0.0.0.0:8080

- Health check responding: "GET /healthz HTTP/1.1" 200 OK

- Database connected, app fully operational

However, ALL external requests return 502 Bad Gateway:

- GET / → 502 (59ms)

- GET /healthz → 502 (58ms)

- GET /home → 502 (1-3ms)

The extremely fast 502 response times (1-3ms) suggest the edge proxy

is rejecting requests without reaching my container.

Configuration:

- Start command: python start.py

- Health check path: /healthz

- Port: 8080

- Proxy headers enabled

Deploy logs show internal health checks succeeding. This appears to

be an edge proxy routing issue.

Request IDs from HTTP Logs: KR1MzrtBSYW8Euy4PvyhXg, FXYh8ToBQ0yIfxq9PvyhXg

Can you investigate why the edge proxy returns 502 when the service

is healthy and responding correctly?


Anonymous
PRO

2 months ago

I'm running minio so far within Railway. Not sure what would be different. I typically lean toward more portable architectures as they are the foundation for a more resilient business.


I'm running minio so far within Railway. Not sure what would be different. I typically lean toward more portable architectures as they are the foundation for a more resilient business.

timomeh
EMPLOYEEOP

2 months ago

Price. Storage will be much cheaper and no compute costs. Could you share more about your portability concerns, what makes selfhosting minio feel more portable than hosted buckets? Buckets are S3-compatible.


jeffsburton
PRO

2 months ago

I currently use backblaze, and my use case is very simple (s3 compatibility, storing/retrieving files, no versioning, etc). I would switch to railway if you offered a service like that at a similar price point.


chrvillaruel
PRO

a month ago

Why bucket is not available on my services? I enabled bucket on my settings feature flag page


chrvillaruel

Why bucket is not available on my services? I enabled bucket on my settings feature flag page

timomeh
EMPLOYEEOP

a month ago

Did you right-click on the canvas? The bucket option is currently only there while it's in Priority Boarding


timomeh

Did you right-click on the canvas? The bucket option is currently only there while it's in Priority Boarding

chrvillaruel
PRO

a month ago

Oh shoot, I was trying to add it via add services. Thank youu!


seanknowles
PRO

a month ago

Cross region replication for objects, like minio can do.


timomeh
EMPLOYEEOP

a month ago

We've just released buckets into GA. To answer your most burning questions:

Pricing: $0.015/GB-month, free egress, free operations

Docs: Yes, we now have docs for buckets: https://docs.railway.com/guides/storage-buckets

Creating a new bucket: No need to right-click on the canvas anymore. You can add buckets with the "Create" button, and with the CMD+K command palette.

Private Buckets: Buckets are still private only. If you'd like to use public buttons, please leave your feedback in this thread and tell us your usecase. It really helps us to prioritize, and to build the best solution, when we know what people want to build with it.

Anyone who already uses buckets has free buckets until end of your billing period. I've additionally reached out to some users who used buckets a bit more, to give them more time before they are billed for them.

Any other feature requests and feedback is very welcome. Your feedback helps a lot!


quintal-william
PRO

a month ago

Thanks for implementing this! I just tried it for the first time and it was seamless to set up. I also like the pricing model.

The key feature I'm missing most right now is lifecycle rules. My use case: "Delete a file if it still has a status=pending tag a day after uploading it".

Currently I have a cron job running as a workaround for this.


thuvien-lgbt
HOBBY

a month ago

When will it available for Singapore region?


jasperchess
PRO

a month ago

Not sure if there is another thread on an object lifecycle feature, but that is pretty critical for our workload. As @quintal-william mentioned, deleting status=pending objects, but additionally, deleting objects within a certain path older than n hours/days/weeks/months.

Also a cheeky one, but I didn't see any mention of it. Is there possibility of discounts for large amounts of data*? The price is amazing, and if I was starting fresh I would definitely use railway buckets, but it matches R2 (what we currently use).

* We're not massive scale, at 6TB, but growing by about 20% month-on-month


shoeboom
PRO

22 days ago

What's the best way to sync uploads with pre-signed upload urls. Other than uploading through a proxy.

For aws and tigris i believe this is done through lambda and web-hooks respectively.


Loading...