ENS & IPFS
By utilizing the Ethereum Name Service (ENS) for resolution and the Interplanetary File System (IPFS) for content hosting it is possible to decentralize a static website while retaining the predictable URL.
My primary setup leverages GitHub pages to host a blog compiled with Hugo - linked to my domain name. Whenever I want to publish a change, I build the latest website from my markdown content using my custom theme and push it to a separate branch in my personal repository.
The process of publishing to IPFS is slightly different, first you must have access to a node which can retain the website bundle - ideally pinned to a persistent node you control, but once the content is disseminated this is not strictly required. See the official docs to get started, once you are setup we can run a local node daemon (ipfs daemon
) and push the target directory (ipfs add -r public
) generated by hugo
. The final content identifier of the directory is all that is required to load the website through an IPFS gateway - https://gateway.ipfs.io/ipfs/<CID>
. After registering a custom name with ENS, the final step is to add a content record which links to this CID. The resolver will then interpret subsequent HTTP requests through a web3 compatible extension and redirect to an IPFS gateway.
Navigate to gregdhill.eth to see this blog on the dweb!