Ghost installation for Raspberry Pi…

Ghost is a new blogging platform. It has a refreshingly innovative and responsive UI – one that can clearly be seen as the future of blogging. You might want to visit Ghost’s website to know more about it. I promise, once you’ve learnt how it works, you won’t stop thinking about it. While you’re at it, do learn how it’s installed on the Raspberry Pi from our tutorial below.

GhostGhost runs on Node.js and, like WordPress, is free to download and use. It is expressly intended to be a blogging platform unlike the recent evolution of WordPress.

Wait! Node.js?!

500px-Node.js_logo.svg

Node.js is an event driven system that is written in Javascript and C++. It is known for its non-blocking I/O system and higher response speed with simultaneously lesser resource consumption. Node.js is widely used in chat web application, but can definitely do a lot more like handling entire blogs as it would with Ghost.

Installation of Ghost

There are a lot of operating systems available for the Raspberry Pi but, for this, we recommend using Raspbian. The rest will be a breeze.

1. Install Node.js

You will have to have Node.js installed on your Raspberry Pi. As a matter of fact we’ve written a tutorial on how you can do just that right here.

2. Acquire the Ghost setup

Download the package

To install Ghost, it’ll need to be download from the official website. Do that by entering the following in the terminal.

wget https://ghost.org/zip/ghost-latest.zip

Unzip the package

Now that the package has been downloaded, it will have to be unzipped. You can simply do it by entering the command.

unzip ghost-latest.zip -d ghost

The package contents will fill a new directory by the name ghost.

3. Focus on the new folder

To set the Ghost folder ghost as current directory use the command.

cd ghost/

4. Install Ghost from the setup

After focusing on the ghost directory, we need to install it using NPM by entering the command below.

sudo npm install --production

5. Install a database management system

For your database management system you can choose your favourite one and use it with Ghost. We ourselves have done it a few times with MySQL and MariaDB. We’ve gone for SQLite for this tutorial – the Ghost configuration file by default uses SQLite. You can install SQLite3 using the command below.

sudo apt-get install sqlite3

6. Edit the configuration file

If you use MariaDB, MySQL or a different management system make the appropriate changes to the settings in config.js file of the Ghost setup.

Edit the config.js file to change the default host: and set the port: to 80 as seen below. That is, of course, unless you’re fine with using the default settings.

host: '0.0.0.0'

port: '80'

7. Set up Forever

Once we’re done editing config.js, we need to install Forever so we could continue running the Node.js web-server after the end of the SSH session.

Install forever

Enter this command.

sudo npm install forever -g

Set Node.js to run with Forever

This will let Node.js continue running despite being in production mode. Enter them one after another.

sudo NODE_ENV=production forever start index.js

sudo forever index.js --production

And that’s it!

You’ll have successfully created a Raspberry Pi hosted Ghost blog on its Node.js web server.

You’ll have to visit [the-IP-address-of-your-Raspberry-Pi]/ghost/ to access the process of creating your user account the first time. The process takes a while because the password is hashed using Bcrypt. Once done, that URL acts as your Ghost admin panel.

The blog can be accessed as a non-admin viewer using your Raspberry Pi’s IP address.

Cool, isn’t it?! Do leave us comments if you’ve decided to give it a try or have tried alternate methods for installation. Feedback is always appreciated. Do stay tuned for more on Ghost in the future…

Published by Darryl

Hi, I am Darryl Dias, A Computer Animation student at Full Sail University, specializing in Compositing. Learning to grow wiser and better than yesterday.

Leave a comment

Your email address will not be published. Required fields are marked *