Want to receive post like these in your inbox? You can subscribe! It's free.

Now that you have setup your ghost blog, it is time to add some configurations to best optimize your blog.

The next step is to setup a cloud storage for you image and video assets. Note that this is not required to upload images to your Ghost blog, however, you will need it to ensure a backup of your assets such that when you switch servers your assets aren't lost.

For this we will use Cloudinary, which is a free image hosting service that can host images upto 10gbs for free and provide fast delivery and on the fly transformations. Great for picture based blogs.

Step1: Signup

Before we jump into the configurations you will need an account on the platform. Open the link below to create an account before moving further.

Image and Video Upload, Storage, Optimization and CDN
Streamline media management and improve user experience by automatically delivering images and videos, enhanced and optimized for every user.

After successfully creating an account, note the following on the dashboard.

  1. Cloud name
  2. API Key
  3. API Secret

Step2: Configure

Configuring Cloudinary for Ghost is an easy process

1. Log in to the cloud server

  • Login to your droplet
    ssh root@your_droplet_ip
  • Change the user to ghost manager
    sudo -i -u ghost-mgr
  • Go into your root directory
    cd /var/www/ghost

2. Download and install the adapter

  • Download
    yarn add ghost-storage-cloudinary@2
  • Install
    mv node_modules/ghost-storage-cloudinary core/server/adapters/storage

3. Add the configuration

  • Go into shared config folder
    cd /var/www/ghost/current/core/shared/config
  • Edit the default.json file
    nano default.json
  • Replace the storage block with the following
"storage": {
        "active": "ghost-storage-cloudinary",
        "ghost-storage-cloudinary": {
            "useDatedFolder": true,
            "auth": {
                "cloud_name": "your_cloud_name",
                "api_key": "your_api_key",
                "api_secret": "your_api_secret"
            "upload": {
                "use_filename": true,
                "unique_filename": false,
                "overwrite": false,
                "folder": "blog-images",
                "tags": ["blog"]
            "fetch": {
                "quality": "auto",
                "secure": false,
                "cdn_subdomain": true
  • Save the file
    ctrl x

That's it, image storage is setup for your Ghost blog. Now everytime you upload an image to your blog you can find it on your Cloudinary dashboard.

This is the second post in the "Setting up a Ghost blog" series.

Checkout the road map

  1. How to self deploy a Ghost blog in 3 easy steps
  2. Setting up free image hosting for your Ghost blog (Cloudinary)
  3. Setting up Cloudflare CDN and analytics for your Ghost blog
  4. Configuring mailgun on Ghost blog and sending out your first newsletters!
  5. Easiest way to customize a theme for your Ghost blog