Monday, August 25, 2014

Setting up ghost on the Openshift

In past few days I decided that I would like to keep track on my progress in how I learn new stuff. After some consideration I hope a good way to organize my work would be to use Ghost: is just a blogging platform funded on Kickstarter last year. I have heard all the hype when Ghost got funded and tried to use it early on, but it was disaster to when it was first released. Also, I didn't have a good use case to keep working at it, but now... here is an opportunity.

Quick googling ghost resulted in number of links as a community seem to be sprouting around it. I read a good introduction on setting it up and on its current features on "Ghost for Beginners". The site covers how to set Ghost on Ghost(PRO), AWS and DigitalOcean, but there was nothing about my favorite hosting solution - OpenShift. So I figured I can write a post on setting Ghost on OpenShift.

At first I tried to set it up using OpenShift's console, but that yielded in an error:

Attempting to install through web interface failed twice, I was a bit discouraged, so finally I attempted to try running rhc command from terminal. That worked like a charm:

rhc app create ghost nodejs-0.10 --env NODE_ENV=production --from-code

And here is terminal output:

Application Options
Domain:                _MY_DOMAIN_
Cartridges:            nodejs-0.10
Source Code: 
Gear Size:             default
Scaling:               no
Environment Variables: NODE_ENV=production

Creating application 'ghost' ... done

Waiting for your DNS name to be available ... done

Cloning into 'ghost'...
The authenticity of host ' (' can't be established.
RSA key fingerprint is cf:ee:77:cb:0e:fc:02:d7:72:7e:ae:80:c0:90:88:a7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ',' (RSA) to the list of known hosts.

Your application 'ghost' is now available.

  SSH to:
  Git remote: ssh://
  Cloned to:  /Users/_MY_USER_/Source/ghost

Run 'rhc show-app ghost' for more details about your app.

Ghost correctly appears in the console after that:

Here is a snapshot of Ghost homepage:

I added the user, and published test post:

Adding a custom domain name boils down to:
    1. add an alias using RHC
       rhc alias add ghost MY_CUSTOM_NAME.MY_DOMAIN.COM
    2. setting up DNS alias:
       from: MY_CUSTOM_NAME 
       as: CNAME (alias)
    3. setting up DNS name in config.js:
       edit config.js and replace:
         url: 'http://'+process.env.OPENSHIFT_APP_DNS,
         url: 'http://_MY_CUSTOM_NAME.MY_DOMAIN.COM/'

I use and have had a great experience with them for a couple of years now. They have very easy to use admin panel (not the most intuitive, but very efficient).

Adding google analytics to the blog:
  go to your RHC folder with the application
  edit file: content/themes/YOUR_THEME/default.hbs
  just before end < /head> tag insert your GA code.
  git commit -a # to commit to code repository
  git push # to push to OpenShift

I will update this post with other steps I plan to undertake, staring from ensuring that there is a scheduled backup, over adding google analytics and google adsense to the blog.