You may have noticed this blog is running Ghost, one of the best blog platforms in the world. However, one of its downsides is that, while you can host a Wordpress blog almost anywhere, it's somewhat difficult to find a place to host Ghost, and even more difficult if you want to host it for free.
Where to host your Ghost instance
There are three main hosting options for Ghost: you can either use Ghost's own hosting, which guarantees you high-quality hosting and automatic updates with a high price tag; host it on a DigitalOcean droplet or on Heroku. The easiest option (and also the cheapest one) is Heroku.
Deploying Ghost to Heroku is very simple: Just click the button below, fill in the name and URL and click Deploy.
Configuring your blog
After your app finishes its first deploy (can take up to five minutes), you'll be redirected to your blog's dashboard, 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 Ghost blog up and running, but with an annoying limitation: we're using a
herokuapp.com subdomain. Let's see how we can fix it.
Using a custom domain on Heroku
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. Don't worry, the entire process is free and you won't be billed.
To verify you account and add a custom domain, 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.
Preventing your Heroku Dyno from sleeping
In the Heroku free plan, dynos (the programs that serve your blog) are temporarily disabled when there are no requests to your blog in a short period of time (around 15 minutes), and enabled again on new requests. A commonly known hack around this is to use an uptime checker service that pings your site every ~10 minutes to keep your dyno up.
Growing & Scaling
Although Heroku is the cheapest option to get started, you might consider moving off it when your blog starts growing. You might want to consider switching to Ghost's official hosting or, if the price is too expensive, a DigitalOcean droplet.