Over the last 20+ years my personal blogging has been marred with fits and starts. The services/platforms/tools that I have used to host my words are countless – I literally can't name them all – but I had thought that I found a platform in Medium with a balance of style, customization and best of all dead simple tooling. All of that changed about a year ago when, like many other Internet businesses, their model for revenue changed and I was constantly begged to pay money to read other people's thoughts.
Now, I am all for ensuring that content creators are paid, but after having a "taste" of the platform as it was I didn't really see myself wanting to contribute to it. That led me to take a look at the Ghost platform. This post isn't really about why I chose Ghost but a major reason was because of how dead simple it is to self-host.
Before we get into the nerdy technical bits it is important to note that rather than self-hosting on Digital Ocean (or some other cloud provider) you can pay a yearly fee to have a managed version with Ghost Pro. It was my decision to not go down that road because I want the flexibility to modify the source code myself. It also happens to be quite a bit cheaper with only minimal risk.
There are a countless number of vendors that offer the ability to purchase a domain name. In this example, I have used Google Domains, but you can use any service that fits your needs. In some cases, certain Top Level Domains (TLD) are only offered from specific vendors, e.g. the .dev TLD from Google, which obviously will force your purchase one way or another. But for the common extensions you can use any registrar.
Most modern registrars offer an initial configuration for DNS nameservers and a user interface to manage records. We'll be adding an A record after we set up the Ghost instance in Digital Ocean.
Set Up Ghost with Digital Ocean
Digital Ocean offers an excellent Marketplace that has 1-click installations for many different types of software. The single click creation of a droplet running Ghost is foolproof. This will bring you to the instance creation page that has a whole lot of toggles, but my suggestions for setting up a simple installation of Ghost:
- Set the hostname to the domain name you purchased for your blog.
- $10/month instance with 2GB ram and 1 CPU.
- Select a region nearest to your core audience.
- Tag your instance with blog for quick searching.
- Add instance backups for $2/month.
After you click the Create Droplet button and the instance finishes booting you'll see the public IPV4 address. This is what you're going to use to configure the A record in your registrar's domain configuration.
Now that your instance is available the final external step is to configure the DNS A record for the domain. Most people are going to want to add two records:
- The @ A record, e.g. https://jbellone.blog/
- The www CNAME record, e.g. https://www.jbellone.blog/
The data component on the A record is the IPV4 address of your Digital Ocean droplet and the data component on the CNAME record would be set to @. But if you're using Google Domains, you can leverage smart forwarding and forego the second record.
The domain forwarding option allows the most flexibility and if your registrar offers it you should definitely take advantage. After the records are set up it is time to follow the Getting Started Guide from the Digital Ocean marketplace. This will walk you through the initial set up of the instance.
Your First Post
If you've made it to this point you're ready to start configuring your Ghost installation. My suggestion would be to walk through the Settings and set up all of the parameters for your blog, e.g. title, description and theme. There are also a whole set of integrations that you can leverage with social accounts such as Twitter to automate the posting.