Why I Switched from Wordpress to the Ghost Blogging Platform

Wordpress has always had a special place in my heart. It was through Wordpress, over 10 years ago, that I started to really teach myself MySQL and PHP. I used it for years and it served me unwaveringly in that time. I built everything from the simplest of blogs to full blown eCommerce sites. As the platform improved over the years so did its adoption among average users, leading us to today where roughly 19% of the internet is being powered by Wordpress. At first I was completely blown away by that figure... but when I took some time to really sit down and think about it, I realized that it was probably spot on. Almost every blog or small business site I go to, seems to be powered by Wordpress. It's everywhere, and while it was great to use when I was coding in PHP everyday, those times are long gone.

When I finally came to the conclusion that I needed to make a change, I began to search around for alternatives to Wordpress. Unfortunately, nothing I found really excited me, until a came across a kickstarter for a company wanting to develop a blogging platform with more modern techologies. Enter Ghost.

Ghost - Just a blogging platform

Ghost is powered by node.js, which is what really initially attracted me to the platform. I've been teaching myself node for the past 6 months or so and have completely fallen in love with it. Where in the past I would loathe having to write a REST API for the backend of my web applications in something like Java or PHP. Now, I honestly look forward to it. Not having to make that mental switch from Javascript to another language and then back and forth really seemed to improve my overall workflow. Couple node.js with a frontend framework like AngularJS and then you have yourself a real fun stack to work with.

Granted, Ghost is still in its infancy and has a long way to go. Some might even argue that it inevitably will head down the path of Wordpress. Growing from what was designed to be a simple blogging platform, into a full on CMS. In all honesty that's probably correct, but for time being its simple and fucking fast. Which is all I want in my blogging platform.


The themes that are avialable for the platform are growing rapidly, many of which are gorgeous. Head on over to themeforest and check out all the different options available. With everything from minimalist to fully animated with Parallax scrolling and beyond. Some of my personal favorites are:

My blog is currently using the default Casper theme that has been slightly modified with custom fonts and social media integrations. Creating and customizing themes is incredibly simple with Ghost. I highly recommend checking out their guide on how to make ghost themes.

How do I setup a Ghost blog?

While there are quite a few options to do this today, I recommend one of the following:

  1. Head on over to ghost.org and sign up for their hosted service. This will without a doubt be the easiest way to get up and running right away.

    It's also worth noting that the good people at Ghost automatically update your blog when new versions are released.

  2. Go to digitalocean.com and setup the DigitalOcean Ghost Application. This is a droplet that is preconfigured with everything you need to get up and running. The benefit of this route is that you have full control over the server. The downside, you have to manually manage all the updates to the platform.

DigitalOcean Setup Tip

One of the issues I ran into when I was getting setup was that I wanted to enforce the www at the beginning of my URL. Well, DigitalOcean doesn't configure their application that way by default. So I had to modify the default.conf file from Step 2 in the setup guide to the following:

server {  
    listen 80;
    server_name www.example.com ;

    client_max_body_size 10M;

    location / {
            proxy_pass http://localhost:2368/;
            proxy_set_header Host $host;
            proxy_buffering off;

server {  
    listen 80;
    server_name example.com;
    return 301 http://www.example.com$request_uri;

While it may have been because I had been setting everything up in the wee hours of the morning, It took me a while to uncover that little tidbit and I hope it helps!

Vote on HN

comments powered by Disqus