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 addressbuster add-domain blog.example.com
- Modify CNAME of DNS provider.
- Name:
blog
- Value:
blog.example.com.
- Name:
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.