Free blog hosting using Ghost, Buster and GitHub Pages

I considered several blog engines before starting this blog. First, I wanted an unexpensive and portable solution. Also, I wanted to avoid ads. I considered a self hosted Wordpress but Wordpress has become a huge and complex pile of code. I'm using Markdown and git daily, so an engine based on them would be nice. I tested Jekyll with Hyde and Lanyon and Octopress but Ruby... no thanks. I prefer Python, so I took a look to Pelican but it feels less supported. So no good solution...

I came accross Ghost which seems to gain momentum. Ghost lets me write in Markdown syntax and is based on Node.js. The default theme looks good enough and the community support seems ok. Still, I needed a database and a Node.js instance and so a server. I'd prefer to use Github Pages instead, so static HTML pages.

Buster to the rescue! Buster (Ghost, Buster, got it?) is a Python script to extract static content from a running Ghost instance. OK! Sound like a plan.

Installing Ghost

I like to use nvm to manage the version of node I'm running.

$ nvm install 0.10.30
$ nvm use 0.10.30

Then installing Ghost is easy enough. Download the zip from Ghost download page. Unzip it.

$ cd ghost
$ npm install --production

And run it

$ npm start
$ open 127.0.0.1:2368/ghost/

Configure Ghost in the browser.

Installing Buster

$ pip install buster

GitHub pages

  • Create a new repository on GitHub
  • cd ghost
  • buster setup and enter repository address
  • buster add-domain blog.example.com
  • Modify CNAME of DNS provider.
    • Name: blog
    • Value: blog.example.com.

Worflow

  • Type article in the web interface of Ghost
  • When article is ready to be published
    $ buster generate --domain 127.0.0.1:2368
    $ buster preview
    $ buster deploy

Conclusion

Since you are reading this conclusion, it's running. I still need to pick a theme and add a couple of features I'm missing.

  • About page
  • Syntax hightlighter
  • Analytics
  • Comments, probably using Disqus
  • Eventually a search engine but with static websites is not always easy. I will check Tapir and Tipue