Upgrades and instances with the Ghost blogging platform

The Double Negative blog (you are reading it..) runs on the Ghost blogging platform.

The decision to use Ghost was a simple one.

  • It is made by great developers and has been built well.

  • It is written in javascript (Node.js) and allowed me to learn and play with some technologies that I don't regularly use.

  • It is not Wordpress.

  • It is so simple and easy to use - you just write.

I did however recently encounter a few small issues. Nothing significant. Nothing too difficult. Just some small issues that you may encounter when trying to upgrade your self hosted verion of Ghost and/or if you want to run multiple instances of Ghost on the same host.


Ghost provide a How to upgrade guide. It is pretty simple to follow, and explains exactly how to upgrade your Ghost install.

If I recall correctly (I have not touched Wordpress in five years or so), Wordpress has one click upgrades. Unfortunately Ghost does not offer this functionality.. and its propbably for the best.

Firstly.. actually back up your data. I am often 'told' by colleagues/upgrade processes/cats to backup my data, and I rarely listen. In this case however you should absolutely do it. Given that Ghost is powered by SQLite, your data (posts) are held in a single file which it is oh so easy to accidentally delete.

Given that Ghost provides one click backup functionality, you'd be a fool not to.

Now.. you are probably using Forever or Supervisord to manage your Ghost process. One click upgrades with Ghost would more than likely cause more headaches than they would cure as a result of this. Imagine if you upgraded your Ghost install, and the process incorrectly restarted the mechanisms that keep your blog up and running.. crys

I personally use Forever, and one thing I didn't appreciate (it is obvious in hindsight) is that processes are per user. That is to say, my forever process was originally running as user user1 and all of my ghost files were owned by user1. When I restarted the process I was running as root and as a result whilst I could load the blog, I could not login to the control panel.

I was a little bemused, but managed to debug the issue utilizing the Chrome developer tools. A quick look at the network requests being made indicated that the Ajax request processing the login was returning a failed response pertaining to my SQLite database file being read only.

This is one area where Ghost lacks a little mainstream polish - if you were not a developer you'd never be able to debug an issue like this simply because there was no error handling of any sort.. I just could not get past the login screen.

Fortunately, for that situation Ghost offers their hosted solutions which might be of interest if you are not from a technical background.

Multiple instances

Having upgraded this blog, I also wanted to setup another blog for a different website.

If you are trying to do this yourself, Ghost provides a great installation guide. In fact, all their documentation is great.. and there are a lot of tutorials etc from the community too.

The only divergence for multiple blogs is that you need to proxy your HTTP requests to each site (domain) to the respective node instance.

I utilize nginx, and to do this you need to simply direct the request to a particular port as so: proxy_pass http://localhost:1234.

For each blog you need to utilize a different port.

Then all you need to do is specify the matching port in your Ghost config.js for the respective blog.


As alluded to above, I utilize different users/owners for each of my Ghost blogs. With the appropriate permissions you get the additional security that someone wont accidentally delete your data or stop you node server. You just need to remember that you have done that when it comes to upgrading ;)


One of the awesome things about Ghost is its theming.

A lot of our products have extremely complex automated build, testing, and release processes. Of course a blog based on well maintained open source software will unlikely need any such processes.. I only mention this to emphasize the simplicity of Ghost.

All you need to modify is your theme files. Once you have set up your Ghost blog, the only thing you need to change is its visual appearance. Everything else can be done from the control panel.

As such on my development machine I have a singular instance of Ghost running and I build, play, and test my theming for all (two) of my blogs using it. I then push up the themes to the respective blogs and I am done.

This simplicity makes me smile.

One slight annoyance is that you do need to restart your Ghost instance for theme changes to go live and as such you do need a 'release process' of sorts (albeit a very simple one :P )


Use Ghost.

If you like complexity and security issues go ahead and use Wordpress.

But really.. use Ghost. It is so simple and easy to use, has a great community, and.. well.. this post outlines the only 'problems' I have encountered with it, and they really are not very significant :)

Thomas Clowes

Thomas Clowes

I am a 28 year old software engineer from the United Kingdom. During the day I build multi platform applications. In my spare time I eat food and run marathons. Sometimes I write angry tweets.