← Stories

Story · interactive timeline

How I got here

From PHP files in /var/www to automated, per-client cloud infrastructure

Nobody handed me a platform. I started with one Ubuntu box serving PHP sites out of /var/www, and each step on this timeline came from hitting the limits of the step before it: too many manual edits, too many sites, too many things that only worked on one machine.

Scroll through the eras, or open any event for the details. Links go to the case studies and stories where I explain the decisions properly.

2016 – 2019

First jobs, first automation

Before I worked in IT, I kept finding ways to make the computer do the repetitive part of the job.

Remote troubleshooting of customer equipment. It was my first taste of fixing systems I couldn't touch.

At Neola I wrote software that converted source documents into data: 12,000+ documents a day, about 40 times what one person did by hand.

Graduated from Zane State College.

2020 – 2021

IT work and game servers

I started in IT at the library, and at home I was running game servers for a community of players.

Networks across six branches, 100+ workstations and an iPad fleet under MDM.

Read more

Certified.

My own modpack, plugins, world backups, and the habit of treating a game server like a production service.

My first real CVE response: patching every Java game server I ran.

Read more
2022

One box, bare metal

One Ubuntu server with nginx serving PHP sites straight out of /var/www, across three domains.

Every site was a folder; every change was an SSH session. Helper scripts for permissions, MySQL and nginx restarts.

My first self-hosted source control. Later replaced by Gitea.

Self-hosting a Stable Diffusion web UI, which is where my GPU host started.

2023 – early 2024

Proxying to containers

More and more subdomains became nginx proxy_pass rules in front of Docker containers instead of folders on disk.

A reusable ProxyPassTemplate vhost standardized how every new service got its subdomain and TLS.

vouch-proxy in front of internal tools, using nginx auth_request.

A modular bootstrap script for new servers. My first infrastructure-as-code instinct, and I still use it.

Moving sites to a new server, NAS mounts in fstab, a Portainer agent.

2024 – 2025

A real platform

Every project became its own Compose stack behind a dedicated reverse-proxy VM on an XCP-ng hypervisor, with shared storage from a NAS I built.

App, nginx and database per project, with their own volumes, behind the proxy VM. It grew to about 90 services.

Read more

Replaced TrueNAS with a Kubuntu VM serving Samba and NFS.

Read more

Send2Email for the microfilm machines, and phishing-report automation in Apps Script.

Read more

One .env file generates a complete stack. It became the base for most of my sites.

Read more

One form creates the DNS record, proxy vhost, TLS certificate and the Compose stack. It launched 11+ sites.

Read more
2026

Production, for other people

A new job running a school district's systems and a business with real cloud infrastructure.

Started as an IT Assistant and began building WM.Tools a week later.

Read more

Per-client Vultr VPSes with Cloudflare Origin CA, GHCR image deploys and GitHub Actions CI.

Read more

A runaway automation took down WM.Tools. The fix was concurrency slots and fail-fast rejection.

Read more

No database, no login, no cookies.

Read more

Where this leads

The case studies go deep on the latest stages of this timeline.