Moving a one-person SaaS from a home server to a real VPS
A running a paid AI/tech newsletter SaaS off a home server finished migrating it to an actual VPS this week, eliminating the where any home internet hiccup took the whole service down. The coding itself was straightforward; the real obstacles were mundane issues.
The target MySQL version wasn't available in the vendor's official apt repository for the Ubuntu release in use, so a different version had to be substituted and manually verified for . A newly built also had a wrong field name in its response-parsing logic — a bug that mocked tests never caught, and only surfaced once tested against a real API token.
The migration itself was staged: the new server was built and tested in isolation while the old server kept handling live traffic, and cutover only happened after the full pipeline was verified end-to-end. The timing was also coordinated around subscribers' scheduled newsletter sends, so no one got a duplicate or missed digest.
Key points
- Migrated off a home server to a VPS because home internet outages created a for the whole service
- Target MySQL version wasn't in the Ubuntu vendor's apt repo, requiring a substitute version and manual checks
- A wrong field name in parsing was missed by mocked tests and only found when tested with a real API token
- Used a : built and tested the new server in isolation while the old one kept serving live traffic
- Timed the cutover around subscribers' scheduled sends to avoid duplicate or missed newsletters