Show HN: I built open source file sharing solution using AWS S3 (s3-file-share-for-free-35n2u.kinsta.app)
I created a 100% Open source Company-wide Self-hosted File Sharing Solution for Teams
Recently, 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...
39 comments
[ 0.27 ms ] story [ 98.8 ms ] threadAny plans on making it compatible with other s3 implementation (other cloud vendors, local minio.io etc)?
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.
And of course generating OIDC PKI JWTs is pretty easy and well documented elsewhere.
The harder parts in my mind are:
Give one of the implementations a try: https://github.com/psanford/wormhole-william
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.
Non-free Resilio Sync basically automated this
https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareO...
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.
Cloning and installing is also an option.
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).
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.
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...
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.
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
What works bad: * folder with lots of medium size files * large ZIP * video bigger than a few tens of megabytes
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)
Just published a new release to support multiple cloud storage options.
Thanks
> 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)