WebSub Hub for IPNS

This is a WebSub (previously known as PuSH, PSHB, or PubSubHubbub) hub for all content on IPFS published under a dnslink or IPNS hash. It accepts hub.topic of IPNS NURI, or a URI with any scheme (including http, https) where the domain name has a published dnslink to an IPFS resource.

How to publish a WebSub-enabled resource at an IPNS path

Simply add the correct self and hub advertisements to your resource. For example for HTML or Atom feeds, add:

<link rel="self" href="https://ipfs.io/ipns/example.com/example-feed.atom" />
<link rel="hub" href="https://websub.ipfs.singpolyma.net/" />

You use HTTP URIs because that's what most WebSub subscribers are expecting, but the hub will fetch your content over IPFS. There is no need to ping the hub when you update your content, simply publishing your IPNS or changing your DNS record is enough.

Anything special for subscribers?

Yes! Subscribers can subscribe to any /ipns/... NURI even if it does not indicate WebSub support in any way. This includes both IPNS and dnslink paths, as well as URIs where the DNS name has an associated dnslink.

In addition, the pings from the hub will contain a Link: <dweb:/ipfs/cid>; rel="self" header if you want to know the current IPFS path of the resource you're being notified about.

Some odd things: the Content-Type header will be whatever go-ipfs infers from the content and path, since there is no metadata about MIME type in IPFS yet. If you specify a hub.secret (maybe you're not on TLS yet?) resources are limited to 100K. Even for Atom and RSS feeds, this hub does not diff between the last ping and the current content, you always get the full content currently present at the path.