Avatar
Stuart Bowman
ff27d01cb1e56fb58580306c7ba76bb037bf211c5b573c56e4e70ca858755af0
Building Satellite https://satellite.earth šŸ“

Im stoked about this. Independently governed communities are going to be a huge driver of adoption. I’ve been working on a ā€œsubredditā€ concept and am almost ready to deploy it to Satellite. Next week šŸ¤ž

It doesn't modify the file at all. I thought about stripping exif by default but the problem is that if you modify the file on the server it breaks the client's ability to verify the hash(es) returned by the server by computing it locally. One solution could be to strip the exif on the client before uploading, but that would only work for images. I'll probably add it as an option at some point.

Thanks for the shoutout. It's awesome that nostr.build provides a free, super-clean, standalone hosting service — that feature set alone has done so much for the nostr ecosystem.

I reckon Satellite CDN can fill a different niche for podcasters and long-form video content creators.

I think you've done an amazing job with nostr.build.

I build Satellite CDN as a way to solve the problem of hosting *very large* files that can incur significant hosting costs.

If I didn't charge money it wouldn't be scalable.

The backend is Cloudflare R2, which does not charge for the data transfer, only storage. Satellite CDN is essentially a wrapper for R2 that handles auth with nostr, computes NIP-94 params (e.g. torrent sha256 and torrent infohash) for each file uploaded, and indexes the files that have been uploaded.

It's perfectly scalable because I've just replicated R2's pricing structure.

If this were a default selection it would, for the sake of UX, need to come with some way of handling the fact that this is a paid service.

Also clients would need to handle signing an NIP-42 auth event because that's how Satellite authenticates each uploads (that's a big difference from nostr.build)

Otherwise it should be no problem to integrate with other clients. The server handles all the necessary NIP-94 hashing and returns those params to the client (sha256 hash, infohash, etc) which the client can *optionally* verify and sign.

Working right now to get the API docs ready.

It’s priced at the BTC equivalent (live exchange rate at time of payment) of $0.05 USD per GB per month. So it costs 5 cents to store 1 GB for 1 month. Or 60 cents to store 1 GB for one year.

It’s like one of those pay as you go phones - there’s no automatically recurring charges. You just top it up with sats whenever you need to keep your balance positive. And you only get charged for whatever is currently hosted, so if you delete stuff that you don’t need to be hosted anymore that will extend your credit. Data transfer is free.

The reason it works like this is because it made the most sense to replicate the pricing structure of the underlying object storage (Cloudflare R2)

There’s no good solution when it comes to centralized providers. Fortunately NIP-94 + BitTorrent mitigates this issue, and in fact my next step with this project is to implement a ā€œfallback to webtorrentā€ capability when viewing videos on Satellite (the current implementation ā€œtorrentifysā€ every file that’s uploaded).

Cloudflare R2 is actually great from an economic standpoint because they don’t charge for data transfer - only storage (unlike S3). That’s what’s makes it possible to have flat rate per-GB-stored-per-month pricing at all. It could never work if a person uploads a video that goes viral and now they have a 10,000 dollar hosting bill :D

Thanks! I hope that being able to upload large videos will unblock some use cases for nostr

Correct. The link file is the SHA256 hash + extension, just like nostr.build. There's no public "list" function, so unless someone already knows the hash, it's private unless you share the link.

There are some weird intermittent connectivity issues on iOS mobile that I've been trying to isolate for weeks