Ghost has advanced so much this year. At this point, I highly recommend it to everybody writing a technical blog. It is time to stop fiddling with Medium and jump over.

Advantages over Medium

At least in these areas that matters to me

  • HTML tag – Embed any JavaScript anywhere on the page. Very useful to show off any interactive coding or D3 snippet.
  • Beautiful Code Card – No more pasting code to Gist, then embed
  • Integrates with Unsplash – Instant Beautiful Featured Image
  • No ads or nagging to log in or download native apps
t = "your new blog!"
print( "Welcome to {}".format(t) )

Advantages over Wordpress

  • Much faster than Wordpress for a simple blog
  • Excellent Medium-like interface while supporting much more customizations.
  • Very easy to install, and the default setup is production-ready with TLS
  • Integrates with Facebook, Twitter out of the box

Install Ghost

Ghost bundled a very well though-out CLI for a smooth installation. The easiest route, however, is to use the 1-click Digital Ocean installer.

First time starting up the droplet, it will kick off the CLI to finalize installation. Just follow the prompt, which ask only two questions. Then everything is ready, including Nginx setup and SSL certificates via LetsEncrypt. Nice!

The whole secure-by-default process literally takes 10 minutes to setup. That is excellent.

If you prefer GCP, there's a click to deploy here.

Migrate Medium Posts to Ghost

Use this tool here. Follow the steps in README. All boils down to download the existing blog as a zip file from Medium, run the python script, upload the new zip file to Ghost.


Miscellaneous things  we could do right after set up

  1. Try some code cards with syntax highlight
  2. Setup Google Analytics
  3. Look at other Integrations
  4. Setup CDN with CloudFlare – Make sure to use Strict, not Flex. The blog is already TLS enabled.  Using Flex will cause a redirect loop from http->https


  • Imported featured image in Medium show up twice. Once in Featured Image and also as the first image of a post.
  • To Activate the code card. Type ```<language> then press <enter>. Took me a while to realize that enter is important.
  • Despite an excellent code support, it does not come with syntax highlight. Although provide a great integration with prism.js in particular.