Install script – for Ghost blog – please

Somehow during the last year I ended up as both a developer and a sysadmin. I've attended meetings, wearing the sysadmin hat, with software vendors. In these meetings I noticed how software vendors, around the table, couldn't hide their smiles when asked the following:

"Could you supply an install script please?"

A simple inquiry to automate their multi step manual installation process of their expensive software, and to stop wasting peoples time, of course in vain!

Ghost is no different

Usually installing open source software is different – most open source software is no more than an apt-get install or an install script away. Ghost Blog is an exception to this rule, and obviously that frustates: How i ended up on medium and a plethora of posts in the Ghost forum Installation.

The ghost web site contains thorough instructions on the subject in Ghost Linux and Ghost Deploy – too thorough. I really don't care whether Ghost is run daemonized with either supervisord, forever, or something third as mentioned in Ghost Deploy. These options are just confusing me, e.g., should I know about that supervisord? Does Ghost need some special supervising that the rest of the standard Linux services doesn't? These choices ought to be sliced out of installation instructions, and put somewhere else.

What I want is an opinionated automated install script. What I get is circa 25 bullet points of installation actions to perform. This is a good example of how not to do it! But then on the other hand it keeps people busy copy-pasting, search-replacing, and typing in commands.

Install script for Ghost blog on Ubuntu

Responding to the frustration I created an install script for the Ghost blog. It was used to setup this blog on a clean Ubuntu 14.04 VPS on origo.io. The script wraps a subset of the instructions from the the Ghost website, an nginx configuration and an init.d script.

Installing Ghost is now:

$ git clone https://github.com/jakobadam/ghost-deploy.git
$ sudo ghost-deploy/install.sh

Point browser to http://serverip.

You can also test Ghost with vagrant on your local machine:

$ git clone https://github.com/jakobadam/ghost-deploy.git
$ vagrant up ubuntu --provider=kvm
$ vagrant ssh ubuntu
$ cd /vagrant ; sudo ./install.sh

Point browser to http://localhost:8000. And now we can use time on other things.

Update (23 June 2014) After using the blog I saw a couple of additional issues that called for a script.

  • No comments support. Disqus installation instructions describes how to add disqus, but it is yet another copy-paste task!

  • The url of the logo of the blog depends on a url set in a ghost config file!?!

  • When run on a subdomain nginx should only answer on that.

Accomplishing those tasks is now:

$ sudo ./add-disqus.sh aarhusworks
$ sudo ./set-domain.sh blog.aarhusworks.com
comments powered by Disqus