Under the Hood

How I make this site, host it, and share it peer to peer

WordPress on Docker

I make this site with wordpress.org on my MacBook using docker. Docker allows me to easily run a server stack directly on the MacBook, or any computer, which means the website and the editor load extremely fast and I can work on the site offline. Thanks to the team at Wodby, it works. And thanks to Anders Norén, it looks nice.  Here are the quick notes on how I do it. I’ll make a cheat sheet soon.

Static site on Gitlab pages

I host the static site, thanks to Patrick Posner, on pages at winstonford.gitlab.io and winstonford.github.io. I also host a copy on the local network with an old iPhone 5s and an iPhone 12m running a python webserver. Notes on that here. Also hosting locally on a google pixel 3a running ubuntu touch. Mostly recently I installed a lamp stack and wordpress on a pixel 3a running android. Now I have created the site and git pushed it to the repos using the phone as the server.

P2P with Hypercore and IPFS on Beaker and Brave

I distribute the site peer to peer using two browsers, Beaker and Brave. Beaker runs hypercore and Brave runs IPFS. Beaker used to run on DAT, and the founder of IPFS used to be on the DAT dev team, so they both may share common origins. 

If you are interested, download the browsers below and click on the various protocols. Those links will work only if I’m running Beaker and IPFS on the MacBook, which is unlikely. But I am considering on running IPFS on android.

Hypercore on Beaker

winstonford.com = hyper:// #

Note: The data at the hyper:// # can change, and Beaker makes it push button easy to sync those changes from a local directory, the same directory that I use to push the static site to gitlab.


IPFS on Brave

winstonford.com = ipns : // winstonford.com != ipfs:// # (a snapshot)

Note: The data at the ipfs:// # can not change, so it’s a snapshot. For each site update, I import the whole site into a newly minted ipfs:// #, and then I update the DNSLink TXT record for winstonford.com at Cloudflare dns to point to the new hash. I don’t know how long the ipfs hashes live or if there’s a way to delete them. And sorry ipns : // winstonford.com is not a link.. for some reason static gen renders it wrong. Just paste it in Brave and delete the spaces. 


Note: When a protocol link is clicked in a browser that doesn’t support it, like Safari or Chrome, and an appropriate browser is installed, a prompt will appear to open the link in the appropriate browser. However, in the case of ipns:// and ipfs:// links, the prompt targets IPFS Desktop, which opens the website directory and does not render the index.html. 

A browser named Agregore will load the website successfully when the above protocol links are pasted directly into the address bar. Unfortunately, when Agreogre is installed, and the above protocol links are clicked in another browser, the browser will prompt to open all above protocol links with Agregore, and when I agree to the prompt, an Agregore window appears, but Agregore does not open the link. AFAIK, protocol declarations on MacOS live in the Plist.info file of apps, and unlike a system setting for default browser or mail client, I am not aware of a system setting for default browser for protocol. It seems the last app installed which declares the protocol in its Plist.info is the target browser in the prompt. So for now, I had to trash Agregore to restore working protocol prompts. 

I hoped that trashing IPFS Desktop might prompt to open those links in Brave, but it does not. So for now I have kept IPFS Desktop.. even though its IPFS functionality appears largely duplicated in Brave. 

As for Beaker, everything works perfectly. I can edit. I can sync. Protocol links work.. it just needs DNSLink TXT record functionality. And yet Beaker is the browser that’s sposedly being sent out to pasture! Any insights or updates on this stuff would be much appreciated 🙂