I'm writing this blog using Pelican, a static website generator. This is a learning experience for me. The path of least resistance probably would have been a Blogger or WordPress blog, but I prefer the static file model that Pelican uses. And my needs are very simple; to paraphrase Mitch Hedberg, we don't need to bring a relational database into this.
Here's a super-quick overview of my setup:
- I have a private github repo containing all of my pelican config and .md5 content files.
- Since I store the files on github, I can just pull the source to any of my computers and make changes. For example, as I write this, I'm using my Windows desktop, where I run VSCode to edit the content, and WSL2 to build/publish the blog.
- I set up Pelican to upload the output to an AWS S3 bucket.
- In theory, one can serve a website directly from the S3 bucket--but my blog is in the .dev domain, and thus needs to use https. Raw S3 bucket website access can only serve unencrypted http content.
- So I used AWS CloudFront to act both as a CDN and also to provide TLS.
- I configured AWS Route 53 to point ivymike.dev to the CloudFront service.
- And finally, my registrar is Google Domains, and I configured my domain name to use the AWS Route 53 nameservers.
Don't get me wrong--none of these steps were trivial, and each one is probably worthy of a blog entry. But for now, I'm just glad I have it all working and semi-documented here.