Ghost on cloud

1-click AWS Deployment  1-click Azure Deployment  1-click Google Deployment


Ghost is an open source, professional publishing platform built on a modern Node.js technology stack — designed for teams who need power, flexibility and performance. Every day Ghost powers some of the most-read stories on the internet, serving hundreds of millions of requests across tens of thousands of sites.

Ghost product


At its core Ghost is a self-consuming, RESTful JSON API with decoupled admin client and front-end. Ghost comes with a default Handlebars.js frontend for getting a site running as quickly as possible, as well as detailed documentation for working with the API directly or using provided SDKs and headless front-end framework integrations.For editors, Ghost has the rich editor which every writer wants, but under the hood it delivers far more power than you would expect. All content is stored in a standardised JSON-based document storage format called MobileDoc, which includes support for extensible rich media objects called Cards.

Ghost architecture

Because Ghost is completely open source, built as a JSON API, has webhooks, and gives you full control over the front-end: It essentially integrates with absolutely everything. Browse a large directory of integrations with instructions, or build any manner of custom integration yourself by writing a little JavaScript and Markup to do whatever you want.

Data & Storage

Ghost ships with the Bookshelf.js ORM layer by default allowing for a range of databases to be used. Currently SQLite3 is the supported default in development while MySQL is recommended for production. Other databases are available, and compatible, but not supported by the core team.

Additionally, while Ghost uses local file storage by default it’s also possible to use custom storage adapters to make your filesystem completely external. There are fairly wide range of pre-made storage adapters for Ghost already available for use.

Ghost examples

Example Customers

Hitting the right balance of needs has led Ghost to be used in production by organisations including Apple, Sky News, DuckDuckGo, Mozilla, OpenAI, Square, CloudFlare, Tinder, the Bitcoin Foundation and many more.

Try Ghost

Ghost is completely free an open source, released under the MIT license, stewarded by a non-profit foundation. It can be downloaded and self-hosted just about anywhere, or spun up in a few moments using the Ghost(Pro) managed PaaS, which comes with a 14 day free trial.

How To Change Themes and Adjust Settings in Ghost


Ghost is a great new blogging platform that focuses on content creation and presentation over the superfluous bells and whistles that dominate other platforms. It provides a clean, easy-to-use interface and can produce very polished results.


How To Change Ghost Themes

The main aesthetic adjustment that you can make to your blog is the theme. A theme controls how all of the pieces are presented visually and how the elements are drawn together.

There are a number of different themes you can get for Ghost. Some are free and some you must purchase.

We will apply one of the free themes from the Ghost Marketplace called “N’Coded”.

You can see this theme by visiting:

Click on the “N’Coded” theme to be taken to the theme’s GitHub page.

Log into your Ghost VPS and navigate to the Ghost themes directory:

cd /var/www/ghost/content/themes/

We will use git to install the theme into this directory. Install git if it is not already present in the system:

apt-get update && apt-get install git-core -y

Now, we can clone the project from the GitHub page:

git clone

Change ownership of the files to the Ghost user and group:

chown -R ghost:ghost N-Coded

Restart Ghost to allow it to see the new theme folder:

service ghost restart

Open your web browser and navigate to the general settings page:


Scroll down to the bottom and you will see a “Theme” area. Change the theme to “N-Coded”:

Ghost change theme

Click the “Save” button in the upper right corner.

Navigate to your blog to see the new theme:

Ghost theme example


How To Change Ghost Settings

You can change most of your blog’s settings by navigating to the “settings” page of your blog:


You will be taken to the general settings page:

Ghost general settings

Here, you can adjust items like the title and description of your blog, and update the logo and cover images.

To change details for your user, click on the “User” tab on the left-hand side:

Ghost user settings

Here, you can adjust settings for your profile. These details include your user name and email, as well as a short biography and a link to a personal external site.

If you scroll to the bottom of the page, you can change your personal password by typing in your current password and supplying/confirming a replacement:

