Infrastructure

This website is deliberately built around a small static architecture.

Components

The main components are:

  • Org Mode files as the human-readable source format;
  • Hugo as the static-site generator;
  • Git for version control;
  • rsync or an equivalent controlled deployment step;
  • nginx as the production HTTP server;
  • Debian GNU/Linux as the operating system.

The production server does not need Hugo, Emacs, a database, or a dynamic Web application. It only serves the files produced by the build machine.

Publication path

X260 / development machine

Org sources
    +
Hugo layouts
    +
static assets
    |
    v
  Hugo
    |
    v
 public/
    |
    | deployment
    v
Debian server
    |
  nginx
    |
    v
 Internet

This separation keeps the build environment away from the public serving path. A failed build cannot modify production unless the generated output is explicitly deployed.

Static serving model

nginx serves ordinary files from the generated site tree. There is no database query or application execution for a normal page request.

The consequences are useful for a personal technical website:

  • a small runtime attack surface;
  • straightforward backups;
  • easy inspection of deployed files;
  • reproducible builds;
  • simple rollback through Git and previous build artefacts;
  • low resource consumption.

Network services

Only nginx is required for the website itself. Other services on the host are administratively separate from the publication pipeline.

The website should therefore remain understandable as an independent static artefact even if the surrounding server infrastructure changes.