How to Install Ghost CMS on Ubuntu 20.04

Today we will show you how to install Ghost CMS on Ubuntu 20.04 which is one of the best positioned rivals of WordPress. Let’s go for it.

Ghost is a NodeJS-based CMS for creating blog oriented websites. While this means that it doesn’t have all the features of WordPress, it does make it very fast and simple to use. This makes it ideal for projects where we expect a lot of traffic or personal blogs.

Being based on NodeJS means that we have to install it on a server along with nginx for access. For data management, we have MariaDB. So, we are talking about very popular and well-known programs.

Let’s go for it.

Install NodeJS on Ubuntu 20.04

As the CMS depends on NodeJS,, we have to install it. For this, I have chosen version 16.x but it must work with other not so old versions.

To achieve this, first add the NodeJS 16 repository.

curl -sL | sudo -E bash 

Thereafter, install NodeJS using the command

sudo apt install nodejs

Note: Ghost has many problems with NVM. So, do not install NodeJS using NVM. If you have it installed, I recommend you uninstall it.

To make sure NVM is not installed, you can run

rm -rf $NVM_DIR ~/.npm ~/.bower
unset NVM_DIR;

Install Nginx and MariaDB on Ubuntu 20.04

Now we need to install Nginx and MariaDB. To achieve this, run this command.

sudo apt install nginx mariadb-server

This way we can continue.

Prepare MariaDB for Ghost CMS

Before we start, we need to configure MariaDB a bit. First, let’s use the mysql_secure_installation script to set the root key.

sudo mysql_secure_installation

When you run this command, you will be asked for a password. It is currently empty, so enter it by pressing ENTER. Next, you will be asked a few questions

Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Answer Y to all and then the script will finish executing.

It is time to create the database and the user dedicated to Ghost in MariaDB.

Go to the MariaDB console

sudo mysql -u root -p

Create the database, the user with his password and exit the console.

create database blog;
grant all on blog.* to user@localhost IDENTIFIED BY "pass";
flush privileges;

You can replace the values with your own. Especially the password.

Install Ghost on Ubuntu 20.04

Before we start the installation, we should create a new system user, which can be any name you like. I will use blogger.

sudo adduser blogger

Then, you have to make this user belong to the sudo group.

sudo usermod -aG sudo blogger

Thereafter, you can start installing Ghost-cli. For this, we will use npm to make it easier.

sudo npm i -g ghost-cli
Install Ghost CLI on Ubuntu 20.04
Install Ghost CLI on Ubuntu 20.04

This will start the whole process of downloading and installing the dependencies for Ghost-cli which is a utility with which we can install Ghost.

To check the changes, you can run

ghost -v

Sample output:

Love open source? We're hiring Node.js Engineers to work on Ghost full-time.

Ghost-CLI version: 1.18.2

Now create a folder for Ghost and access it

sudo mkdir -p /var/www/ghost
cd /var/www/ghost

Then make the folder belong to the user blogger.

sudo chown blogger:blogger /var/www/ghost
sudo chmod 775 /var/www/ghost

Next, change the session for the user blogger.

sudo su - blogger

Create the new blog folder and access it. Name it whatever you want.

mkdir -p /var/www/ghost/

And from there perform the installation of Ghost.

ghost install
Install Ghost CMS on Ubuntu 20.04
Install Ghost CMS on Ubuntu 20.04

This will start the entire download process. During the execution, you will be asked for some configurations like the URL that has to be one of your domain, the credentials of the database that we have created, as well as the username and password.

You will also be asked about the Nginx settings, and the service to manage your blog.

At the end you will see a screen like this.

Ghost was installed successfully! To complete setup of your publication, visit:
Blog created with Ghost
Blog created with Ghost

To check the status of the service controlling your blog, you can run something similar to this

sudo systemctl status ghost_blog-imaginelinux-com.service 

Access our newly created blog with Ghost on Ubuntu 20.04

Now you have to open a web browser and log in with the address https://your-domain/ghost and you will be able to create the admin user.

Creating the admin account
Creating the admin account

Then you will see the control panel, and you will be able to use it.

Ghost dashboard
Ghost dashboard


Ghost is positioned as a very interesting CMS that stands out for its speed and also for having many tools that allow us to create blogs quickly in a very professional way.

I hope it has helped you and that you share the post to reach more people.

Leave a Comment

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

Scroll to Top