Abstract

This is the Jekyll and architecture source code of the pasztor.at website.

License

Text and images are protected by copyright, everything else is free for learning / copypasting.

Contents

Notable parts of this repository:

  • _ansible: contains the Ansible source code to deploy the CDN behind the website
  • _docker: contains the Docker containers running on the aforementioned CDN
  • _includes, _layouts, _plugins, _sass: Jekyll theme stuff
  • _posts: Blog posts and events for Jekyll
  • assets: Contains graphics and other assets for the site.
  • .build.sh: The Jekyll build script
  • .cssh.sh: Cluster SSH to all CDN nodes
  • .deploy.sh: rsync script to deploy the generated content
  • .dns.json: The Route53 DNS settings
  • .dns.sh: The script to deploy Route53 DNS settings
  • .optimize.sh: Script to optimize PNG images using optipng

About the CDN

The CDN is a collection of machines that receive requests based on latency via Amazon Route53. The theory behind it is described in this blog post. The CDN is deployed using Ansible.

Each node is running three servers: traefik to handle SSL and forward requests, nginx to serve the actual content and PHP-FPM to handle PHP requests. These nodes are run in separate Docker contaienrs using docker-compose.

Content is deployed using rsync after it is generated by Jekyll.