---
title: "Host Multiple Ghost Blogs on One Server: 6 Powerful Nginx Setup Steps"
id: "120"
type: "post"
slug: "how-to-host-multiple-ghost-blogs-on-one-server-with-nginx"
published_at: "2026-02-10T12:01:50+00:00"
modified_at: "2026-05-11T07:47:56+00:00"
url: "https://playdevhub.com/how-to-host-multiple-ghost-blogs-on-one-server-with-nginx/"
markdown_url: "https://playdevhub.com/how-to-host-multiple-ghost-blogs-on-one-server-with-nginx.md"
excerpt: "This article explains how to host multiple Ghost blogs on one server using Nginx, covering ports, domains, and performance optimization. Ideal for developers and VPS users who want to scale projects without extra infrastructure costs."
taxonomy_category:
  - "Web Development"
taxonomy_post_tag:
  - "Nginx"
  - "Server Hosting"
---

[Web Development](https://playdevhub.com/web-development/)

# Host Multiple Ghost Blogs on One Server: 6 Powerful Nginx Setup Steps

This article explains how to host multiple Ghost blogs on one server using Nginx, covering ports, domains, and performance optimization. Ideal for developers and VPS users who want to scale projects without extra infrastructure costs.

10 February 2026

[https://playdevhub.com/author/playdevhub/](https://playdevhub.com/author/playdevhub/)
by [Minarin](https://playdevhub.com/author/playdevhub/)

## Host Multiple Ghost Blogs on One Server with Nginx

Ghost is a great blogging platform – easy to use, quick for publishing, and pleasing. But, usually, it’s one server, one Ghost install, one site. What if you want to run a few sites without paying for lots of machines?

This guide will show you how to run **multiple Ghost blogs** on **one server**. Each blog will have its own domain, and **Nginx** will be the traffic controller, sending visitors to the right Ghost setup.

I’ll use two domains as an example, but you can use this for more, as many as your server can handle.

```
Once your Ghost blogs are up and running, you might also want to improve the user experience on each site by adding a Table of Contents in Ghost CMS: 4 Easy Steps (No Theme Edit) to your articles.
```

## Table of Contents

## What You Need Before We Start

Before you start changing things, make sure you have these ready:

- A new server you can access online
- Ghost is already set up and running (you need at least one working install)
- **Two domain names** are pointing to your server’s IP address
- **Root access** (or sudo privileges)

If you don’t have Ghost installed, do that first. This guide assumes Ghost is already up and running.

## Before You Start

Before setting up multiple Ghost blogs on one server, make sure your VPS can handle several Node.js processes at once. Running multiple Ghost instances with Nginx works best on servers with fast NVMe storage, stable networking, and enough RAM for caching and background tasks.

For smaller projects, even a basic VPS is usually enough. But if you plan to host several Ghost blogs with decent traffic, choosing reliable infrastructure early can save you from migration headaches later.

One option worth checking is [Senko Digital](https://go.platigame.com/senko-hosting)
 — an EU-based VPS provider offering NVMe-powered servers, full root access, and locations in Germany, Finland, and the Netherlands.

Their servers are especially suitable for Ghost and Nginx setups because you can easily configure custom ports, reverse proxies, SSL, and multiple Node.js applications without platform restrictions.

## Step-by-Step: Host Multiple Ghost Blogs on One Server

### Step 1 – Temporarily Stop Ghost and Nginx

Before moving folders or splitting things up, let’s shut everything down This can prevent errors that will cause problems.

Stop Ghost:

```
service ghost stop
```

Stop Nginx:

```
service nginx stop
```

All clear! Now we can move things around.

### Step 2 – Make Nginx Route Traffic to the Right Place

Right now, Nginx probably sends everything to one place. That works for one Ghost blog, but not for two. The fix is to give Nginx **separate server blocks** – one for each domain – so it can route traffic based on the domain name (`server_name`).

Go to the directory where your Nginx configs are:

```
cd /etc/nginx/sites-enabled
```

Rename the Ghost config to match your first domain (I’ll use example names below), and then copy it for the second domain:

```
mv ghost firstsite.confcp firstsite.conf secondsite.conf
```

#### Set Up the First Domain

Open the first file:

```
nano firstsite.conf
```

Set `server_name` to your first domain:

```
server_name firstsite.com;
```

Save it and close the file.

#### Set Up the Second Domain + Use a Different Port

Now open the second config:

```
nano secondsite.conf
```

Update the `server_name`:

```
server_name secondsite.com;
```

Here’s the important part: your second Ghost install needs to listen on a **different port**. If it doesn’t, both domains will go to the same Ghost process.

Find the `proxy_pass` line and change it to a free port (like this):

```
proxy_pass http://localhost:2777;
```

Save and exit.

Restart Nginx:

```
service nginx restart
```

Now, Nginx can send traffic to two different ports based on the domain name. Next, let’s set up Ghost to match.

### Step 3 – Make Two Ghost Folders in /var/www

Go to the web root:

```
cd /var/www
```

Make a folder for each blog:

```
mkdir firstsite.commkdir secondsite.com
```

Now you need two Ghost installations. The easiest way is to copy the existing Ghost folder.

Copy Ghost to the first site’s folder:

```
cp -r ghost firstsite.com
```

Move the original Ghost folder to the second site’s folder:

```
mv ghost secondsite.com
```

Now you have:

- `/var/www/firstsite.com/ghost`
- `/var/www/secondsite.com/ghost`

Two separate installs, two sets of configs, and two separate blogs.

### Step 4 – Change Ghost’s Settings for Each Domain

Ghost needs to know its public URL. If it doesn’t, you’ll have broken links and other annoyances.

#### First Site: Set the URL

Edit the first site’s Ghost config:

```
nano /var/www/firstsite.com/ghost/config.js
```

Find the `production` section:

```
production: {
```

Update the `url` value:

```
production: {  url: 'http://firstsite.com'}
```

Save and exit.

#### Second Site: Set the URL and Port

Now edit the second site’s config:

```
nano /var/www/secondsite.com/ghost/config.js
```

In the `production` section, set the URL:

```
production: {  url: 'http://secondsite.com'}
```

Then, find the `server: {}` section inside `production` and change the port to the one you used in Nginx (`2777` in the example):

```
port: '2777'
```

Save and exit.

Now your second Ghost install will use its own port.

### Step 5 – Set Up Upstart Scripts to Control Each Ghost Blog

Managing multiple Ghost blogs can be a hassle if they all use the same controls. Upstart scripts give you separate controls for each site: start, stop, restart, etc.

If you have a System V init script at `/etc/init.d/ghost`, remove it to avoid issues:

```
rm /etc/init.d/ghost
```

Go to the Upstart config directory:

```
cd /etc/init
```

#### Make the First Upstart Script

Create a new file:

```
nano ghost-firstsite.conf
```

Add this:

```
# ghost-firstsitestart on startupscript  cd /var/www/firstsite.com/ghost  npm start --productionend script
```

Save and exit.

#### Copy It for the Second Site

Copy the first script:

```
cp ghost-firstsite.conf ghost-secondsite.conf
```

Edit the second one:

```
nano ghost-secondsite.conf
```

Change it to point to the second directory:

```
# ghost-secondsitestart on startupscript  cd /var/www/secondsite.com/ghost  npm start --productionend script
```

Save and exit.

### Step 6 – Start Both Ghost Blogs

Start each service:

```
service ghost-firstsite startservice ghost-secondsite start
```

Open both domains in your browser. If everything’s set up, you should see the Ghost welcome page on each one – separately.

To make an admin user for each blog, go to:

- `firstsite.com/ghost/signup`
- `secondsite.com/ghost/signup`

Post something on each site to test. If the posts show up correctly and don’t mix between domains, you’ve done it!

## Wrapping Up

You now have **two different Ghost blogs** running on **one server**. **Nginx** sends traffic based on the domain name, and each Ghost install has its own folder and port.

Want more blogs? Just repeat the steps:

- New domain → new Nginx server block
- New local port → new Ghost config port
- New directory → new Upstart script

Just remember that each additional blog uses more server resources.

```
If you plan to scale further, make sure your VPS has enough RAM and fast NVMe storage for multiple Node.js processes. Using a provider with full root access and reliable EU networking — such as Senko Digital — can make long-term management much easier.
```

## FAQ Hosting Multiple Ghost Blogs on One Server

### **1. Can I run more than two Ghost blogs on one server?**

Yes. You can run as many Ghost blogs as your server resources allow. Each blog needs its own domain, port, folder, and process.

### **2. Do all Ghost installs need different ports?**

Yes. Each Ghost instance must listen on a unique local port so Nginx can route traffic correctly based on the domain.

### **3. Will posts or users mix between sites?**

No. Each Ghost blog has its own installation and database, so content and users stay completely separate.

### **4. Can I use SSL (HTTPS) with multiple Ghost blogs?**

Absolutely. You can use Let’s Encrypt with Nginx to issue separate SSL certificates for each domain.

### **5. Does this work with Ghost CLI installs?**

This guide assumes a manual or older setup. If you’re using Ghost CLI, multi-site hosting is still possible but requires separate system users or Docker-based setups.

### **6. What happens if one Ghost blog crashes?**

Only that specific blog goes down. The other Ghost instances will keep running normally.

### **7. How much RAM do I need?**

A small Ghost blog typically needs around 300–500 MB of RAM. Add more memory as you add more sites, especially if traffic increases.

### **8. Is Docker a better option for this?**

For many sites or long-term scaling, yes. Docker or Docker Compose can simplify isolation, upgrades, and maintenance—but this Nginx-based setup is perfectly fine for small to medium projects.

### Related posts:

1. [Install WordPress with FastPanel: 7 Easy Steps (Beginner Guide)](https://playdevhub.com/install-wordpress-fastpanel-guide/)
2. [Run n8n and Supabase on One VPS: Ultimate Coolify Setup Guide](https://playdevhub.com/coolify-n8n-supabase-one-vps-faq/)
3. [Stop Malicious Bots: 7 Powerful Zip Bomb Tricks That Actually Work](https://playdevhub.com/how-to-stop-malicious-bots-with-zip-bombs/)

- [Facebook](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fplaydevhub.com%2Fhow-to-host-multiple-ghost-blogs-on-one-server-with-nginx%2F)
- [X](https://x.com/intent/tweet?url=https%3A%2F%2Fplaydevhub.com%2Fhow-to-host-multiple-ghost-blogs-on-one-server-with-nginx%2F&text=Host+Multiple+Ghost+Blogs+on+One+Server%3A+6+Powerful+Nginx+Setup+Steps)
- [Pinterest](https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fplaydevhub.com%2Fhow-to-host-multiple-ghost-blogs-on-one-server-with-nginx%2F&description=Host+Multiple+Ghost+Blogs+on+One+Server%3A+6+Powerful+Nginx+Setup+Steps)
- [Linkedin](https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fplaydevhub.com%2Fhow-to-host-multiple-ghost-blogs-on-one-server-with-nginx%2F&title=Host+Multiple+Ghost+Blogs+on+One+Server%3A+6+Powerful+Nginx+Setup+Steps)
- [Whatsapp](https://api.whatsapp.com/send?phone=&text=https%3A%2F%2Fplaydevhub.com%2Fhow-to-host-multiple-ghost-blogs-on-one-server-with-nginx%2F)
- [Reddit](https://www.reddit.com/submit?url=https%3A%2F%2Fplaydevhub.com%2Fhow-to-host-multiple-ghost-blogs-on-one-server-with-nginx%2F&title=Host+Multiple+Ghost+Blogs+on+One+Server%3A+6+Powerful+Nginx+Setup+Steps)
- [Email](mailto:?subject=Host%20Multiple%20Ghost%20Blogs%20on%20One%20Server%3A%206%20Powerful%20Nginx%20Setup%20Steps&body=https%3A%2F%2Fplaydevhub.com%2Fhow-to-host-multiple-ghost-blogs-on-one-server-with-nginx%2F)
- [#](#)

[https://playdevhub.com/author/playdevhub/](https://playdevhub.com/author/playdevhub/)
### [Minarin](https://playdevhub.com/author/playdevhub/)

I write about tech, gaming, and AI. I’m always on the lookout for interesting stuff — tools, ideas, trends — and share what actually feels useful or worth checking out.

### Leave a Reply [Cancel reply](/how-to-host-multiple-ghost-blogs-on-one-server-with-nginx/#respond)

## Related Posts

[https://playdevhub.com/ddos-l4-vs-l7-difference/](https://playdevhub.com/ddos-l4-vs-l7-difference/)
 5 May 2026

### [DDoS L4 vs L7 Attacks: The Difference Every Admin Must Know](https://playdevhub.com/ddos-l4-vs-l7-difference/)

[https://playdevhub.com/robots-txt-and-sitemap-setup/](https://playdevhub.com/robots-txt-and-sitemap-setup/)
 24 April 2026

### [How to Set Up Robots.txt and Sitemap for Proper Website Indexing](https://playdevhub.com/robots-txt-and-sitemap-setup/)

[https://playdevhub.com/minisforum-ai-nas-n5-max-review-specs/](https://playdevhub.com/minisforum-ai-nas-n5-max-review-specs/)
 24 April 2026

### [Minisforum AI NAS N5 Max: Powerful 16-Core AI NAS with 200TB Storage](https://playdevhub.com/minisforum-ai-nas-n5-max-review-specs/)

[https://playdevhub.com/why-is-my-vps-slow/](https://playdevhub.com/why-is-my-vps-slow/)
 22 March 2026

### [Why Is My VPS Slow? 7 Powerful Reasons & Fixes You Must Know](https://playdevhub.com/why-is-my-vps-slow/)
