8 min read

Setting Up a Ghost Blog and Newsletter in 5 Steps

Setting Up a Ghost Blog and Newsletter in 5 Steps

The search for the perfect blog and newsletter setup is a never-ending one. I've recently redesigned my blog to memic a Substack + Medium combination where I own the content and membership data.

The whole process took me ~3 hours mostly because I had to Google several of the steps and piecemeal them together. I thought I'd remedy that by building my own set of instructions here for anyone who might be interested in building their own Ghost site.

Note, you can get all of the below for $36/month by signing up for a pro account on Ghost's website. I didn't want to pay that much for my blog but did like the Ghost CMS so I started exploring.

I'm going to assume you already have a domain to use, but if not, any domain service works fine for our purposes. Let's get started.

Step 1: Setting Up Your Ocean Digital Droplet

The first step to getting your Ghost site up and running is establishing a droplet

Head over to Digital Ocean and set up an account. Once you're logged in, go to the marketplace in the navigation pane on the left-hand side of the page.

Once there, search for "Ghost" and navigate to the Ghost droplet.

Click “Create Ghost Droplet”. This is the “Digital Ocean One Click” setup that will build and launch a server for you.

Before creation, Digital Ocean will bring you to a page where you need to choose your droplet size. I would recommend that you start at the lowest tier which is: Standard $5/month. Note that this option doesn’t show up immediately, so you’ll need to navigate to the left to find it.

As for the other setup conditions, you can enable these at your discretion and are mostly optional. You will need to choose your data center region, which should be closest to where you expect most of your readers are. I did not select any additional add-ons or SSH keys, as it’s not mandatory for set-up.

Once you’ve selected a name for your droplet (this can be anything), Digital Ocean will take a couple of minutes to create the droplet. Once the droplet is created, you should see an IP address.

If you navigate to that IP in your browser, you’ll see the below view of the Ghost Installation page, which means the droplet is set up and hosted by Digital Ocean at that IP address. You can now connect this IP address to your domain.

Step 2: Connecting Your Domain to Your Digital Ocean Droplet

I'm assuming you already have a domain you'd like to connect to the droplet, but if not this is the point where you'll want to register for one.

The process I'm describing works for a domain (kevindstevens.com) or a subdomain (blog.kevindstevens.com).

To add the domain to Digital Ocean and set up your Digital Ocean DNS records click the right-hand toggle to “Add a domain”.

Type your domain name in the input field and then click “Add Domain”. You should see DNS records populate similar to the below.

Depending on how you’ve set up your domain previously,  your DNS may be found within your domain registrar (ex: Google Domains, GoDaddy, etc.) or if you’ve already re-routed your DNS to a third party like Cloudflare, you would be updating the DNS records there. You’ll need to direct your A-record to the IP given to your droplet with the “name” being the domain or subdomain where you hope to host your blog home.

For example, if you wanted blog.domain.xyz to house the blog, you would set up the A-record for “blog” that to point towards the IP, if you want your entire site to point there (like mine) you'll change the existing A record to point to the IP address from Digital Ocean.

Once the DNS records have propagated, you should once again see the same Ghost installation page at the domain or subdomain that you just configured.

Note: some DNS providers state this process can take up to 48 hours, but in my experience it almost always happens within a few minutes.

Step 3: Installing Ghost

Go back into Digital Ocean, click into your droplet if needed. For a novice like me, this is where I was hung up for a bit.

Click on the "access" link within your droplet, and reset your root password. Digital Ocean will send you an email with the new password within a few minutes.

Back on the Digital Ocean droplet page, open the console over on the right-hand side. This should open the console in a new tab or window that is requesting a login.

Enter your username (always “root”) and then the password sent to you by email from Digital Ocean. Note: again, I'm a novice, the password will not show when you type it or paste it from your email.

The terminal will then prompt you to update your password immediately. This is mandatory.  It’ll first prompt you to enter your current UNIX password (same as the password in your email) and then add a new password twice. If this is done correctly, you should see the installation initialize, and after a few seconds, you should see the below screen.