Ghost change password

How To Configure and Maintain Ghost from the Command Line


How To Control the Ghost Service

The Ghost application is implemented on a daemon on our Droplet. This means that we can start, stop and restart it easily using Ubuntu’s service command.We can control the Ghost service like any other service:

Start Ghost:

sudo service ghost start

Stop Ghost:

sudo service ghost stop

Restart Ghost:

sudo service ghost restart

Sometimes, after we’ve made changes to our configuration, it may also be helpful to restart nginx (our web server) as well:

sudo service nginx restart

You shouldn’t have to use these commands often, but they are helpful to know if you are not too familiar with a Linux environment.


How To Back Up Ghost

Backing up Ghost is trivial, so you should do it often.

Ghost stores most of its data in a database called ghost.db.

If you would like to copy this directly, you can do so, but you should stop the Ghost service first:

sudo service ghost stop

You can copy this to your own computer by typing into your local terminal:

scp root@your_ghost_IP_address:/var/www/ghost/content/data/ghost.db .

This will copy it into your current local directory.

To copy themes, issue this command:

ssh -n root@your_ghost_IP_address 'tar zcvf - -C /var/www/ghost/content/themes .' | cat - > ghost_themes.tar.gz

This will create an archive file called ghost_themes.tar.gz with all of your themes in your current local directory.

To back up your images, you can run a similar command, which will create a file called ghost_images.tar.gz:

ssh -n root@your_ghost_IP_address 'tar zcvf - -C /var/www/ghost/content/images .' | cat - > ghost_images.tar.gz

Don’t forget to restart Ghost after you’ve downloaded the data:

sudo service ghost start

Perhaps an easier way of doing this is through the web interface by visiting this page of your site:


You can click the “Export” button to download a copy of your blog content and settings:

Ghost export data

If you need to redeploy, you can always visit this page again and import the data file you just downloaded.


How To Upgrade Ghost

It is important to keep your Ghost installation up-to-date in order to keep yourself secure. You can find the official Ghost upgrade guide, which is updated regularly.

When a new version is released, you can get it from the Ghost website. You will probably have to create an account or sign in.

Search for a download link to the latest version and copy the link by right-clicking or control-clicking on the “Download Now” button and selecting “Copy Link Address” or “Copy Link Location”.

Currently, the URL for the latest version is always here, although that may change in the future:

Log into your Ghost droplet as root. Before upgrading, back up the database to your home computer as we discussed above.

We will need the build-essential package in order to complete the Ghost upgrade. You can install it on your system by typing:

sudo apt-get update
sudo apt-get install build-essential

We will also want to stop the Ghost service before upgrading the files, so that no processes are modifying files as they are being overwritten:

service ghost stop

Change to the web root directory:

cd /var/www/

Type wget followed by the URL for the latest version of Ghost. If you copied the link location, you can paste that here:

wget url_to_ghost_download

Delete the current contents of the core directory before copying the upgraded files over:

rm -rf ghost/core

Extract the files to the correct location to update the Ghost installation:

unzip -uo ghost*.zip -d ghost

The “-uo” options extract newer versions of files and create new files where necessary. DO NOT forget them or you may wipe out your information!

Next, you have to give control over the files to the Ghost process. You can do that by typing:

