How to Start a Blog For Free in 15 Minutes

Background Info

These days the blog market is getting quite saturated but people still manage to make six-figure incomes! If you're ready to try your hand in the industry but don't have or want to risk any startup funds do not fret! There is still a way. I'll show you how to put together a blog in no time with virtually no overhead! We'll use Heroku for hosting, Ghost for the blogging platform, and Amazon S3 for storage space. It's very straight forward and almost no technological competency is required. Anyone could do it!

Getting Started

The first thing you will need is a domain name and a DNS provider. These are often combined into one service which makes things a lot easier, but you can use whatever you want. If you don't already have a domain and DNS provider, then this will be the only time you'll need to spend any money -- usually around $12. I use Google Domains which I have found to be the simplest service like this. So go grab yourself a domain and you'll be all set to start. Do over think this step, however! Your blog's domain will fit right into your brand, which is essentially your entire product.

Spend some time developing a brand you're comfortable with and will enjoy. When you're all set, buy that domain name and get started!

Setting Up Hosting

Next you will need a place to host, or store, your blog so that your visitors can access it. There are a lot of options out there, but for this guide, Heroku is what we will use. They have a free option that is good enough to start with and are easily integrated with the Ghost blogging framework. So head to their sign up page and create an account.

Setting Up Storage

One downside to Heroku is that it doesn't have a permanent storage system. What this means is that you can set up your website to run on their system, but any photos or files you upload will be deleted everytime their system restarts your site. All that Heroku will story for you is the code to your site and database information. There is an easy solution for this, though, which is to connect your blog to a third-party storage service. Because of integrations that are already built and provided by Heroku and Ghost, the best way to do this is with a free tier accound for Amazon AWS. Follow that link and create an account, but keep in mind that the free tier only lasts 12 months. This isn't a permanent solution, so work hard on you blog and in a year you'll hopefully have made at least a few bucks to keep your AWS account active!
Once you've created your account go to the AWS Console. Open the services tab and select the 'S3' option from under storage.

Now you just need to create a bucket. Unless you know otherwise, you should be just find to leave all the defaults. Just pick a name and write it down. You'll need it in just a sec. Also, make note of the region. It should be something like 'us-east-1' or 'eu-west-1'.
Now you need to generate keys to authenticate your blog, and only your blog, to have access to this bucket so that you'll be able to upload photos, etc. from the Ghost backend. Select your name in the top right corner and select 'My Security Credentials' from the dropdown. On the security page, expand 'Access keys (access key ID and secret access key)' and then press the 'Create New Access Key' button. This will generate the keys you'll need. Select the option to show the keys and leave this tab open. You'll copy and paste the keys into Heroku in just a minute.

Set Up Heroku App

Everyone go out and thank the Github users Cobyism and Mars for making this next part extremely simple. Follow this link to the Github repo and click the 'Deploy to Heroku' button. This will open up a page on Heroku that, once you fill in all the values, will generate your blog including configuring the database and AWS storage! How easy!!
So fill out the values in the form on Heroku now. Set the PUBLIC_URL option to be the domain name you bought before. Copy the information from your AWS access keys into the corresponding S3_ACCESS_KEY_ID and S3_ACCESS_SECRET_KEY options. Put the name you chose for your bucket into S3_BUCKET_NAME and the region into S3_BUCKET_REGION. Don't worry about S3_ASSET_HOST_URL, you can just leave it blank. Now press 'Deploy app.' If you haven't already, you'll need to fill in payment information. Don't worry, they won't charge you unless you choose a different service level. Now press 'Deploy app' again. Let the suspense build, because you'll have to wait a few minutes for the app to deploy. You're getting close, though!

DNS Configuration

Go to your DNS provider or set one up if you haven't already. This next part is the trickiest part so you need to follow closely. Create a subdomain forward that forwards '@' to http://www.yourdomain.com. Now go back to Heroku and select 'Manage app'. Go to 'Settings' and add your domain under the 'Domains and certificates' heading. Depending on you DNS provider, you'll probably need to include the www (i.e. 'www.yourdomain.com'). Heroku will then generate a 'DNS Target' that will probably look like 'www.yourdomain.com.herokudns.com'. Copy this target and head back to your DNS provider. There you'll need to create a CNAME record that points 'www' to that target you copied. Now wait a few minutes for the DNS records to propogate and you're blog will now be public!

The last thing to do is to go to the Ghost backend and set up your account and then blog away!!