DEV Community

Cover image for A Ghost blog for $0
Miguel Piedrafita
Miguel Piedrafita

Posted on • Originally published at on

A Ghost blog for $0

You may have noticed my blog is running Ghost, one of the best blog platforms in the world. But what if I told you you can get your own Ghost blog for free.


There are three main hosting options for Ghost: you can either use Ghost's own hosting, use a DigitalOcean droplet or use Heroku. For this blog, I decided to go with the cheapest option: Heroku.

Deploy Ghost to Heroku

Deploying Ghost to Heroku is very simple: Just click the button above, fill in the name and URL and click Deploy. Here's a quick GIF to illustrate the process:

A Ghost blog with zero budget
Heroku walkthrough

Configuring your blog

After your app finishes its first deploy (should take around two minutes), you'll be redirected to your blog's admin, where you'll be guided on the rest of the setup (naming the blog and creating an admin user). At this point, we already have our blog up and running, but with a limitation: we're using a subdomain. Let's see how we can fix it.

Custom Domain

Heroku offers free custom domains once you verify your account. This means that if you add a credit card to your heroku account, you'll be able to configure a custom domain for your blog. Fortunately, the entire process is free and you won't be billed, but you'll have to take care of what you do from now on.

Anyways, access your blog from your Heroku dashboard and go to the settings tab. If you scroll down, you'll find a section called Domains and Certificates, where you can add a custom domain. After pointing your DNS to Heroku, you'll also have to update your PUBLIC_URL variable. To do this, scroll back up and click on the Reveal Config Vars button, then find the PUBLIC_URL variable and change it to point to your new domain. After you've done this, restart all your dynos. Here's another GIF:

A Ghost blog with zero budget
Another Heroku walkthrough

Keeping your dyno up

In the Heroku free plan, dynos (the programs that serve your blog) are disabled when there are no requests to your blog, and enabled again on new requests. A commonly known hack around this would be to use some uptime checker service that pings your site every 10 minutes to keep it up.


Before using this approach, check if Ghost's official hosting or DigitalOcean works better for you. After all, every setup is different.

Liked this article? Consider helping me achieve my dream :)

Top comments (3)

truongoi profile image
Truong Nguyen

Heroku is no longer allow you to add SSL certificate to your custom domain on Free plan. I've tried so many ways to add using Let's Encrypt and but Heroku CLI said only allows when upgrading to Hobby or Pro plans.

Once I setup domain and DNS, I switched to Heroku Hobby (paid) plan and it went on smoothly with Auto Certificate Managerment.

So is your blog still running on Heroku free plan with SSL? If so, can you share how to set it up? Thanks.

idblogger profile image


bayuangora profile image
Bayu Angora

Great. Do you have instant deploy button to Netlify?