Till March 21, 2020, I already create some blog and landing pages with various methods. Using Wordpress self-hosted, HTML-CSS static template, and the last one is using Ghost and Gatsby as the front-end.

7 years ago, I just knew a single way to create a free blog, through Blogspot.com. The step by step I need to do is buy a domain, set up the domain CNAME, and then produce several contents.

But, the free blog ecosystem changed.

Nowadays, a blogging platform is not only Blogspot. If you dive into a search engine, then there are some alternatives such as wordpress.com, Squarespace, medium, and more. But, which is the best free blog platform to start blogging?

Let's dive in!

In short, this guideline able to create various free blog niche such as:

  • Travel blog
  • Music blog
  • Mobile (responsive) blog
  • News blog
  • Personal or private blog
  • Sports blog

Free WordPress self-hosted (free hosting)

As you know, WordPress is the most popular CMS for blogging. More than that, WP is powerful to build an enterprise website. We can create a landing page, integrate with the various plugin, and connect with other software to grow the business fast.

For individual blogging, how to create WordPress self-hosted free? The answer is to use free WordPress hosting. Let's see the step by step to do that:

Free WordPress Hosting Collection (2020)

If you looking for free hosting for your new WordPress site, this is the list you need to try:

000webhost

This is a free hosting from Hostinger. 000webhost is a part of Hostinger marketing strategy to earn leads from search engine.

create a free blog

This free hosting provides:

  • Host up to two websites for free
  • Custom-built hosting dashboard
  • 1-click WordPress installer tool (Softaculous)
  • Full database and FTP access
  • 1 GB of storage
  • 10 GB of bandwidth
  • No ads
  • Free website builder

AccuWeb Hosting

Born in 2003, AccuWeb Hosting gives you a free hosting plan for several websites, including WordPress. This is a US-based hosting company. Unlikely, this free hosting plan just for North America Student.

create a free blog

Try it now and you will catch:

  • cPanel hosting dashboard
  • 2 GB SSD storage
  • 30 GB bandwidth
  • Full server access (database access)
  • 1-click WordPress installer
  • Email accounts
  • Supports custom domain names
  • Basic backup support
  • No ads

Byet.host

This is hosting from iFastNet. All the free WordPress hosting plan are subsidiary to gaining a new user.

create a free blog

The quantity number includes this plan is:

  • Unlimited storage
  • Unlimited bandwidth
  • Free subdomain or custom domain
  • 1-click WordPress auto-installer
  • VistaPanel hosting dashboard
  • Email hosting (up to 5 emails)
  • Full server access (FTP)
  • Unlimited MySQL databases
  • No ads

AwardSpace

Germany web hosting based. Their free WordPress hosting plan suitable for up to 5,000 visits per month.

create a free blog

The features of AwardSpace free WordPress hosting plan is:

  • Host up to 4 websites
  • 1-click WordPress installer
  • Own domain or free dx.am domain
  • Custom hosting control panel
  • Web-based file manager
  • Full MySQL database support
  • Email hosting
  • 1 GB storage
  • 5 GB bandwidth
  • No ads
  • +Free Joomla hosting

x10Hosting

A cloud-based host since back in 2004. Cloud hosting means your website will manage through several servers.

create a free blog

The free WordPress hosting services that will get for you:

  • Cloud-based hosting
  • Unlimited bandwidth
  • 512 MB storage
  • Subdomain or custom domain
  • 2 different hosting dashboards (cPanel or a custom hosting dashboard)
  • Full server access
  • 1-click WordPress installer

Free Hosting No Ads

Offering free hosting since 2010, you can get a free domain and free hosting through their Facebook Group.

create a free blog

Free Hosting No Ads provide:

  • 1 GB storage space
  • 5 GB bandwidth
  • 1-click WordPress installer
  • Allow custom domain name or a free subdomain
  • Email accounts
  • No ads

Free Hosting

It's host without cost. Free Hosting offers generous free cPanel web hosting with unlimited bandwidth.

create a free blog

The features inside of that free hosting plan including:

  • cPanel hosting dashboard
  • 1-click WordPress auto-installer
  • 10 GB storage space
  • Unlimited bandwidth
  • Custom domain name
  • 1 MySQL database

InfinityFree

I got a single WordPress site within InfinityFree. This is a free hosting service from iFastNet.

create a free blog

The reason why I put my one WordPress site into InfinityFree is:

  • Unlimited storage
  • Unlimited bandwidth
  • 1-click WordPress installer (more 400+ other tools)
  • Allow custom domain name or choose from 25 free subdomains
  • 10 email accounts
  • 400 MySQL databases
  • PHP 7.3 support
  • Cloudflare CDN
  • SSL certificate
  • Ad-free

Freehostia

As the name appears, you know what this is. Freehostia offers both free and premium WordPress hosting.

