About Professional
How I Build How I Build Meet the Team
Technology Homelab App Showcase Case Studies
Maverick & Luke Say Hello

Case study

Migrating a Live Self-Hosted Dev Platform to New Hardware: With Zero Data Loss

Moved an entire development/staging platform (a couple dozen web apps, a self-hosted database stack, a secrets service, and CI) onto new hardware as a parallel build, with negligible downtime and a one-command rollback preserved for a week.


The challenge

The development/staging tier of my self-hosted platform ran 24/7 on an aging laptop, a genuine thermal risk and a single point of failure for everything downstream. On it lived a couple dozen browser and backend apps, a full self-hosted database stack, a centralized secrets service, a self-hosted CI runner, an email-ingest service, and a batch of host-managed background jobs and timers.

The box needed to be retired, but it couldn't just be "moved." Everything on it was live. The migration had to:

Approach

Three strategic choices did most of the work:

  1. Parallel build, destroy nothing. The new box was assembled as a full twin while the old box kept serving. Nothing became irreversible until a single, late cutover step.
  2. Same-role rebuild, not a promotion. Because the new box took the same role as the old one, every credential, machine-scoped secret, and line of app config stayed byte-identical. That collapsed what is normally a risky re-credentialing exercise into a plain copy.
  3. Gate at every phase. The work was decomposed into numbered phases (platform → golden-path proof → batch → special services → cutover → monitoring → decommission), each with a verification gate. Announce the phase, execute in order, stop on any failure rather than improvise.

A clarifying insight framed the whole cutover: a machine has two identities: a cosmetic OS hostname and a functional name on a private mesh VPN. Only the functional name matters, and only one machine can hold it. The entire migration pivots on reassigning that one name, and it does not auto-follow an OS rename.

Execution highlights

Results

What this demonstrates