Press enter to begin the installation to which you should see the program downloading.

To ensure that everything is set up properly, you can now go to your domain or subdomain and you should see a basic blog template from Ghost (example below).

Now, if you navigate to the domain/ghost or subdomain/ghost you'll see a new setup page like the one below.

Once you go through the steps of the sign-up process, you should get to this page! This is your Ghost portal where you can customize, upload content, add integrations, and more.

There are several great resources for Ghost so I won't go into them here, but you're now ready to upload a theme, add scripts for tracking and comments, etc...

For this site, my theme is Lyra-Colbalt, I added Google Analytics, and I added social share buttons for each post.

Step 4: Setting Up Mailgun with Ghost

To send subscription emails and newsletters on Ghost blog you will need to configure mail-sending API's to your ghost blog. Ghost only supports Mailgun so we're left with no other choice on which service to use.

Note: you can use a service like Mailchimp with Zapier, but that will require additional work for integration.

After creating an account, add a domain or subdomain to Mailgun and create new DNS records on your DNS providers dashboard.

You'll then add these DNS records to the provider you use for your site (GoDaddy, Google Domains, Cloudflare).

Note: if you use a subdomain Mailgun will show the whole record, in the example above that would be mail.kds-vc.com. For GoDaddy, I only needed to add everything before the .kds-vc.com.

From here, click "Verify DNS Settings" and Mailgun will check to see if it can reach your DNS. Once it can, the X's and ?s will become checkmarks and you're good to go.

Next, we'll add the following mail configuration,  you'll need to reset your Mailgun SMTP password to get it.

First, go to your Mailgun dashboard and locate your domain settings. Click the link shown in the image below.

From here, you should see a screen that allows you to change or view domain settings, DNS records, SMTP credentials, and API keys. Click on SMTP credentials and reset your password by using the button on the right-hand side of the page.

The password will appear as a popup this time and you'll want to copy it for our next step.

Now, you'll need to modify the Ghost configuration on the Digital Ocean cloud. Open the console in Digital Ocean from Step 3 and login using the credentials you created if necessary.

Change the user to be Ghost admin by entering the following code in the console:

sudo -i -u ghost-mgr

Now, locate and open the config file by entering the following:

nano /var/www/ghost/config.production.json

I recommend that you don't paste the code from the box below, Digital Ocean's console is terrible and pasting made it harder to edit.

  "mail": {
        "transport": "SMTP",
        "options": {
            "service": "Mailgun",
            "host": "smtp.mailgun.org",
            "port": 465,
            "secureConnection": true,
            "auth": {
                "user": "postmaster@yourdomain.com"
                "pass": "your_password"

Next, you'll want to head back to the main directory so you can restart Ghost for the changes to take effect. To do so, enter the following:

sudo -i -u ghost-mgr  then press enter

cd /var/www/ghost/ then press enter

ghost restart then press enter

If you create a syntax error within the config file, the site will stop working with a 502 Bad Gateway error. If the syntax is correct, but the credentials are wrong and step 5 is complete - the site will work, but nothing will happen when you enter an address or try to send a test email.

Step 5: Adding Mailgun to Ghost via API

To start sending out bulk emails you will need to provide your Mailgun API key to Ghost. For this note the API key from Mailgun dashboard located on Dashboard -> API Keys which is located on the right hand side just below the navy box with your account settings. Copy your private API key.

Once you have that key go to your Ghost admin dashboard and expand the labs -> Email newsletter settings. Add the Mailgun Domain (mail.kds-vc.com in this case) and Mailgun API key.

Once you save settings, you should be set to send and receive emails from your site. I recommend testing this by signing up on your site as a reader would and also sending a test blog post to your email.

That's it! You should now have a fully functioning blog and newsletter combination. Ghost allows you to manage members and set up a Stripe integration if you decide to charge for content.

Hopefully, this guide is helpful for you as you build your blog and audience!