Mark Ku's Blog

The Problem

Many people I know want a personal website like mine. However, setting one up can be expensive—cloud hosting alone can cost over 4,000 TWD per year. Not everyone has their own server, so today, I'm going to share an ultra low-cost method for building a website.

Setup Costs

Website Hosting: 4000+ / year
Domain Name: 680 / year

What is Jekyll

Jekyll is a simple, blog-aware, static site generator for personal, project, or organization sites. Written in Ruby by Tom Preston-Werner, GitHub's co-founder, it is distributed under the MIT license. (Wiki)

Prerequisites

* Register for a GitHub account

* Buy your own domain name (For Taiwanese domains, a local registrar is usually cheaper. For international domains, you can use GoDaddy.)

Setup Steps

1. First, choose a Jekyll template

Free Templates

2. Fork the project. This tutorial uses the Zolan open-source theme as an example. Click Fork.

GitHub Zolan repository page with highlighted Fork button
GitHub Zolan repository page with highlighted Fork button

3. Once the fork is complete, we need to configure GitHub Pages. Go to Settings > Pages. Under Source, select your branch, set the folder to / (root), and click Save.

GitHub Pages settings page with branch, root folder, and save highlighted
GitHub Pages settings page with branch, root folder, and save highlighted

4. GitHub Actions will now start the build and deployment process for the website.

Successful GitHub Pages build and deployment workflow in Actions tab
Successful GitHub Pages build and deployment workflow in Actions tab

5. Once the build and deployment are finished, your website's URL will be displayed on the GitHub Pages tab.

GitHub Pages settings displaying published website URL
GitHub Pages settings displaying published website URL

6. Enter your custom domain and click Save.

GitHub Pages custom domain freeblog.markkulab.net and Save button
GitHub Pages custom domain freeblog.markkulab.net and Save button

7. Go to your DNS provider and add a CNAME record for your domain, pointing it to the URL provided by GitHub.

GoDaddy DNS records page adding CNAME for freeblog to github.io
GoDaddy DNS records page adding CNAME for freeblog to github.io

8. Edit the _config.yml file in your project, clear the baseurl value, and then Commit changes.

GitHub config.yml file showing baseurl parameter highlighted in red
GitHub config.yml file showing baseurl parameter highlighted in red

9. At this point, GitHub Actions will rebuild and redeploy. Once it's done, you can visit your blog.

Zolan blog homepage with Alex Rodriguez's intro and photo
Zolan blog homepage with Alex Rodriguez's intro and photo

10. If you want an HTTPS certificate, you can manage your domain's DNS with Cloudflare to get their free SSL service. See my previous post for reference.

Editing Website Posts

1. Go to the project's Code tab > zolan/_posts. This folder contains the blog posts. Click on any post to select it.

GitHub posts directory listing blog post markdown files
GitHub posts directory listing blog post markdown files

2. Click the edit icon.

GitHub page showing Jekyll post file with highlighted edit icon
GitHub page showing Jekyll post file with highlighted edit icon

3. Try modifying the title and content, then Commit changes.

GitHub web interface editing a Jekyll markdown fileGitHub commit changes dialog for Jekyll markdown file

4. Wait for the GitHub Action to finish building and deploying. The content of the post you just modified will be updated.

Deployed Jekyll blog post titled Welcome to Jekyll! mark testtest in browser
Deployed Jekyll blog post titled Welcome to Jekyll! mark testtest in browser

5. To add a new post, simply create a new file in the zolan/_posts/ folder, and a new article will appear.

Additional Information

I usually write out my ideas in HackMD first, then copy the content into a new file in that folder to publish.

Introduction to Relevant Files and Folders

zolan/_posts/ => Directory for posts
zolan/images => Path for images
zolan/_data/settings.yml => Used to set the site icon and content
zolan/_config.yml => Site configuration; you can adjust pagination size here
zolan/_layouts/ => If you know some HTML, you can modify the layouts here

Previous post: Setting up Jekyll in a container Link

If you want to optimize Jekyll for SEO, you can achieve this with the following two plugins:

jekyll-sitemap
jekyll-seo-tag

Previous post: Setting up Jekyll in a container Link

Author

Mark Ku

擁有 10+ 年經驗的資深軟體工程師,現為 AI 應用 Builder,專注於大型平台架構與簡化複雜系統設計,從電商系統到訂閱與收費平台,結合 AI Agent、AI 整合與自動化開發,打造高效率且可持續演進的產品技術基礎。Read More

Found this useful?

The author's free tools, daily podcasts and newsletter are all here.

Mark Ku · This article is licensed under CC BY 4.0. Credit the author and link back to the original when reusing it.

Comments

Subscribe to Newsletter

Subscribe to get new posts delivered instantly — never miss a tech share.

By submitting, you agree to receive emails. You can anytime.

Popular Posts

View all
Mark Ku
··602

Oracle Cloud Always Free Tier: Linux Host and Static IP for a $0 Cloud Solution

Oracle Cloud Always Free Tier: Linux Host and Static IP for a $0 Cloud Solution
Mark Ku
··490

Say Goodbye to Postman's Fee Trap! A Hands-on Guide to Bruno, the Open-Source Git-Native API Testing Powerhouse.

Say Goodbye to Postman's Fee Trap! A Hands-on Guide to Bruno, the Open-Source Git-Native API Testing Powerhouse.
Mark Ku
··333

A Free, Open-Source, Notion-like Knowledge Base — A Complete Guide to Deploying and Backing Up Outline Wiki

A Free, Open-Source, Notion-like Knowledge Base — A Complete Guide to Deploying and Backing Up Outline Wiki
Mark Ku
··264

Training Your Own AI Voice: Hardware Requirements, Open-Source Model Comparison, and LoRA Fine-Tuning

Training Your Own AI Voice: Hardware Requirements, Open-Source Model Comparison, and LoRA Fine-Tuning
Mark Ku
··221

Building an Efficient API Management Platform: Deploying Kong Gateway from Scratch - Part 1

Building an Efficient API Management Platform: Deploying Kong Gateway from Scratch - Part 1
Mark Ku
··215

Setting Up Samba on Ubuntu to Share Folders with Windows 11

Setting Up Samba on Ubuntu to Share Folders with Windows 11