Show HN: I built open source file sharing solution using AWS S3
https://s3-file-share-for-free-35n2u.kinsta.app/By rohitghumare at
I created a 100% Open source Company-wide Self-hosted File Sharing Solution for TeamsRecently, I wanted to share HD images and video files with my graphic designer. She’s exceptional at her craft but isn’t familiar with AWS S3
So, I got an idea and built this.
Github Repo: https://github.com/rohitg00/s3-file-share-for-free
Detailed Guide: https://ghumare64.medium.com/i-built-a-company-wide-self-hos...
billev2k | 1 comment | 3 days ago
ryanianian | 1 comment | 3 days ago
This is not that difficult if you're already invested in an identity ecosystem, but a right pain without something to bootstrap it.
On the plus side, AWS creds can be made to be temporary and limited in scope to just the nouns/verbs required. Creating and vending those tokens is an exercise for the reader.
420official | 1 comment | 3 days ago
And of course generating OIDC PKI JWTs is pretty easy and well documented elsewhere.
The harder parts in my mind are:
- Updating this OSS project to serve a JWK from OIDC .well-known
- Convincing people that this method of authn is safe and that those keys are securely stored
rohitghumare | 0 comments | 3 days ago
jatins | 1 comment | 3 days ago
lizzas | 1 comment | 3 days ago
Cloning and installing is also an option.
rohitghumare | 1 comment | 3 days ago
lizzas | 0 comments | 3 days ago
There should be instructions on how to set that IAM user up (dont make it the root! It just needs full access to a single bucket ideally).
bhawks | 2 comments | 3 days ago
Give one of the implementations a try: https://github.com/psanford/wormhole-william
zikduruqe | 1 comment | 3 days ago
https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareO...
gregw2 | 0 comments | 3 days ago
Google Cloud, Backblaze, Digital Ocean, Cloudflare, Azure all have this presigned URLs functionality too (I checked for the degree of lockin before I started using S3's presigned URLs in a set of bulk-data APIs at one place I've worked.)
GCP: https://cloud.google.com/storage/docs/access-control/signed-...
Digital Ocean: https://docs.digitalocean.com/products/spaces/how-to/set-fil...
Hetzner: https://docs.hetzner.com/storage/object-storage/faq/buckets-...
Backblaze: https://backblaze-prod.us.document360.io/apidocs/b2-get-down...
Cloudflare R2: https://developers.cloudflare.com/r2/api/s3/presigned-urls/
Azure: https://learn.microsoft.com/en-us/rest/api/storageservices/d...
etc.
Also, presigned URLs can be used not just for downloading files with a temporary URL but can also be created for uploading files with a temporary URL.
ryanianian | 1 comment | 3 days ago
But it is not great if you want to distribute a file multiple times, asynchronously, or with other functionality gained from centralized storage. This is where people typically use email, dropbox, or perhaps the tool from TFA.
nijave | 0 comments | 3 days ago
Non-free Resilio Sync basically automated this
up2isomorphism | 1 comment | 3 days ago
nobodywillobsrv | 0 comments | 3 days ago
rohitghumare | 0 comments | 3 days ago
Testing Other Cloud Providers:
Backblaze B2 ($5/TB/month)
Wasabi ($6/TB/month)
Google Cloud Storage ($20/TB/month) - I am ready to deploy to production.
DigitalOcean Spaces ($5/TB/month)
Cloudflare R2 ($15/TB/month)
Hetzner Storage ($3/TB/month)
scarface_74 | 1 comment | 3 days ago
woranl | 1 comment | 3 days ago
scarface_74 | 0 comments | 3 days ago
There really isn’t a need for them. If you are running the application on any AWS compute - EC2, Lambda, ECS, EKS, etc, there is an IAM role attached to the VM that gives code permission to run.
On the client facing side, it should be connected to your Orgs SSO solution so when a person leaves the company, you deactivate the user in one place.
Besides, I can’t think of any organization of even 2 people that isn’t already using Office365/OneDrive or Google/GSuite with plenty of shared storage. The cost per seat for either is $6 - $25 per user.
perching_aix | 1 comment | 3 days ago
justmarc | 1 comment | 3 days ago
perching_aix | 0 comments | 3 days ago
As far as sharing files goes though, yes. I mean, it allows you to... share files, and do so in a controlled manner. Even edit them in-app as long as they're of a supported format.
iJohnDoe | 1 comment | 3 days ago
rohitghumare | 0 comments | 2 days ago
Just published a new release to support multiple cloud storage options.
Thanks
rohitghumare | 0 comments | 2 days ago
> We support 7 cloud providers now. > Beta storage providers are still being tested.
Stable: Amazon S3 ($23/TB/month) Google Cloud Storage ($20/TB/month) Cloudflare R2 ($15/TB/month)
Beta/Testing: Wasabi ($6.99/TB/month) Backblaze B2 ($6/TB/month) DigitalOcean Spaces ($5/TB/month) Hetzner Storage ($4/TB/month)
mickael-kerjean | 3 comments | 3 days ago
Were you familiar with Filestash before starting this? If so, was there something specific you felt was missing that inspired you to create your own solution? Would love to hear your thoughts.
github: https://github.com/mickael-kerjean/filestash
demo on s3: https://demo.filestash.app/login?type=s3&access_key_id=Q3AM3...
TwoNineFive | 0 comments | 3 days ago
rohitghumare | 0 comments | 3 days ago
lomkju | 1 comment | 3 days ago
Could you tell me why Google Drive didn’t work for you?
Google Drive seems to cheaper and has better UX than S3 - $8 for 2 TB (India) - Supports file versioning - 750GB bandwidth per day
folmar | 0 comments | 3 days ago
What works bad: * folder with lots of medium size files * large ZIP * video bigger than a few tens of megabytes
7bit | 1 comment | 4 days ago
rohitghumare | 0 comments | 4 days ago
szszrk | 1 comment | 4 days ago
Any plans on making it compatible with other s3 implementation (other cloud vendors, local minio.io etc)?