3rd Party File Storage (that requires a Bubble user login to access)

Hi folks, been hunting around but not finding what I’m looking for exactly.

Bubble’s storage is really light on features and pretty expensive (relatively speaking).

I have a pretty simple set of needs:

  • Ability to organize files (folder structures)
  • Ability to restrict access based on user permissions

I know there’s AWS, Wasabi, GCS, etc.

What’s the best system out there that does the basics well for a reasonable price? Also, what’s the best plugin to access and manage the file system?

Also please confirm how to go about managing permissions based on User access.


If you want cheapest then Wasabi, I use that one

This is all what you would build, a nice UI to handle folders. You would make a “File” datatype containing all the fields like filename, URL, object key, file size. Then you add privacy rules so only users see their own.

Wasabi apparently has restrictions on public now so it doesn’t seem to fit my use case since I’ll need to stream videos and/or display photos and files.

I’d rather have a simple folder structure so that if I choose to move, it’s relatively easy to move the entire folder structure.

Feels like that would be very difficult with Bubble.

Any other ideas?

I don’t structure the files actually in the bucket how the user would see it, I just bury every file in it’s unique ID, so its like appstorage/[unique id]/filename.ext

Like how Bubble just dumps all files in appforest/[some app unique id]/f[unique id]/filename.ext

Then you handle the visual file structure in Bubble by associating Files with a datatype Folder

If it’s heavy video streaming might want a CDN anyways to cache all the files. (This is what Wasabi support suggests for public files) But Wasabi not allowing public files is a good thing for you, because it keeps all files private unless you generate a pre-signed URL to download/view the file on demand. So you just make sure to only generate the URL if the user has permission

Sure, but from what I’ve read the URL only lasts 12 hours. So now I’ve got to manage some other process to generate a URL for every file that they might have to view in real time? Seems kind of convoluted unless I’m missing something?

Thanks for all the interaction, by the way!

Yea it’s by design that you generate it on demand, so only need the URL valid for a certain amount of time. Like if a user loses permission for a file, you don’t want them to just bookmark the link to the file, after X amount of minutes/hours the link wouldn’t work anymore.

I just have a Google Cloud Function that generates the signed URL. Then you can use the API Connector setup as Data. So you just stick that data source whenever you need a URL and it securely generates a new one on demand :blush:

When you mark a Bubble file as “private” thats exactly what happens, when you try to view the file Bubble checks to make sure you have permission, if so it generates a presigned URL for you to view, that’s why the file has all the addition parameters in the URL for private files. And every time you view a private file the URL is slightly different (generating a fresh one every time)

No, you can set a specific time for the pre-signed urls.

I have an app where we store videos on wasabi and since we want it public, we just set the expiration date to +999999 hours iirc.

You mentioned you’ll be streaming the videos. If your use case fits wasabi’s egress policy, I suggest you go for it.

On their support page for this they say

Please note: Pre-signed URLs that are authenticated with an IAM user are valid for a maximum of 7 days.

I made a User in the Wasabi console to make a new API key, are you using your main admin account keys to get around this limit?

And good point on the egress policy, for my usage it is archival, write a lot and just read some occasionally.

Yeah, I’m using the main admin account. I haven’t created any sub users.

Also, we have another app that’s using Wasabi but we don’t need to use pre-signed URLs to make it visible to the public. We just make the bucket public - making it very easy for us haha. This account, however, was created prior to their update wherein users would be unable to set their bucket to public.

1 Like

Wasabi policy doesn’t prevent a bucket from being public, it is subject to their approval depending on your use-case.

ah yeah, thanks for adding that @redvivi

You would need to email them first and ask for approval.

I forgot about that since when we asked for approval for a different app a few months ago, we got rejected :sweat_smile:

If you are looking to upload videos and Photos for streaming purposes, I suggest Mux one of the best media storage for streaming purposes, plus the URL never expires. and you can restrict access to a group of people. if I am not mistaken.

As @ntabs suggested, wasabi egress may raise an issue if your sole purpose is to stream. wasabi is not design for streaming, what mux do it encode you file in multiple sizes and make them less light weight to user to stream.

Just curious , if you make the bucket public , aren’t anyone with little knowledge on how to manipulate URL and usage of dev tool, can view the root level of bucket and all the video be available to him.

Now sure, just curious. :thinking: