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.
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.
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.
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:
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
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.
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.
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.
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.
Now your Ghost installation is ready for you to get started. You can customise it further by going through the documentation below:
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.
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
Annual Billing
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:
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:
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.