Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: IPFS-Deploy – Zero-Config CLI to Deploy Static Websites to IPFS (github.com/agentofuser)
150 points by agentofuser on May 1, 2019 | hide | past | favorite | 34 comments

Hi! Author here. This is my first npm package, so I'd love to hear feedback on how I can improve it, what tools I can use for that, etc. Thank you for checking it out :)

Is it possible to update a website hosted on IPFS and push those changes to all IPFS users?

The equivalent on AWS Cloudfront would be breaking the cache, so all users would see the most recent version.

I'm not sure if this would work on IPFS because it seems more like a P2P network and there might be many different (and old) versions of the site at different locations in the system, with no way of controlling who sees what.

Not an expert, but:

IPFS is p2p, but all the content is accessed only by a hash, so the same address always refers to the same version; when you update the site, you're actually creating a new address, leaving the old untouched.

Using Cloudflare, you can tie a regular domain to one of these addresses, but that "tie" is only stored there, so when you push a new version, you can update the Cloudflare settings, and everyone connecting to the domain will see the new version "immediately", even if the old version still exists in the p2p network.

ipfs has its own mutable content adressing named IPNS

Does it make sense to add support for Signed HTTP Exchanges (SXG) to this?


Good idea! I've been following Web Packaging from a distance, so would need to do some research, but from the looks of it, ipfs-deploy could automate packaging up a directory into an SXG before uploading it to pinners. Gotta figure out how to the signing part though. I'll look into it!

Great job, simple and easy, as a tool should be. I'm definitely gonna use it.

Thank you! It makes me very happy to hear that. Feel free to ping me if you run into any trouble (even if it's just a non-showstopper like some unnecessary friction or papercut.) Also keen on hearing what services I should add next. I don't use AWS Route 53 but I think it would be a good option to support for instance.

We're working on a small browser extension for static ipfs websites where this comes in handy. I'll ping to let you know how it goes.

With IPFS what are the costs to keep your site live?

It is like torrent, so you need to have a seeder node all the time - it is called “pinning” in IPFS.

There is a number of services, the price seems to be around $0.3/(gb*month)

How does that compare with AWS? Is IPFS worth using for a CDN? (apologies for the acronyms...)

If you pin to IPFS and then use a public http gateway like https://cloudflare-ipfs.com, which caches and distributes via their CDN, you'll have a good CDN alternative.

If you just use IPFS directly with a non-CDN'd, non-cached http gateway, the latency will probably be prohibitive for regular web stuff.

So what stops me from abusing Cloudflare's gateway as a free CDN for petabytes of traffic? There has to be a catch?

Edit: found it. https://www.reddit.com/r/ipfs/comments/al8emd/cloudflare_ban...

But isn't it like a torrent? where if more people are viewing the item, it can be served faster from more places, like torrent seeders?

Yes, definitely. I mean, you certainly get better bandwidth and latency depending on popularity and geographic diversity of seeders, and there are even youtube-alternative websites that host videos on IPFS. But for something like browsing from one page to the next, where the payload is small and you want <200ms latency, I think just the DHT lookup might already put you above that budget. I'm guessing though, haven't made any measurements.

Who gets <200ms latency anymore when Google analytics and FB pixel tracking scripts take more than that each and most websites have them?

Those scripts are loaded asynchronously; you can start seeing content before they are ready.

In torrent when you download something you also announce yourself as a seeder. In ipfs afaik you have to explicitly pin something in order for your peer to be announced as a provider.

This means that even if your content in ipfs is popular it won’t be fast.

No, everyone with the item is a seeder in ipfs. Pinning means the node won't delete it.

I should add, since you didn't specifically mention web stuff, that it _can_ be used as a CDN for stuff that is less latency-sensitive, like software package managers. That is in fact, the main focus of 2019 for Protocol Labs, the company behind IPFS.

AWS and IPFS are so different that you can't compare then. I'd say that the right comparison of IPFS is to BitTorrent.

If I am supposed to host my website on it, I want to know how much it would cost (for a given service level). Don't really care if the tech is more like butterflies or turtles...

IPFS nodes generally cache data that has been accessed recently, so if your website is the most accessed content on IPFS you can host it for free just by sharing it once and users will have relatively quick access to it because nodes directly connected to them will probably have a cached copy already. If requests are rare, expect to host it yourself or pay a pinning service, and expect higher latency as users will be requesting content hosted multiple hops away. You should care whether the tech is butterflies or turtles, because you can't compare butterflies and turtles -- or you can, but the comparison breaks down when you ask which will get to an undefined point x quicker. If x is in the air, butterflies; if x is in the water, turtles.

AWS S3 has bittorrent support...

Yep. That is the price practiced by Pinata[1] after 1GB, and by Eternum[2] at the outset (no free tier).

[1]: https://pinata.cloud/ [2]: https://www.eternum.io/

I'm trying to learn more about IPFS for long term file storage. Do you know if these services are using "IPFS Cluster" or something like it to manage pins?

Eternum currently isn't, it's using an IPFS node. IPFS cluster might be a very good choice for pinning, I'll look into it and see if it can help.

Eternum is now using IPFS Cluster and should be greatly improved (I just pushed a bunch of bugfixes and significant improvements). Thanks for the tip!

Wow, that was really fast, congrats! I'd love to have Eternum support on ipfs-deploy, btw. Please let me know if you'd like to submit a PR and need help.

That'd be great! What sort of integration are you thinking? My JS is terrible but pinning stuff on Eternum is a simple HTTP call.

Glad you're interested :) I've opened an issue so we can continue on github: https://github.com/agentofuser/ipfs-deploy/issues/13

Afaik. in the pinning method this tool uses, it costs nothing. But you can't be sure that it will really be always live (it depends on the good heart of the pinning service you used).

If you want to really ensure it's live you should run at least one node that pins it yourself (or pay someone to do that)

Yeah both Infura and Pinata are free for up to 1Gb or something like that, which is fine for most static websites and blogs. But those are startups, so I agree that for long-term permanence it's better to do some self-hosting down the line.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact