I’ve operated a Wordpress blog for over 10 years. It was a pain at times. When I did proper hosting it was expensive because of the database requirements. I had to think about ways to backup the assets, and ways to backup the database. And although most things could be done using plugins, these would often go out of date, or broken for no apparent reason. And I’d have to spend some time maintaining it.

I don’t really need a database. My blog is just a static collection of posts which I occasionally add to. I know enough HTML, CSS, and Markdown to write the posts myself. Why would I need Wordpress with its requirements at all?!

Of course, I didn’t want to write HTML for each new post I make. So I’ve settled on Markdown. It is easy, intuitive, and I’ve been using it for a while to edit GitHub readme files so I’m very familiar with it.

So the requirements were simple, a static site generator tool which supports Markdown.

So I did some googling, and I’ve discovered that I’m not the only one with that problem. In fact, there are many solutions which offer the same thing, and I’ve settled on Jekyll.

In this post, I will walk you through the experience, and answer some questions which took me a while to find answers to. I hope to summerize my decision making process so that you can make your own decision easier.

Why Jekyll

Jekyll has the following benefits:

  • Supports Markdown content
  • Popular framework with lot of online resources and templates
  • Plugins support for extending functionality
  • Hosting options are very easy and cheap
  • No database, no hassle, no need for backups or any difficult configuration.

Templates

Yes, I’m a developer. But I don’t know how to make things look pretty. So I’ve resorted to using templates. A good source is jekyllthemes.io. Note that templates may have built-in plugins. So make sure you choose a template which has the plugins you seek so you don’t spend the effort configuring plugins yourself.

Features and Plugins

There are many plugins for Jekyll, but here are the ones I found usefull for my usecase. So I have made sure to purchase a tempalte which already includes them:

  • Mobile-ready
  • Contact form built-in
  • Social icons built-in
  • Social sharing built-in
  • Mailchimp subscription form
  • Code Syntax Highlight with Prism.js
  • Support for Disqus comments
  • Simple Jekyll Search
  • Support for Tags and Pagination

All these features were included with my template. They may require subscribing to external services such as Disqus, Mailchimp, and Formspree. But all of them are free and very easy to operate.

Hosting

There are many possibilities to host Jekyll since it is just a static website. And my requirements were also simple. I need the ability to associate my custom domain name for the website, build and deploy my website from my private GitHub repository, and attach a free SSL certificate which auto-renews automatically.

Here are the notable options I chose from:

  • Netlify: Netlify provides native Git integration. This is to deploy your website automatically from your GitHub or GitLab private repository. It also offers ability to associate a custom domain for free (you’ll have to purchase your domain separately of course) and free SSL Certificates for all sites. The only drawback that I found is that certificate renewals for custom domain sites are manual. I don’t want to do manual effort every 90 days.

  • Azure Storage: If you have an Azure subscription, you can get an Azure Storage account and host static websites on it. A typical website would cost a couple of dollars to host per month. Azure provides trial subscriptions for three months and it Azure Storage has the ability to set up your custom domain for free (you’ll have to purchase your domain separately, or through Azure). The main drawback is that you’ll have to also use Azure CDN if you want to serve your static website with HTTPS on a custom domain. Also, because Azure is not a certificate authority, you’ll have to bring in your SSL certificate separately and manually update it when it expires. On Azure you can of course automate this process, but I didn’t want to bother with any of that. The other drawback is that you’ll have to use some other tool to deploy your application from code. I use Azure DevOps already (which you can get for free btw from my.visualstudio.com). In Azure DevOps you can setup a pipeline to deploy your build the Jekyll website and deploy the result to your Azure Storage.

  • Amazon S3: AWS provides 5GB of S3 for the first year for free. You can host static websites directly on S3, associate a custom domain. Same as with Azure, to get HTTPS you you’ll need AWS CloudFront (like Azure CDN). Now, AWS is a certificate authority so you’ll be able to get free certificates and associate them with your CloudFront automatically. This is a good option especially that it is free for the first year. After than it should cost you a few dollars a month to run this setup. For automated deployments, you can use AWS Pipelines to build and deploy your Jekyll website to the S3 bucket. AWS Pipelines is also free for life.

  • GitHub Pages: GitHub Pages provides native Jekyll integration, which means if you have a repository containing Jekyll, it will automatically build and deploy your website to GitHub Pages upon changing. It will also provide you with free SSL certificate for your website’s custom domain as well. This is the simplest hosting solution. The only draw back is that you’ll need a GitHub Pro subscription if your Jekyll website is hosted on a private repository. Since I already use GitHub a lot and already have a GitHub Pro subscription, this was a no brainer. But in case you weren’t, GitHub Pro costs $4/month. So that provides me with the hosting, build, deployment, and HTTPS. Price wise, that is more or less the same as other hosting options. And it is just so simple I will never have to touch the website again except for adding posts. Now, if you don’t mind having your website hosted on a public repository, then you don’t need GitHub Pro and you can use this competely free of charge.

Total Cost of Ownership

Here are the costs for the first year:

  • $6/year for my custom domain off namecheap.com
  • $29 for the Jekyll template from jekyllthemes.io
  • $48/year for GitHub Pro (I already had the subscription but I will count it the cost anyway)

The total cost should be around $60/year for every subscequent year.

You can actually pay $0 for the hosting instead of my $48/year if:

  • You do not need a custom domain, you will simply get assigned a url such as mywebsite.netlify.app or mywebsite.github.io
  • You don’t mind manually updating your certificate of Netlify every 90 days
  • You don’t mind hosting your website on a public repository

That’s it folks, thank you for reading.