create a free blog

The best feature such as:

  • Up to five websites
  • SSL certificates via Let’s Encrypt
  • 250 MB storage
  • 6 GB bandwidth
  • 1-click WordPress installer
  • 3 email accounts
  • 1 MySQL database
  • Technical support with 1-hour ticket response times

100WebSpace

It is another option of affordable premium plans and free hosting service.

create a free blog

Its free WordPress hosting ree WordPress consists of some feature such as:

  • Single domain name
  • 100 MB storage space
  • 3 GB monthly traffic
  • Single database and 5 MB of storage
  • One-click WordPress installer
  • 99.9% uptime guarantee
  • SSL certificates via Let’s Encrypt
  • Customer support
  • No ads

For now, we are ready to create a Wordpress for blogging. To make it easy, choose one of them. Register as a new account and set up a new WordPress website.

Register into Free Hosting Wordpress Plan

As an example, I took an InfinityFree. I didn't have a special reason why pick this one. It just a random. Feel free if you want to try all of them.

Sometimes, there are limit a new register for this free WordPress hosting. I suggest registering a new account at the early month (01-05 date).

Okay, let's register into InfinityFree. Open your favourite browser and type  https://infinityfree.net. Scroll down and find "Sign up now" button.

create a free blog

You will be redirected to a registration form. Please fill out all the box. And don't forget to check the terms of service and "I'm not a robot".

create a free blog

The dashboard will appear. Click a "Create account" to build a new WordPress website.

create a free blog

Add your custom domain or subdomain that provides by InfinityFree. Click search domain then.

As the example, I pick the subdomain from InfinityFree:

create a free blog

Create a new account password. Do check an "I'm not a robot". Then, click create.

create a free blog

Click the open control panel.

create a free blog

Click I approve.

create a free blog

Build Free Wordpress Website in 2 Minutes

This step is the last one before we see the WP dashboard. You will see the Cpanel dashboard. Looks like this screenshot.

Do scroll down and click Softaculous Apps Installer.

create a free blog

Into search box, type WordPress. Then, click Install now on the right side.

create a free blog

Fill out all the box form, scroll down, and then click Install.

create a free blog

Finally, you will be brought to the WP dashboard. You're ready to blogging now.

create a free blog

Install Ghost CMS Free (Local storage, Heroku, Azure)

Ghost is CMS as like as WordPress but focuses for the writer. Nowadays, this CMS become most popular open-source headless Node.js CMS. Because of that, the content ships with a default admin client and front-end, and also swap them out with your JAMstack.

Ghost provides simple pricing for every user:

create a free blog

I think for blogger beginner that is too expensive. So, I provide an alternative way to use Ghost without subscribing to their pricing. Let's do it!

Local Storage

Open a terminal and insert the code below.

create a free blog

sudo npm install -g ghost-cli

