I love keybase.io for many reasons. Keybase provides social-proof based key exchange but also integrated encrypted messaging, file hosting, git, and even a Stellar Lumen wallets.

For the privacy focused individual, Keybase is great because they have an easy sign-up process and you can sign-up over Tor with minimal effort.

Today’s quick post is a reminder that one of the useful things you can do with Keybase is use Keybase to host simple static websites.

For this, you’ll need to be running the Keybase client on your computer. This will expose the /keybase file-system.

You can use a static website generator like Hugo, to build a static website, and then copy those files over to /keybase/public/{yourusernamehere}. Once that’s done, you can access your website via https://{yourusernamehere}.keybase.pub.

There are a couple limitations with this approach:

  1. You don’t have control over the domain (beyond what you select as your username). Keybase is currently free and might choose to stop offering this service at any time. You own the content, but you would have to find a new domain.
  2. It’s slower than normal hosting

It is, however, incredibly easy to get up and running and doesn’t require you to submit payment information (preserving anonymity once payment is involved is hard). Files posted to your Keybase public folder are also digitally signed and verifiable by others. Users who follow you will have access to the same files (verified) in their /keybase/public/{yourusername} folder and can inspect/view those if they’d like to ensure they are viewing your content.

It’s possible to have hugo publish directly to your keybase public folder. However, on Linux anyways, I run into errors with Hugo trying to modify permissions and file creation times and had to add additional configuration to my config.toml file to disable that behaviour. Another, probably better option, is to let hugo build to the a separate folder and then use rsync to push that into your keybase public folder.

publishDir = "/keybase/public/shardiame"
noTimes = true
noChmod = true