The main reason behind the move was wanting to experiment with hosting my blog on the decentralised web. Converting the blog over to static website generator gives me full control to host the site wherever I want. I had been wanting to migrate off of Wordpress for a while, the extended home time due to Covid-19 gave me the time I needed.
It took me about a week of evenings to convert and clean it up. You can read more about How I converted my blog from Wordpress to Jekyll.
Browser -> Cloudflare IPFS gateway -> IPFS peers
IPFS + Cloudflare gateway
Here is a breakdown of the components that were used to host this blog and make it available for access.
Site storage on IPFS
I currently do not have the site stored and hosted on a single centralised server, instead it has been pinned on various decentralised servers on IPFS network. One of the services I am currently using is Pinata in addition to my own VMs, to give it more resilience.
Each time I generate my blog and add to IPFS, I will get a new cryptographic hash that represents the root of my site e.g.
QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o. You use the hash to request the file from any computer in the network that may have it.
Ethereum Name Service
To help provide decentralised access to my blog, ENS is used to create an easier to use ‘friendly name’. Requesting
blog.davidburela.eth will retrieve the website’s IPFS hash from the blockchain, and then retrieve the website from IPFS peers that are hosting it.
You can see the entries in the ENS dashboard https://app.ens.domains/name/blog.davidburela.eth
Accessible on the Decentralised web via IPFS enabled browsers At this point, the blog is available to those with an IPFS enabled browser. There is a good breakdown of the current stage of adoption across the browsers available on the IPFS blog https://blog.ipfs.io/2019-10-08-ipfs-browsers-update/
Cloudflare to serve to normal browsers
I am then using the Cloudflare IPFS gateway to look up the hash of my blog, retrieve it, and return it to the browser. Their recent improvements to their IPFS gateway made it possible for me to now host my blog there without issue.
blog.davidburela.com records CNAME: blog.davidburela.com cloudflare-ipfs.com TXT: _dnslink.blog.davidburela.com dnslink=/ipfs/<the latest hash>
update: I have the dnslink entry pointing at the ENS so I only need to update it in one place.
TXT: _dnslink.blog.davidburela.com dnslink=/ipns/blog.davidburela.eth