← All guides

Platform cost guide

Move a small app from Vercel to a production VPS

VercelVPS

Short answer

The same app running from the same repo on your VPS, with equivalent env vars, domain routing, database connection, logs, backups, and rollback notes.

Why this matters

The app is small, but hosting has turned into usage anxiety: seats, logs, bandwidth, functions, database, analytics, and separate dashboards.

Walkthrough

  1. 01

    Audit the Vercel project before moving

    Most bad migrations miss something Vercel was doing automatically. Capture those settings before touching DNS.

    • Copy build command, install command, output/start behavior, framework preset, and Node version.
    • Export all production environment variables and note which ones are public.
    • List rewrites, redirects, cron jobs, image domains, API routes, and external services.
  2. 02

    Create the VPS replacement

    Deploy the app on the VPS before changing the production domain. Dokploy is one option for managing deploys; Docker Compose, systemd, or another panel can also work.

    • Deploy from the same GitHub repo and branch to a temporary domain first.
    • Move env vars carefully and rotate secrets if there is any chance they were exposed.
    • Check server logs until build and runtime errors are gone.
  3. 03

    Cut over only after smoke tests pass

    The final DNS switch should be boring. Test the VPS version first, then move the domain.

    • Test login, forms, database writes, file uploads, payment webhooks, and admin actions.
    • Add the final domain in Dokploy and point DNS to the VPS.
    • Keep the Vercel deployment alive for rollback until the VPS version is stable.

Where RepoAssistant fits

RepoAssistant moves small Vercel apps to VPS when predictable cost and ownership matter more than platform convenience.

Primary sources