Add Jekyll setup notes

This commit is contained in:
Rob Watson 2017-12-29 15:37:21 +00:00
parent b902cb0ed0
commit 700b841949
1 changed files with 62 additions and 0 deletions

View File

@ -0,0 +1,62 @@
---
layout: post
title: "Notes from setting up a Jekyll blog on AWS S3 and CloudFront"
slug: jekyll-aws-s3-cloudfront
date: 2017-12-29 15:00:00 +0000
categories: jekyll setup
---
Here are my notes from today's task of setting up this blog.
* Using [Jekyll](https://jekyllrb.com/)
* Easy to setup
* Built-in syntax highlighting
* write/commit/push workflow
* easy to deploy as static website
* Compatible with GitHub and GitLab pages
* Theme
* Using [minima theme](https://github.com/jekyll/minima)
* Basic but easy to customize and extend
* Overrides:
* [`home.html`](https://gitlab.com/rfwatson/techblog/commit/1f9e5bcc69b1d25329c7552a7d3152ff63725250#f87bb2fcce406e16253570011cce02227981f242_0_25) to add full post content to homepage
* [`assets/main.scss`](https://gitlab.com/rfwatson/techblog/blob/1f9e5bcc69b1d25329c7552a7d3152ff63725250/assets/main.scss) with CSS/design changes
* Fonts
* Webfonts from [Google Fonts](https://fonts.google.com/)
* Hosting
* Considered [GitHub pages](https://pages.github.com/), [GitLab pages](https://about.gitlab.com/features/pages/) and static hosting using [AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)
* Requirements:
* free (gratis)
* easy-to-maintain, preferably static/serverless
* Basic HTTPS support, with redirect from HTTP
* GitLab Pages
* Free static site hosting comparable to GitHub Pages
* Pros:
* Powerful containerized [CI/build system](https://about.gitlab.com/features/gitlab-ci-cd/)
* HTTPS support for static site, even on custom domains
* Cons:
* No option to force HTTPS
* Tricky to get LetsEncrypt TLS certs to work with CI/build system - [official tutorial](https://about.gitlab.com/2016/04/11/tutorial-securing-your-gitlab-pages-with-tls-and-letsencrypt/) is slightly out-of-date
* GitHub pages
* Pros:
* Popular and well-documented
* HTTPS support, including option to force HTTPS
* Cons:
* No HTTPS support for custom domains
* AWS S3
* Pros:
* less managed than GitLab/GitHub - so a bit more setup, but also more flexibility
* HTTPS support, as well as supporting "redirect objects" which effectively allow us to set up arbitrary 301 redirects on our site programatically.
* supports multiple subdomains
* Cons:
* Not quite free, but very low cost for low usage
* Ended up choosing S3
* Created bucket, enabled static website hosting option
* Added Cloudfront web distribution
* Follow approach [here](http://someguyontheinter.net/blog/serving-index-pages-from-a-non-root-location-via-cloudfront/) to avoid 403 errors from S3 when serving paths without an explicit `index.html`, like `/about`
* Added simple deploy script making use of [AWS CLI](https://aws.amazon.com/cli://aws.amazon.com/cli/)
* DNS
* Registered domain
* Added hosted zone to [AWS Route 53](https://aws.amazon.com/route53/)
* Updated nameserver records in Namecheap control panel to point at AWS
* Added alias record to point at Cloudfront distribution
* Added MX record to point at pre-existing [Mailinabox](http://mailinabox.email/) setup