I’ve been writing on this blog since 2008, and in that time it’s been all Wordpress. In these last eight years I’ve seen Wordpress rise, become enormously popular, turn into a CMS and a replacement for web development altogether. I’ve also seen it turn into a popular vector for hackers.

In the face of both increasing complexity (it just does so much more than blogging!) and decreased security, I’ve been casting about for an alternative. The solution had to be both pleasant to use, more secure, and provide some mechanism for migrating my existing blog articles.

As of today, that solution is Ghost. I spent the weekend moving things over from the old blog, and the process was far from seamless. Ghost has been around for a couple years, but it’s still considered beta software. Here are some of the issues I ran into:

  • Ghost runs on Node.js, which I’d never tried before. A quick

apt-get install node nodejs-legacy and I was on my way.

  • I followed this article to perform the migration from Wordpress. One piece of advice they give, which I ended up regretting: moving all images to Cloudinary. Don’t do it! Instead you should move all your images to the new installation, and then, in the JSON that you get out of the Wordpress export, do a search ‘n’ replace for those file paths.

  • The permalink situation is pretty rough. While you can set the blog to use a date-based permalink for blog posts, you’re stuck with http://domain.com/year/month/day/slug To change it to match your Wordpress install (and thereby preserve your existing links) you have to edit the settings in the SQLite database by hand. Nerdy, but not for everyone. Here’s a page to show you how.

  • To run it on your Linux box in production, you have a lot of choices, but by far the best (to my mind, anyway), is to use either Apache or Nginx as the front-end with a proxy to the locally-running instance of Ghost. Scroll down to “Init Script” on this page for details.

I wanted to give up a few times through the weekend, but here I am. I’ll see how it goes over the next little while before deciding to migrate other Wordpress blogs that are on my server.

Sure is pretty though.