Create a new folder to put Ghost CMS on the localhost. Change [folder name with your own.

mkdir [folder name]

Open the folder you already made. Change [folder name] with yours.

cd [folder name]

Install Ghost repo on local storage. Using this code.

ghost install local

Sometimes you meet the error, please go to https://forum.ghost.org/ to know what issue on your installation error.

After successful installation, run your Ghost. Open our Ghost folder. Change [folde] with your folder.

cd [folder]

Then add this code.

ghost start

If your Ghost is a successful installation, your terminal looks like this:

create a free blog

Open http://localhost:2368/ghost/ to set up your Ghost site. Your Ghost front-end will be load on http://localhost:2368.

ghost start to run your Ghost website and ghost stop to stopping your Ghost site on localhost.

Setup the dashboard and upload your content. And then, we need to convert the ghost into a static web. Follow this way!

Open a new terminal. Install brew.

brew install wget

Then, create a bash file gui.sh in the root of the blog directory contains this content:

#!/bin/bash

# Define urls and https
from_url=http://localhost:2368
to_url=yourdomain.com 
to_https=true

# Copy blog content
wget --recursive --no-host-directories --directory-prefix=static --adjust-extension --timeout=30 --no-parent --convert-links ${from_url}/

# Copy 404 page
wget --no-host-directories --directory-prefix=static --adjust-extension --timeout=30 --no-parent --convert-links --content-on-error --timestamping ${from_url}/404.html

# Copy sitemaps
wget --recursive --no-host-directories --directory-prefix=static --adjust-extension --timeout=30 --no-parent --convert-links ${from_url}/sitemap.xsl
wget --recursive --no-host-directories --directory-prefix=static --adjust-extension --timeout=30 --no-parent --convert-links ${from_url}/sitemap.xml
wget --recursive --no-host-directories --directory-prefix=static --adjust-extension --timeout=30 --no-parent --convert-links ${from_url}/sitemap-pages.xml
wget --recursive --no-host-directories --directory-prefix=static --adjust-extension --timeout=30 --no-parent --convert-links ${from_url}/sitemap-posts.xml
wget --recursive --no-host-directories --directory-prefix=static --adjust-extension --timeout=30 --no-parent --convert-links ${from_url}/sitemap-authors.xml
wget --recursive --no-host-directories --directory-prefix=static --adjust-extension --timeout=30 --no-parent --convert-links ${from_url}/sitemap-tags.xml

# Replace localhost with real domain
if [ "${to_https}" == true ]; 
then LC_ALL=C find ./static -type f -not -wholename *.git* -exec sed -i '' -e "s,http://${from_url},https://${to_url},g" {} +; 
fi
if [ "${to_https}" == false ]; 
then LC_ALL=C find ./static -type f -not -wholename *.git* -exec sed -i '' -e "s,http://${from_url},http://${to_url},g" {} +; 
fi
LC_ALL=C find ./static -type f -not -wholename *.git* -exec sed -i '' -e "s,${from_url},${to_url},g" {} +
LC_ALL=C find ./static -type f -not -wholename *.git* -exec sed -i '' -e 's,http://www.gravatar.com,https://www.gravatar.com,g' {} +

# Set up Github Pages CNAME
echo "${to_url}" > static/CNAME

Replace yourdomain.com with your domain name. If your website is activated HTTPS, then make sure to_https is true, otherwise false. This code will change all links from localhost:2368 to yourdomain.com

To run this code, you need to open two terminal.

To run Ghost. start ghost
To convert Ghost into static web

I assume your Ghost is running. Open a new terminal and then insert this code below:

chmod +x gui.sh

Then, run it.

./gui.sh

Then go to the static folder:

cd static

Next step, create a new git repo and commit everything here then push to your new GitHub repo:

git init
git add
git commit "Initial Commit"
git remote add origin [email protected]:<your_user_name>/<repo_name>.git
git push -u origin master

Replace [email protected]:<your_user_name>/<repo_name>.git with your own git.

Enable GitHub Pages in settings. If you want to use your domain, activate the domain. Save your domain into the box.

create a free blog

Then, set A & CNAME records for your domain.

create a free blog

For A record, set this:

  • 185.199.108.153
  • 185.199.109.153
  • 185.199.110.153
  • 185.199.111.153

For CNAME www with your GitHub pages profile URL. For example, ‘YOUR-GITHUB-USERNAME.github.io.’. Remove YOUR-GITHUB-USERNAME with yours. This configuration takes time until 24 hours.

Deploy Heroku

Deploy Ghost into Heroku is super easy. Let's do!

Go to https://elements.heroku.com/buttons/snathjr/ghost-on-heroku
Click Deploy to Heroku button

create a free blog

If you are not a Heroku member, please register first on https://heroku.com. If you are already a member them, please log in. The Deploy to Heroku button will redirect you to this page.

create a free blog

Remove app-name and YOURAPPNAME with your own.

Click Deploy App

create a free blog

If the installation success, then opens this URL:

  • Open https://YOURAPPNAME.herokuapp.com/ghost to set up your admin account
  • Open https://YOURAPPNAME.herokuapp.com to see your Ghost live preview.

A custom domain is available with update your Ghost blog’s APP_PUBLIC_URL environment variable.

Microsoft azure

Open https://github.com/novogeek/Ghost-Azure/blob/master/README.md
Click Deploy to Azure

create a free blog

As like as the Heroku rules, we need to register or login into Azure. Let's do on https://azure.microsoft.com. After that, you will be redirected to the configuration page on Azure.

create a free blog

Click Next and wait until this process installation is done.

Then, enable always on feature at Ghost. Go the Configuration and click on General settings. Click enable Always on.

create a free blog

Add index.js as default document to set your homepage. Go to Configuration, then click on Default documents and add index.js

create a free blog

Open this URL to set up your Ghost admin for the first time. Open this URL on your browser:

https://[your-app-name].azurewebsites.net/ghost

Then, see the ghost front-end live preview below:

https://[your-app-name].azurewebsites.net

Replace [your-app-name] with your app name.

Azure allows replacing their subdomain with your domain. Follow this way to do that.

Open Portal and click Home. Then, click your website.

create a free blog

Scroll down and click Scall up. Click D1 and Apply.

create a free blog

Then, set up your custom domain into Custom domain.

create a free blog

Finally, set your domain DNS.


Create a Free Gatsby Blog (Local storage, Gatsby cloud, Github)

This is my favourite front-end CMS. That is because of Ghost able to increase website speed, lighthouse, and get tips to improve user experience.

create a free blog

This web performance will help us to stand out in search result. So, how to create a free website and blog through Ghost?

There are three methods to install Gatsby. Let's try it!

Local storage

Open terminal and type this code

npm install -g gatsby-cli

After that, we will clone a website from this repo https://github.com/KontenaIndonesia/n4v. The live preview looks like https://novela.narative.co.

In the terminal, add this code then.

gatsby new your-web-app https://github.com/narative/gatsby-starter-novela

Replace your-web-app with your web name. Then, put this code.

cd your-web-app

Replace your-web-app and run gatsby develop.

gatsby develop

Open

http://localhost:8000/

If you want to build a static page, try this code. You need to open a new terminal to do it.

gatsby build

Create a new git repo and commit everything and push to your new GitHub repo:

git init
git add.
git commit "Initial Commit"
git remote add origin [email protected]:<your_user_name>/<repo_name>.git
git push -u origin master

Replace [email protected]:<your_user_name>/<repo_name>.git with your own git.

Enable GitHub Pages in settings. If you want to use your domain, activate the domain. Save your domain into the box.

Then, set GitHub subdomain with your custom domain.

Gatsby cloud

We will build a website through Github, Gatsby Cloud, and Host the website on Netlify.

Open Github and click import repository

create a free blog

Put the URL below on the box.

https://github.com/KontenaIndonesia/n4v.git

Give a repo's name

create a free blog

Click begin import and wait a few seconds. You will look like this screen.

create a free blog

Jump into Gatsby Cloud. You need to connect with Github. After that, create a new site.

create a free blog

Choose I already have a Gatsby site and click Next

create a free blog

Then, type your repo title and choose the right repo and click Next.

create a free blog

Scroll down, skip all the option that appears, and click Skip this step

create a free blog

Click create site

create a free blog

Wait for a few minutes and configure web host. Click do it now.

create a free blog

Scroll down and connect with your Netlify account.

create a free blog

Click Connect to continue.

create a free blog

A popup screen will appear and choose Github

create a free blog

Click authorize

create a free blog

Create your site name, then choose your account type, and click create. Wait for a moment and your site will host on Netlify.

create a free blog

You will bring back to Gatsby Cloud dashboard and looks like this.

create a free blog

Open a new tab on your browser and go to Netlify.com. Find your site and click domain settings.

create a free blog

Scroll down and click add a custom domain. Add your domain on the box and follow the step till the end.

create a free blog

Click Check DNS configuration and scroll down.

create a free blog

Click Set up Netlify DNS for [your-domain] and add your domain.

create a free blog

Click Verify.

create a free blog

Click Yes, add a domain, then continue, finally point your domain (on your registrar dashboard) to Netlify. Set you nameserver with this below.

dns1.p01.nsone.net
dns2.p01.nsone.net
dns3.p01.nsone.net
dns4.p01.nsone.net

This process will take 24 hours. After that, you can see your new blog. Congratulation!


Install Publii Desktop CMS

Publii is the most simple blogging for a beginner. From their home page, they describe themself as:

A new Static CMS with GUI to build an extremely safe, fast and stylish HTML website.

Publii dashboard looks like this:

create a free blog

Install Publii CMS into your desktop. Go to https://getpublii.com/download and choose the version that compatible with your own. Then, install Publii master after the downloading process is done.

  • Open the Publii and start blogging.
  • Choose your favourite theme
  • Set your blog info
  • Create articles
  • And more.

Then, set your custom domain on Publii. To do this, we need to connect Publii with Netlify. Follow this way.

Go to the main Netlify page and log-in. Scroll down and find Your Sites screen.

create a free blog

Download file from Publii CDN. Download and drag the zipped folder to the box (don't unzip it!).

Once the file has been uploaded, Netlify automatically creates a site name.

create a free blog

On the Website Settings screen, note the Netlify URL with the format https://siteName.netlify.com. We need this on Publii dashboard.

create a free blog

Scroll down to Site info and copy the API ID.

create a free blog

Click on the Account option at the top-right of the screen.

create a free blog

Click on the OAuth Applications tab, then click the New access token button.

create a free blog

Add the name of your site. Next, click the Generate token button.

create a free blog

We will see a New token created message. Copy this token and store into Publii dashboard.

create a free blog

Jump into your Publii desktop and then:

  • Click on the Server option in the left sidebar to open the Server Settings screen.
  • Set the Domain to your Netlify URL yourSitename.netlify.com
    Choose https://
  • In the Protocol drop-down list, select Netlify.
  • Enter the string of characters from the API ID of your Netlify
  • Enter the Netlify token
  • Click the Save settings button
create a free blog

For some reason, I did not publish how to create a free website for Netlify CMS, Jekyll, and Hugo. In the next updates, I will update this article with the guideline of them.

That is the option of how to start blogging for a beginner. That feel difficult for some people. Because of that, feel free to reach out me through our business email ([email protected]).