How to install multiple Ghost instances on the same server

Install a second Ghost Instance on your VPS in a few lines. Allowing you to save a lot of money on hosting.

How to install multiple Ghost instances on the same server

If you haven’t created a Ghost Instance yet, head over to Digital Ocean and get started in a few minutes.

Have been using wordpress for many years, but I’ve grown tired of the overly complex layout and the slow interface. I started looking at other blogging solutions and Ghost seemed liked one of the best alternatives.

I’ve been using ghost for a year now and it is probably the best alternative to Wordpress.
I moved all of my websites from Wordpress to Ghost. In doing so I was able to save tons of money by running multiple Ghost Blogs on the same VPS. So far I’ve been able to run 3 websites on a single 1gb Digital Ocean VPS without any issues.

Let’s get started.

First of all I assume that you already have a ghost blog running on your server and you are familiar with the host client.

Creating a new sudo user

You have two choice for your secondary ghost instance on your server. You can either create a new user or you can just use the root user. I’ll show you how to create a new user.

Step 1 - Connecting to your server as root

SSH in to your server as the root user:

ssh root@your_server_ip_address

Step 2 - Creating the user

Use the adduser command to add a new user to your system:

adduser user

Be sure to replace user with the user name that you want to create. You will be prompted to create and verify a password for the user:

Output
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Next you’ll be asked some information. You can leave everything empty.

Output
Changing the user information for sammy
Enter the new value, or press ENTER for the default
    Full Name []:
    Room Number []:
    Work Phone []:
    Home Phone []:
    Other []:
Is the information correct? [Y/n]

Step 3 - Adding the user to the sudo Group

Use the usermod command to add the user to the sudo group:

usermod -aG sudo user

Again, be sure to replace user with the username you just added. By default, on Ubuntu, all members of the sudo group have full sudo privileges.

Installing the new ghost instance

In order to run ghost you need to create a new folder where ghost is running. In order to do that you need to create a new folder in /var/www

cd /var/www
sudo mkdir yourwebsitename
sudo chown user:user ./yourwebsitename
cd yourwebsitename

Don't forget to change yourwebsitename and user to the corresponding names.

You’ll then need to copy the credentials from your existing Ghost Instance.

Go to var/www/<ghost_instance> and open vim config.production.json

Copy the database password

Then log in as the root user and type mysql

create database <database_name>;
GRANT ALL PRIVILEGES ON <database_name>.* TO 'ghost'@'localhost';
FLUSH Privileges;

Log back as your user for this instance. Go to /var/www/<new_website> and run ghost install

You’ll be prompted with a few question.

Enter your blog URL: https://<yourwebsitename>
? Enter your MySQL hostname: localhost
? Enter your MySQL username: ghost
? Enter your MySQL password: <yourpassword> # The one you extracted from config.production.json
? Enter your Ghost database name: <databasename>

After running all of these, you should be good and have two ghost instances running on the same server.

If you’d like to know how to point a new domain name to this Ghost instance here is a cool tutorial I created explaining how.

How to point a domain name to a server?
Whether you are hosting a website or a Webapp and want to access it quickly, you’ll have to use a domain name. A domain name makes it easy for you and users to find your website.

Happy blogging !