Ghost on Digital Ocean for tiny newsletters

21 days ago   •   10 min read

By JJ O'Brien

As mentioned in Ghost and Mailgun for tiny newsletters we have chosen to self-host Ghost CMS rather than choosing their fully hosted solution Ghost Pro. This decision was made for two reasons: autonomy and cost.

Ghost Pro Starter plan is $9 per month, billed annually, or $11 per month billed monthly, but to get the same functionality - custom themes, custom integrations, and 2 staff users - we would have had to choose their Creator plan... which is $25/mo if billed annually and $31/mo when billed monthly. This seemed too much for what is right now a small site with limited number of members and infrequently published newsletter. You may have found yourself in the same situation and looking for a less costly solution.

Digital Ocean

Our hosting platform of choice is Digital Ocean because of their very predictable pricing, ease of use, and fantastic documentation. Digital Ocean offers Ghost CMS as a one-click app which streamlines the setup of Ghost installations. Even if you're not familiar with managing Linux servers it's very approachable.

Ghost | DigitalOcean Marketplace 1-Click App
Ghost is a fully open source, adaptable platform for building and running a modern online publication. It powers blogs, magazines and journalists from Zappos to Sky News.

Using the one-click app will create a Digital Ocean droplet (which is their nomenclature for a virtual private server, or VPS), deploy Ghost, and help you set it up once it's ready and your DNS records are enabled. You will have a choice of various Droplet configurations to choose from, but the cheapest one you will be able to select is the $12 Basic droplet with, which comes with a 50GB hard drive, 2GB of RAM and 1 Intel vCPU.

Digital Ocean pricing is exclusive of VAT.

This will work great for most people but this is not the cheapest droplet available on Digital Ocean overall. We have found that very small blogs and newsletters like ours don't need that much memory or disk space and you could save more money by choosing $6 Basic droplet. Unfortunately because the droplet disks can only be sized up - and can't be reduced in size after the droplet is deployed - if you start with the $12 droplet there's no going back.

Where the one-click-app saves you a lot of time and hassle, it locks you into using $12 droplet - or larger - for the foreseeable future.

💡
If you'd like to try out DigitalOcean, sign up here and get $200 in credit for your first 60 days.

Pinching Pennies

As with many things in the technology space you can spend your time instead of money when starting out. By choosing the slightly harder path and installing Ghost on a Digital Ocean droplet manually rather than via one-click-app you can save yourself $6 a month, or $72 per annum.

This may seem intimidating if you're not familiar with the Linux command line, but every step of the way is thoroughly documented both by Digital Ocean and by Ghost. Below I offer some tips on how to get there.

Create a $6 Digital Ocean Droplet

Follow the Digital Ocean documentation to set up your droplet:

Set up a Production-Ready Droplet | DigitalOcean Documentation
Create a new Droplet with our recommended configuration for improved security, reliability, and monitoring.

More straight-forward instructions are available but we recommend you use the this guide as it includes basic instructions on pre-configuring and securing your droplet as well.

Pay attention to the options that are available to you when creating the droplet. While some of these options can be changed after the droplet is created, most are immutable.

  • select a region that is closest to you, or to your readers. The further away geographically it is, the slower the site will load
  • select an image that is supported by Ghost installation - these currently are Ubuntu 20.04 LTS and Ubuntu 22.04 LTS - while newer versions of Ubuntu are available, they are not fully tested and instructions may not work for you
  • in size section select a Basic droplet type, then Regular CPU with SSD disk type, then finally select $6/mo droplet
  • name your droplet the same as your domain name for easier identification
  • tag your droplet to ensure you can apply firewall protection to it
Screenshot of the Digital Ocean Control Panel showing a section of the droplet creation page with the size and pricing options selected.
⚠️
When customising the Advanced Options Initalization Scripts ensure that the username you select is anything other than usernames root and ghost. Username root is reserved, and username ghost would conflict with the Ghost setup requirements which we'll discuss later.
Screenshot of the Digital Ocean Control Panel showing a section of the droplet creation page showing how the advanced options initialisation script looks like

Set up your DNS

Same as if you were using a one-click-app for Ghost you now need to set up your Domain Name Service (DNS) record. Domain name registrars usually provide a way for you to manage your DNS records that vary wildly, so you will need to consult their documentation for this.

You need to create a new A record and point it to the IP address of the droplet you have just created. The droplet IP address will be visible in your Digital Ocean control panel.

We use Digital Ocean for managing our DNS though and recommend it as well. You can learn more about that in their documentation.

DNS How-Tos | DigitalOcean Documentation
How to accomplish specific tasks in detail, like creation/deletion, configuration, and management.

Resize your droplet

While running the Ghost installation on a $6 droplet is perfectly fine, Node.js which Ghost is written with requires increased memory for the installation and update process. For this we recommend to temporarily resize your droplet to the $12 one, making sure that the disk size remains the same. This will allow you to resize the droplet back down to the smaller $6 size when the installation is completed.

Follow these instructions to resize the droplet, and ensure you select the "CPU and RAM only" option.

