← All guides

Migration guide

Migrate from Vercel to a VPS when your app outgrows serverless

VercelNext.jsVPSLovableBolt.newBase44v0ReplitCursor

Short answer

The same app runs on a VPS you control, with SSL, deploy steps, backups, and a rollback path.

Why this matters

The app is live, but costs, runtime limits, bot traffic, background jobs, or database needs make Vercel a bad fit.

Walkthrough

  1. 01

    Map what Vercel was doing for you

    Before moving, list the platform features your app currently depends on so nothing disappears during migration.

    • Capture env vars, build command, install command, and output behavior.
    • Identify serverless functions, cron jobs, image optimization, and rewrites.
    • If the app came from Lovable, Bolt, Base44, v0, Replit, or Cursor, list any builder-specific preview or export settings too.
    • Plan DNS cutover after the VPS version passes smoke tests.
  2. 02

    Choose a VPS runtime

    The simplest migration runs the app as a Node process. Docker is better when the app has multiple services or native dependencies.

    • Use PM2 for straightforward Next.js apps.
    • Use Docker Compose for app plus database, Redis, or workers.
    • Put Nginx in front for SSL and routing.
  3. 03

    Cut over safely

    A migration should not be a blind DNS switch. Test the server version first and keep a fallback path.

    • Smoke test login, payments, forms, API routes, and database writes.
    • Lower DNS TTL before cutover if possible.
    • Keep Vercel available until the VPS proves stable.

Where RepoAssistant fits

RepoAssistant migrates Vercel apps to VPS when serverless is no longer the right shape.