chown -R ghost:ghost ghost/*

We will get new dependencies by changing into our ghost directory and using the npm command:

cd /var/www/ghost
npm install --production

To implement your changes, restart the Ghost service:

service ghost start

If you ran into problems, the best thing to do is to repeat the process from the beginning and check for errors in the output of the commands. Most of the time, you will be able to catch any mistakes by running through a second time.


How To Test Ghost Configuration Changes

Ghost executes using a number of pre-configured “environments”. Environments dictate which database to use, which URLs to respond to, and how to talk to the back-end server.

We usually run our instance of Ghost in the “production” environment. This is, for the most part, configured correctly to serve your blog on a public-facing site.

If we wish to experiment with some of the settings, we can do so safely by creating a new environment, and then specifying those environments while starting Ghost.

Environments are configured in the config.js file in the document root. Open this file with your text editor:

nano /var/www/ghost/config.js

Inside, you will see some code that looks like this:

var path = require('path'),

config = {
    development: {
        . . .
        . . .

    production: {
        . . .
        . . .

    otherEnvironments: {
        . . .
        . . .

Each of the section titles in red defines an environment. If we want to test changes in a new environment, we can copy the “production” environment and make our modifications there.

To do this, we would copy everything between:

production: {

And the matching closing bracket (prior to the start of the next “testing” environment):


Directly under the production block that we just copied, we can paste the chunk.

production: {
    . . .
    . . .
production: {
    . . .
    . . .

Next, change the second “production” to the name of our temporary environment. We will use temporary.

production: {
    . . .
    . . .
temporary: {
    . . .
    . . .

Now, we have a new block to experiment with. You can adjust the settings here without worrying about messing up your regular site.

When you are done, save and close the file.

After we are done modifying the “temporary” block, we need to tell Ghost to use this new block. We will do this by adjusting the value in the init script that starts Ghost.

Open the Ghost init script by typing:

nano /etc/init.d/ghost

Find the line that specifies the production environment:

export NODE_ENV=production

Change this to reference your new “temporary” environment:

export NODE_ENV=temporary

Save and close the file.

Now, we can restart Ghost to use our new settings:

service ghost restart

Depending on the changes that you used, you may have to restart nginx as well:

service nginx restart

When you have thoroughly tested your new configuration, you should move your changes from your temporary environment into your production environment.

After that, re-open the init script and change the environment rule back to “production”:

nano /etc/init.d/ghost
export NODE_ENV=production

Again, restart Ghost:

service ghost restart


How To Configure Email for Ghost

Ghost doesn’t use email for very many things. At the time of this writing, it only uses it to send password reset emails. However, without this configured, you will see an annoying banner:

Ghost configure email banner

We need to configure email to get this to go away.

First, we can choose a provider. You can use a number of different email services. It is recommended that you create a new email address associated with the blog. You need to find the SMTP settings for your service. Use google to search:

your email choice SMTP

Some services have different login names and passwords for SMTP than for their regular services. Make sure you find out the information you need. For a Gmail account, for instance, you can use your normal login credentials.

Open the config.js file to input your mail settings:

nano /var/www/ghost/config.js

You need to find the line in the “production” section that deals with mail:

. . .
production: {
    url: '',
    mail: {},
    database: {
    . . .

Between the open bracket { and the closing bracket } of the mail line, you need to enter the following information:

mail: {
    transport: 'SMTP',
    options: {
        service: '',
        auth: {
            user: '',
            pass: ''

Now, you need to fill in the serviceuser, and pass fields with the appropriate values. For the service, use the name as it is referred to here.

mail: {
    transport: 'SMTP',
    options: {
        service: 'service_name',
        auth: {
            user: 'SMTP_login_name',
            pass: 'SMTP_password'

Save and close the file.

Restart Ghost to implement your changes:

service ghost restart

Now, if you log out and click the “forgot password” link, an email will be sent from the SMTP email you just configured to your account email.

Ghost forgotten password

How To Install and Configure Ghost on CentOS 7


To complete this tutorial, you will need:

  • One 1GB CentOS 7 server set up by following the Initial Server Setup with CentOS 7 guide, including a sudo non-root user.
  • Node.js installed using the EPEL repository method explained in the tutorial: How To Install Node.js on a CentOS 7 server.
  • Nginx installed on your server, as shown in How To Install Nginx on CentOS 7.

Step 1 — Installing Ghost

First, we need to install Ghost. We’ll place Ghost in the /var/www/ghost directory, which is the recommended installation location.

Download the latest version of Ghost from Ghost’s GitHub repository using wget:wget


  • sudo yum update -y
  • sudo yum install unzip -y

The -y flag in the preceding commands updates and installs packages automatically without asking for a confirmation from the user.

Once unzip is installed, unzip the downloaded package to the /var/www/ghost directory. First, create the /var/www folder, then unzip the file:

  • sudo mkdir /var/www
  • sudo unzip -d /var/www/ghost

Switch to the /var/www/ghost/ directory:

  • cd /var/www/ghost/

Then install the Ghost dependencies, but only the ones needed for production. This skips any dependencies which are only needed by people who develop Ghost.

  • sudo npm install –production

Ghost is installed once this process completes, but we need to set up Ghost before we can start it.

Step 2 — Configuring Ghost

Ghost uses a configuration file located at /var/www/ghost/config.js. This file doesn’t exist out of the box, but the Ghost installation includes the file config.example.js, which we’ll use as a starting point.

Copy the example configuration file to /var/www/ghost/config.js. We’ll copy the file instead of moving it so that we have a copy of the original configuration file in case we need to revert your changes.

  • sudo cp config.example.js config.js

Open the file for editing:

  • sudo vi config.js

We have to change the URL that Ghost uses. If we don’t, the links on the blog will take visitors to Change the value of the url field to your domain name, or to your server’s IP address if you don’t want to use a domain right now.



config = {
    // ### Production
    // When running Ghost in the wild, use the production environment
    // Configure your URL and mail settings here
    production: {
        url: 'http://your_domain_or_ip_address',
        mail: {},

The url value must be in the form of a URL, like or If this value is not formatted correctly, Ghost will not start.

Ghost can function without the mail settings; they’re only necessary if you need to support password recovery for Ghost users. We’ll skip configuring this setting in this tutorial.

You can customize Ghost further by following the configuration details at the official site.

Save the file and exit the editor.

While still in the /var/www/ghost directory, start Ghost with the following command:

  • sudo npm start –production

The output should be similar to the following:


> ghost@0.11.7 start /var/www/ghost
> node index

WARNING: Ghost is attempting to use a direct method to send email.
It is recommended that you explicitly configure an email service.
Help and documentation can be found at

Migrations: Creating tables...

Ghost is running in production...
Your blog is now available on http://your_domain_or_ip_address
Ctrl+C to shut down

Ghost is listening on port 2368, and it’s not listening on the public network interface, so you won’t be able to access it directly. Let’s set up Nginx in front of Ghost.

Step 3 — Configuring Nginx to Proxy Requests to Ghost

The next step is to set up Nginx to serve our Ghost blog. This will allow connections on port 80 to connect through to the port that Ghost is running on, so people can access your Ghost blog without adding the :2368 to the end of the address. It also adds a layer of indirection and sets you up to scale out your blog if it grows.

If Ghost is still running in your terminal, press CTRL+C to shut down the Ghost instance before you continue.

Now let’s configure Nginx. Change to the /etc/nginx directory first:

  • cd /etc/nginx/

If you installed Nginx from the CentOS EPEL repository as shown in the prerequisite tutorial, you will not have the sites-available and sites-enabled directories, which are used to manage web site configurations. Let’s create them:

  • sudo mkdir sites-available
  • sudo mkdir sites-enabled

Next, create a new file in /etc/nginx/sites-available/ called ghost:

  • sudo vi /etc/nginx/sites-available/ghost

Place the following configuration in the file and change your_domain_or_ip_address to your domain name, or your servers IP address if you don’t have a domain:

server {
    listen 80;
    server_name your_domain_or_ip_address;
    location / {
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

This basic configuration sends all requests for this server to the Ghost blog running on port 2368, and it sets the appropriate HTTP headers so that when you look at your Ghost logs, you’ll see the original IP address of your visitors. You can learn more about this configuration in Understanding Nginx HTTP Proxying, Load Balancing, Buffering, and Caching.

Save the file, exit the editor, and enable this configuration by creating a symlink for this file in the /etc/nginx/sites-enabled directory:

  • sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost

Nginx won’t use this new configuration until we modify the default Nginx configuration file and tell it to include the configuration files in the sites-enabled folder. In addition, we have to disable the default site. Open up the nginx.conf file in your editor:

  • sudo vi nginx.conf

Include the following line inside the http block to include the configuration files in the sites-enabled folder:


http {
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

Then completely comment out the server block found inside the http block:


    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

#    server {
#       listen       80 default_server;
#       listen       [::]:80 default_server;
#       server_name  _;
#       root         /usr/share/nginx/html;
#       # Load configuration files for the default server block.
#       include /etc/nginx/default.d/*.conf;
#       location / {
#       }
#       error_page 404 /404.html;
#           location = /40x.html {
#       }
#       error_page 500 502 503 504 /50x.html;
#           location = /50x.html {
#       }

Save the file and exit the editor. Test the configuration to ensure there are no issues:

  • sudo nginx -t

You’ll see the following output if everything is correct:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

If you see any errors, fix them and retest the configuration.

With a working configuration file, restart Nginx to apply the changes:

  • sudo systemctl restart nginx

Before we start Ghost again, let’s create a new user account to run Ghost.

Step 4 – Running Ghost as a Separate User

To improve security, we’ll run Ghost under a separate user account. This user will only have access to the /var/www/ghost directory and its home folder. This way, if Ghost gets compromised, you minimize the potential damage to your system.

Create a new ghost user with the following command:

  • sudo adduser –shell /bin/bash ghost

Then make this new user the owner of the /var/www/ghost directory:

  • sudo chown -R ghost:ghost /var/www/ghost/

Now let’s make sure this user can run Ghost. Log in as the ghost user:

  • sudo su – ghost

Now start Ghost under this user and ensure it runs:

  • cd /var/www/ghost
  • npm start –production

You should be able to access your blog at http://your_domain_or_ip_address. Nginx will send requests to your Ghost instance.Things are working great, but let’s make sure Ghost continues to run well into the future.

Step 5 — Running Ghost as a System Service

Currently, Ghost is running in our terminal. If we log off, our blog will shut down. Let’s get Ghost running in the background and make sure it restarts when the system restarts. To do this, we’ll create a systemd unit file that specifies how systemd should manage Ghost. Press CTRL+C to stop Ghost, and log out of the ghost user account by pressing CTRL+D.

Create a new file to hold the definition of the systemd unit file:

  • sudo vi /etc/systemd/system/ghost.service

Add the following configuration to the file, which defines the service’s name, the group and user for the service, and information on how it should start:




ExecStart=/usr/bin/npm start --production
ExecStop=/usr/bin/npm stop --production


Save the file and exit the editor. Then enable and start the service:

  • sudo systemctl enable ghost.service
  • sudo sytemctl start ghost.service

Once again, visit http://your_domain_or_ip_address and you’ll see your blog.

How To Manage Content Using the Ghost Blogging Platform



Ghost is an exciting new blogging platform that can be used to easily manage your posts, update themes, and edit content. A simple, yet powerful interface allows you to get to work immediately and publish beautiful results.

How to Navigate the Content Interface

Ghost’s content creation interface is incredibly simple. We can access our content by going to:


You may have to sign in with the credentials you used to create the site. After that, you will be taken to the “content” tab, which is exactly where we want to be:

Ghost content tab

You will see the pre-configured sample post called “Welcome to Ghost”. Currently, it is the only post that we have on our blog.

As we add content, each new post will get a tab on the left-hand side. If we select any of these posts, a preview will be displayed on the right side. This represents how the content will be displayed on our site.

In the preview pane, we can see two buttons useful for editing.


How To Adjust Post Information

The gear is for adjusting the settings for the post:

Ghost post configuration

If you click it, you can adjust the URL snippet that will be used to refer to the post. By default, this will be an adjusted string made from the post title.

You will also have the option to edit the post date. This date must be in the past and must be in the following format:

[08 Oct 13]

This is also where you can delete a post. Click on the “Delete” button:

Ghost delete post button

You will be asked to confirm this action to avoid accidentally destroying a post:

Ghost confirm post deletion


How To Edit a Post

The pencil icon next to the gear is used to edit the current post. If we click it, we will be taken to the editing interface:

Ghost edit post

You will be taken to a screen where you can edit on the left side and see the results on the right side. Ghost uses markdown, a simple markup language, to create post content.

If you need some help with markdown syntax, you can either visit the markdown site linked to above, or click on the in-site shortcut button that ghost provides.

It is in the upper-right corner of the editing half (left pane) in the editor window:

Ghost markdown help button

A reference sheet will pop up with the appropriate way to style different elements in your page.

Ghost markdown reference sheet

When you are done editing, click on the “Update Post” button in the lower-right corner:

Ghost update post

You may notice that you also have a gear icon in this interface. It provides a consistent menu that mirrors the gears in the other screen.

If you wish to take a post down from the public site, but not delete it, you can unpublish it by clicking on the arrow to the right of the Update button:

Ghost unpublish button

The button will change to a red “unpublish” button. Click the button to confirm.

Ghost unpublish confirm


How to Create a New Post

To create a new post, you can either click the green box with a plus in it on the content page:

Ghost create page

Or, you can click on the “New Post” button that is present in the top navigation bar on all pages:

Ghost new post

You will be taken to the editor screen, just like when you edit a post. This time, all fields will be blank.

Choose a title and begin writing your post in the left-hand side.

Ghost example post

You can save your progress in the lower-bottom corner by clicking the “Save Draft” button:

Ghost save draft

When you are ready to publish, click on the arrow to the right of the “Save Draft” button and select “Publish Now”:

Ghost publish now select

Now, click the red “Publish Now” button to confirm:

Ghost publish now confirm

Advantages of Ghost:

1. Simple Yet Elegant

The most noticeable thing about Ghost, i.e. the blogs hosted on it, is their design. These are extremely appealing to the eye due to their simple, clean, clutterless design and layout. There is no possibility of getting distracted, neither for the blogger nor for the readers.

2. Easy To Create Content

Ghost focuses mainly on content creation. True to its claim, it indeed powers blogs, magazines and journalists. You don’t have to worry about anything, just focus on creating content. The user interface, i.e. the editor is extremely user-friendly, with barely anything to distract you.

3. Built-in SEO

Ghost has built-in Search Engine Optimization features. From XML Sitemaps to Canonical Tags, Meta Data to AMP Pages, everything is in-built in Ghost. You don’t need any additional plugin.

4. Built-in Social Sharing

Social sharing options are in-built in Ghost. You don’t have to install any plugin for social sharing buttons.

5. Affordable

Many people won’t agree that Ghost is affordable. After all, their paid plans, Ghost (Pro) start at $29 per month. But we have to keep in mind that with $29 per month, you are basically getting Managed Hosting with a CDN (Content Delivery Network).

6. Incredibly Fast

Ghost blogs are faster than your usual blogs. This is probably due to the use of CDN.

7. Free SSL

Ghost sites come with free SSL certificate.

8. Apps And Integrations

Ghost comes with the option to use various third-party services. There are more than 1000 third-party services that can be integrated with your Ghost site using Zapier. You can also connect various third-party apps and services by editing/customizing the theme or using the Ghost Public API.

Disadvantages of Ghost:

  • Ghost is not the kind of platform to build a complete business website or e-commerce site.
  • It doesn’t support plugins to have custom features.
  • To have better control over your Ghost site, you need to have knowledge of coding.
  • There is a limited number of themes.
  • Ghost (Pro) is expensive for beginners.
  • Ghost does not provide free hosting service.

-Ghost is an Open Source application which allows you to write and publish your own blog, giving you the tools to make it easy and even fun to do. It’s simple, elegant and designed so that you can spend less time making your blog work and more time blogging.Ghost is owned by Ghost ( and they own all related trademarks and IP rights for this software.

Ghost on Cloud runs on Amazon Web Services (AWS) and Azure and Ghost on Cloud is designed to cater to the needs of small and large taxi, limo and ground transportation companies and everything in between.Cognosys provides hardened images of Ghost on all public cloud i.e. AWS marketplace and Azure.

Secured Ghost on CentOS 7.3


Ghost Features

➡️ A familiar editing environment enables a seamless authoring experience that allows you to focus on creating content. Paragraph

➡️ Robust tagging functionality gives you fine-grained control over any type of category, section, format or flow to adapt to your needs – including custom homepages, URL structures, and multi-language content.

➡️ Multiples roles for authors, editors, and administrators. Invite your whole team to collaborate, with dedicated public user profiles for everyone.

➡️ Queue up your full editorial calendar ahead of time and set your posts to go live like clockwork. Ghost remembers to publish at the right time so you don’t have to.

➡️ Proper SEO built in directly, with semantic markup, permalinks, XML sitemaps, canonical tags and automatic metadata with manual overrides.

➡️ With integrated AMP support, your site will rank higher and load in a fraction of a second from Google mobile search results.

➡️ Every post published renders beautifully all over the web, with rich meta tags for Facebook Open Graph, Twitter Cards and

➡️ A straightforward JSON importer and exporter keeps your data infinitely portable, while our CLI tool makes configuring, running and updating Ghost a breeze.

➡️ Self-consuming JSON API for all your data.

➡️ Environment, install, updates, backups, optimizations, all taken care of on your behalf!

➡️ Isolated applications, SSL by default, firewalls and spam protection. All threats mitigated by Ghost team whenever needed.

➡️ All customer data is continuously backed up to an off-site location, ensuring that you never need to worry about losing content.

➡️ Ghost’s native apps provide all the beauty and power of Ghost, right on your device. It also means that you can easily switch between multiple sites on the fly. Available for Mac, PC, Linux, and Android.

-Major Features Of Ghost

Customize it Completely. It’s Yours : You can write themes for it so your blog can have its own design. You can write plugins for it to add your own functionality. You can host it on your laptop, or you can host it on a public server. The code is open and so is the MIT license. No restrictions.

It Works Where You Work : We know that inspiration can strike anywhere, not just when you’re sitting behind a computer. So, Ghost works where you work. Ghost is a fully responsive web application that works on all devices. Not just moderating comments or token functionality. The whole thing.

An editor for writers : A Markdown based editing environment allows for fast formatting and a seamless authoring experience which places the focus entirely on the content being created. A live side-by-side allows you to always see how the post will render.

Simple content management : All your content is available in an easily searchable archive which can be scanned through at speed.


Installation Instructions For  Ubuntu

Note: How to find PublicDNS in AWS

Step 1) SSH Connection: To connect to the deployed instance, Please follow Instructions to Connect to Ubuntu instance on AWS Cloud

1) Download Putty.

2) Connect to virtual machine using following SSH credentials :

  • Hostname: PublicDNS  / IP of machine
  • Port : 22

Username: To connect to the operating system, use SSH and the username is ubuntu.
Password: Please Click here to know how to get password .

Step 2) Database Login Details:

  • MYSQL Username : root
  • MYSQL Password : Passw@rd123

Note: Please change the password immediately after the first login.

Step 3) Application URL: Access the application via a browser at http://PublicDNS/Ghost

Step 4) Other Information:

1. Default installation path: will be in your web root folder “opt/Ghost

2. Default ports:

  • Linux Machines:  SSH Port – 22
  • Http: 80 or 8080
  • Https: 443
  • Mysql ports: By default these are not open on Public Endpoints. Internally Mysql server: 3306

Configure custom inbound and outbound rules using this link

AWS Step by Step Screenshots

Stack Name-This will be your Current stack.


Choose Software Pricing


Choose your Version


Choose your EC2 Instance Type


Choose Your Key Pair


Choose your Region


Choose your Security Group


Change VPC Settings



Installation Instructions For Ubuntu

Note : How to find PublicDNS in Azure

Step 1) SSH Connection: To connect to the deployed instance, Please follow Instructions to Connect to Ubuntu instance on Azure Cloud

1) Download Putty.

2) Connect to the virtual machine using following SSH credentials:

  • Hostname: PublicDNS  / IP of machine

Step 2) Application URL: Access the application via a browser at http://PublicDNS/

Step 3) Other Information:

1. Default installation path: will be on your web root folder “/var/www/ghost/”
2. Default ports:

  • Linux Machines:  SSH Port – 22
  • Http: 8o

Note: –Ghost is running on port 2368. A proxy has been used to divert from 80 to 2368. Open http://YourIP to access Ghost site

Use below commands to manage the service

    • service ghost stop
    • service ghost start
    • service ghost status
  • echo “Use below commands to manage the service”
  • echo “service ghost stop”
  • echo “service ghost start”
  • echo “service ghost status”

Configure custom inbound and outbound rules using this link

Installation Instructions For Centos

Note : How to find PublicDNS in Azure

Step 1) SSH Connection: To connect to the deployed instance, Please follow Instructions to Connect to Centos instance on Azure Cloud

1) Download Putty.

2) Connect to the virtual machine using following SSH credentials:

  • Hostname: PublicDNS  / IP of machine

Step 2) Application URL: Access the application via a browser at http://PublicDNS/

Step 3) Other Information:

1. Default installation path: will be on your web root folder “/var/www/ghost/
2. Default ports:

  • Linux Machines:  SSH Port – 22
  • Http: 80

Note: –Ghost is running on port 2368. A proxy has been used to divert from 80 to 2368. Open http://YourIP to access Ghost site

Use below commands to manage the service

  • service ghost stop
  • service ghost start
  • service ghost status

Configure custom inbound and outbound rules using this link

Azure Step by Step Screenshots

Product name

Ghost on Ubuntu

Pricing Details

Ghost on Ubuntu 2 pricing details

enter pricing details

general purpose compute basic tier

general purpose compute standard tier

Ghost on Ubuntu 6

Ghost on Ubuntu 7

Ghost on Ubuntu 8


Installation Instructions For Ubuntu

Installation Instructions for Ubuntu

Step 1) VM Creation:

  1. Click the Launch on Compute Engine button to choose the hardware and network settings.
  2. You can see at this page, an overview of Cognosys Image as well as estimated cost of running the instance.
  3. In the settings page, you can choose the number of CPUs and amount of RAM, the disk size and type etc.

Step 2) SSH Connection:To initialize the DB Server connect to the deployed instance, Please follow Instructions to Connect to Ubuntu instance on Google Cloud

Step 3) Database Login Details:

The below screen appears after successful deployment of the image.

successful deployment of the image

For local MySQL root password, please use the temporary password generated automatically during image creation as shown above.

i) Please connect to Remote Desktop as given in step 2 to ensure stack is properly configured and DB is initialized.
ii) You can use MySQL server instance as localhost, username root and password as shown above.

If you have closed the deployment page you can also get the MySQL root password from VM Details  “Custom metadata” Section.

Step 3) Application URL: Access the application via a browser at http://PublicDNS/Ghost

Note: –Ghost is running on port 2368. A proxy has been used to divert from 80 to 2368. Open http://YourIP to access Ghost site

Use below commands to manage the service

  • service ghost stop
  • service ghost start
  • service ghost status

Step 4) Other Information:

1. Default installation path: will be in your web root folder “opt/Ghost

2. Default ports:

  • Linux Machines:  SSH Port – 22
  • Http: 80 or 8080
  • Https: 443
  • Mysql ports: By default these are not open on Public Endpoints. Internally Mysql server: 3306


Secured Ghost on CentOS 7.3

Ghost on cloud

Related Posts