How to Resize Droplets | DigitalOcean Documentation
Resize a Droplet to change the amount of CPU and RAM a Droplet has, optionally add additional disk space, or change to a different type of Droplet plan or CPU.

Install Ghost

Use SSH to access your droplet and install ghost following these instructions. I recommend you read through the entire instructions first before you get started.

How to install & setup Ghost on Ubuntu 20.04 or 22.04
A full production install guide for how to install the Ghost professional publishing platform on a production server running Ubuntu 20.04 or 22.04.

If you have used the Advanced Options Initialization Script when setting up your droplet you can skip the "Create a new user" section. Instead when logging into your server log in as the same user you added in the script:

# Login via SSH
ssh notghost@droplet_ip

Follow with all the steps as in the instructions, replacing "user" in the scripts with the actual username you have selected.

Once you run the installation process, it will ask you some questions. I recommend you let Ghost set things up for you automatically by choosing the default options, but ensure that blog URL is the same domain name as the record you have set up in the DNS step before.

Now it's time for a cup of tea or coffee! The installation process can take a while.

Once the installation is completed navigate to your Ghost site and create your owner account by appending your domain name with /ghost

Resize your droplet again

You may get excited at this point and want to go straight to configuring and building your Ghost publication... but wait!

Your droplet is still at $12/mo following the installation.

Navigate back to Digital Ocean control panel and shrink the droplet back to $6/mo size.

How to Resize Droplets | DigitalOcean Documentation
Resize a Droplet to change the amount of CPU and RAM a Droplet has, optionally add additional disk space, or change to a different type of Droplet plan or CPU.

Now your Ghost installation is ready for you to get started. You can customise it further by going through the documentation below:

Ghost Resources — Stories & Ideas About Indie Publishing
A library of resources to help you share content, grow your audience, and build an independent subscription business in the creator economy!

Monitoring

Running Ghost on the smallest possible droplet will mean your memory utilisation will be upwards from 80% of the 1GB allocated, even when it's idle or not particularly busy. This means your site will be at more risk of running out of memory and either becoming too slow to respond to requests, or unavailable entirely.

To mitigate that risk we do recommend to use a monitoring service that will periodically automatically check if the site is up and responding, and let you know if it's not. We like Uptime Robot which is free for basic functionality.

UptimeRobot: Free Website Monitoring Service
Start monitoring in 30 seconds. Use advanced SSL, keyword and cron monitoring. Get notified by email, SMS, Slack and more. Get 50 monitors for FREE!

Should your website become too popular for the $6 droplet you can always scale up!

How does it stack up?


This minimal setup is very plainly cheaper than what you would have to pay for Ghost Pro and it will work well for small sites.

Monthly Billing

Ghost Pro Starter Ghost Pro Creator Ghost on Digital Ocean
$11 $31 $6 + VAT

Annual Billing

Ghost Pro Starter Ghost Pro Creator Ghost on Digital Ocean
$108 $300 $72 + VAT
💡
Note that the prices above don't include Mailgun integration.
For Mailgun integration pricing recommendations see
Ghost and Mailgun for tiny newsletters

Other Considerations

A more detailed breakdown of costs, features, and bundled options on self-hosted vs Ghost Pro can be found below:

Hosting a Ghost publication - Fully-managed PaaS & self-hosted
The most efficient way to deploy an instance of Ghost is on our official fully-managed PaaS. Or you can self-host using our recommended stack!

Note however that the pricing for Self-Hosting in that document makes some assumptions that may not apply to you - and are designed to sway you towards choosing Ghost Pro. It's perfectly fine if you prefer that!

You should note that:

  • the features available to you on Ghost Pro depend on the tier but on self hosted they are available to you straight away
  • by following the steps above you reduce base hosting cost to $6/mo + VAT
  • using CDN only becomes advantageous for very busy sites, Fastly do offer a free tier, and they are not the only provider on the market
  • email newsletter sending even with Mailgun has lower-tiered pricing available, and custom integrations with other providers are also out there
  • fully automated backups can be enabled on Digital Ocean for just 20% extra
  • the built-in Pintura image editor is nifty, but hardly required

As you grow you can always increase the Droplet size or invest in additional services such as CDN or advanced integrations mentioned above.

The obvious disadvantage here is that hosting your own Ghost publication requires not only more time to set up, but also will require regular maintenance, and occasional troubleshooting. While it doesn't take a lot of time, it does require ongoing commitment.

Some documentation on this subject can be found below:

How to Keep Ubuntu 22.04 Servers Updated | DigitalOcean
DigitalOcean makes it possible for you to run as many droplets as you need for a project with one click. However, it’s more straightforward to deploy a serve…

Ghost Docs
Everything you need to know about working with the Ghost professional publishing platform.

How to: Automate Let’s Encrypt Wildcard Certificates
Learn how to automate your systems for issuing and renewing Let’s Encrypt wildcard certificates

⚠️
It's also worth noting that all content you publish on Ghost Pro will be subject to their Terms of Service

That's it! I hope this will help any small blog owners out there!


Do you still want to self-host... but not go through these steps? We get you!
Get in touch with us using the button below and we'll be happy to help you out.


Spread the word

Keep reading