About This Site
My personal website runs on a bit of an interesting tech stack: MediaWiki on k3s. This page aims to explain a bit about why.
Why MediaWiki?
In short, because I realised I was spending longer setting up my personal site's tech stack than producing content. So hopefully the "go to a page and click edit" experience will help.
Also because I have a fair bit of experience maintaining a MediaWiki site at YSTV (and even have a couple commits to the core).
Also inspired by a friend of mine using DokuWiki for hers.
How Mediawiki?
Built into a Docker container (with extensions and LocalSettings.php in it). Here's a snippet of what the Dockerfile looks like:
FROM mediawiki:1.42.4@sha256:1b1f10f32757ff07d3d2c8f1c001def2f01493fedf09606ac74656eeffdda867
RUN apt update && apt install -y git imagemagick
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
RUN git clone -b REL1_42 --single-branch https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateStyles extensions/TemplateStyles
RUN cd extensions/TemplateStyles && composer update --no-dev && cd ../..
RUN git clone -b REL1_42 --single-branch https://gerrit.wikimedia.org/r/mediawiki/extensions/MobileFrontend extensions/MobileFrontend
# ...
COPY assets /var/www/html/resources/assets
COPY LocalSettings.php /var/www/html/LocalSettings.php
Why Kubernetes?
To learn it mainly. My day job is in DevOps where it's an important technology to know. Plus I've been personally interested in what you can do with it for a while, so this seemed a good place to start.
Other Tech
Here's various other assorted bits of tech that contribute to bringing you this site. Maybe I'll write up extended posts about them.
- GitHub Actions for building the container image
- GitHub Container Registry for hosting it
- Renovate for keeping base images up to date
- FluxCD for automatically deploying from GitHub
- cert-manager for certificates
- Tailscale for remote access to the Kubernetes API
- Oracle Cloud, for the free VM it's running on