Christopher Flynn

Machine Learning
Systems Architect,
PhD Mathematician

Open Source



Jekyll GitHub pages to Hugo on S3

2019-02-18 Feed

I just finished migrating this website from Jekyll and GitHub pages to Hugo and AWS. Some of the motivations for the change include a need for additional flexibility in the future, speed and stability of the tooling, and dropping my Pro GitHub membership with the addition of private repositories for GitHub free tier users.


When GitHub announced the new free/premium tiers a month ago, I realized that I no longer had a reason to pay $7 per month, and could just keep my private repositories private without paying. Unfortunately, this also meant that my website would no longer be served as the repo is private. It’s also not very polished and I’d rather keep the code out of public view. I figured it would be a good time to explore some other static site options as well as migrate to cheap static website hosting via S3.

I’ve been doing a lot of coding in Go lately, and happened to find a static site tool similar to Jekyll called Hugo. It seemed to have a bit more flexibility out of the box compared to Jekyll, and once I started using it the file-watching autobuild feature was blazingly fast in comparison. It also easily installs on OSX via brew.

It took less than a day to make the conversion of my entire site – layouts, resources, and content – over to Hugo. The markdown content system is similar, and for the most part the changes consisted of getting the file structure right and migrating from the Jekyll Liquid templating engine over to Hugo’s templating syntax, which uses Golang’s own standard library html/template package. There were a few other syntactic changes required to fix some inline \( \LaTeX \).

The old blog used GitHub pages with Cloudflare for a free SSL certificate. I decided to try setting up static website hosting in AWS using S3.

I made this image with [cloudcraft](

The process consists of

There are plenty of guides that exist on how to do this so I won’t go into detail here. The entire process took me about an hour. The Jekyll to Hugo migration took about 4 hours total (getting familiar with documentation and modifying the codebase. The build process is also dead simple:

# build the site to the public folder
# sync the public folder with s3
aws s3 sync public/ s3:// --delete --exclude "*.DS_Store"

Further reading



Other tools used


Back to the posts.