Shane HobanShane Hoban

Shane Hoban

MSc. Computer Science (UCD) · Full Stack Developer

Crosshaven, Cork, Ireland
All Articles

GAMSAT Notes migration: old VPS WordPress to static on Coolify

22 February 2026
ai-assistedgamsat notesmigrationwordpressstatic exportcoolifydockerseositemap

I migrated GAMSAT Notes from an older WordPress VPS setup to a static-export deployment on a new VPS managed by Coolify.

The key objective was simple: preserve the site and URLs exactly as they exist publicly, while removing the operational overhead of a full WordPress runtime for mostly stable content.

What changed

  • generated a full static export of the public site
  • preserved route-style paths (/category/.../, /tag/.../, post/page slugs) via index.html files in each directory
  • included sitemap assets (sitemap.xml, sitemap_index.xml, section sitemaps) so discovery/search behavior remains straightforward
  • kept theme assets and content-level media paths intact to avoid visual regressions
  • deployed the static output through Coolify using a containerized web runtime on the new VPS

Scale of the migration

The static export was large by design because it captured the complete public surface area:

  • thousands of files moved into static form
  • page HTML, taxonomy pages, archives, and feed-related artifacts included
  • no database dependency required to serve the exported result

Follow-up tweaks after export

After initial export, I did a cleanup pass to improve consistency across generated pages:

  • normalized generated page markup details
  • corrected a footer HTML entity issue (© rendering)
  • removed non-useful static search form inputs from templates where search backend is not active
  • applied small theme/style adjustments to keep rendering stable in static mode

Why this migration matters

For this project, content changes are incremental, but uptime and simplicity still matter.

Static delivery gives practical advantages:

  • fewer moving parts
  • lower hosting complexity
  • no WordPress runtime/database attack surface for public read-only pages
  • easier backup and rollback (the site is just files)

Tradeoff I accepted

The tradeoff is that editing/publishing now follows an export/update workflow rather than editing directly in a live WP runtime.

Given this site's cadence, that is an acceptable and deliberate choice.