How to Manually install Ghost and Node.js

Updated on Jul 13, 2018

In this tutorial, we will follow the steps required to install Ghost. While the Ghost installation is a pretty straight forward process, you will still need to obtain and install Node.js first in order to start your Ghost blog platform.

In order to complete the steps below, please log in your server as root using SSH.

To install Ghost and Node.js on CentOS/Ubuntu, you need to complete the following steps:


Update your OS

First, make sure that you have your OS updated and all required packages are installed. You can perform this following the instructions below depending on your server operation system.

Instructions for CentOS using yum:

yum -y update
yum -y groupinstall "Development Tools"

Instructions for Ubuntu using apt-get:

apt-get -y update
aptitude -y install build-essential zip

Install Node.js

When your OS is updated, please process with the Node.js installation:

cd /root/
tar -xzf node-latest.tar.gz

Enter the node folder which you have just extracted from the archive and execute:

make -s
make install

When the installation is completed you should be able to see node on your server by executing:

[root@ghost ~]# whereis node
node: /usr/local/bin/node

Install Ghost

Now we can proceed with the Ghost installation. For this tutorial we will use /var/www directory but you can install Ghost in any folder suitable for your needs. Please execute the following commands:

mkdir -p /var/www
cd /var/www
curl -L -O
unzip -d ghost
cd ghost/
/usr/local/bin/npm install --production

Configure the Domain and Port

Now that we have Ghost downloaded and installed, we need to apply some final tweaks to configure our Ghost blog with the correct port and domain. There are two important settings to configure -- the IP address for which the Ghost process will listen for new connections and the port on which it will be accessible. As the standard HTTP port is 80 we will reconfigure the config.js to work for any IP on the server on port 80. This can be done using the following command:

sed -e 's/' -e 's/2368/80/' <config.example.js >config.js

The next step is to configure the domain name of your Ghost blog. This can be done using:

replace -- config.js

Please make sure to change '' to your actual domain name.

Ghost with MySQL

Ghost uses sqlite3 by default. If you would like to have your Ghost blog configured with a MySQL database, please check our tutorial on How to configure Ghost with MySQL.

Now you are ready to start your Ghost blog. This can be done by simply executing:

node index.js
Ghost is running in development...
Listening on
Url configured as:

We highly recommend to consider installing Forever and create an init script for your Ghost. You can perform this following our guide on How to install Forever and How to create a start script for Ghost.

On this page...

    Ghost Hosting

    • Free Ghost Installation
    • 24/7 Ghost Support
    • Hack-free Protection
    • Fast SSD Storage
    • Free Domain Transfer
    • Free Ghost Transfer
    • Immediate Activation
    • Free Cloudflare CDN
    View More