Decentralized Blog

I am doing some research on decentralized technologies. My first goal is to find a way to publish a blog in a decentralized manner in order to keep track of my findings. I'll start by publishing it on Neocities, which I like. So, ok, publishing it on Neocities, which is a central server, might not really represent the best effort for decentralization, but, Neocities does archive its sites to IPFS. So I guess it's a good start.

Read more about it here: https://blog.neocities.org/blog/2015/09/08/its-time-for-the-distributed-web.html

Another reason to publish the blog on neocities is that, as I understand, if I want the blog to be available through IPFS, and I am the only one to host it, my IPFS node needs to be online all the time for the blog to be available. If more people copy it then the probability to be online goes up. But for the moment I'm the only one. And I will install an IPFS node on my laptop, which is not online all the time. On the other hand, Neocities is. (Further down the road I plan to have an IPFS node on a home server which should be online most of the time.)

Let's check if the blog is reachable by installing IPFS. Instructions should be found here: https://ipfs.io/docs/install/ I'll install it on Arch Linux with the official package go-ipfs (instructions can be found on https://wiki.archlinux.org/index.php/IPFS).

At the moment the URL for this blog is https://decentralized.neocities.org/. Since Neocities has support for IPFS DNS (https://blog.neocities.org/blog/2017/08/07/ipfs-dns-support.html), I should be able to view it on my local node: http://localhost:8080/ipns/decentralized.neocities.org and also on a public gateway node if I don't have IPFS installed: https://ipfs.io/ipns/decentralized.neocities.org.

It can be tested with

dig TXT decentralized.neocities.org

That should return the latest hash for the site.

Neocities publishes an IPFS hash once per day when sites are updated (accessible from every site profile). That hash should also be useful to load the site from IPFS.

The blog itself is made using Pelican (https://blog.getpelican.com/), which allows to build static html pages. That is different from a typical blog like say, Wordpress, which requires some server side logic execution and a database. By using only static files, a blog has fewer dependencies when it comes to decentralization. It only needs to use content distribution systems, and does not need to execute anything.

I find the Firefox addon called IPFS Companion quite useful. It can detect those DNS and load the site through IPFS instead of the web. It also detects if the content is linked through a geteway and load it through your own node instead. It turns ipfs addresses into links as well.