After you cross, what are you holding?
Every migration guide counts the config lines you write. None of them count what you take home.
After you cross from a managed host onto your own server, something survives the move — and what that is turns out to matter as much as whether you made it. A six-step community walkthrough leaves you with notes you understood well enough to follow, a standard Dockerfile, and a mental model that belongs to you permanently. A PaaS installer leaves you with that platform's project config. A tool that absorbs the migration into its own platform gives you another vendor's dashboard. One entry in this guide — Liftport — is a migration cockpit codebase you purchase once and deploy as your own branded SaaS: your customers pay you to run their migrations, and what they receive at the end is a source-tagged env-var inventory, a parity-verified cutover plan, a savings report built from published list rates, and a Coolify import artifact. This page groups the alternatives by what the migration itself hands you on arrival — and in one lane, the free path wins honestly.
Before you choose: four questions
- What does the migration produce? Moving an application is not only moving files. Env-var values, build settings, and domain configuration live in the managed host's dashboard and are not in the repository. What you hold depends on whether anything inventoried those before they left.
- Does the savings arithmetic actually hold? The financial case for leaving is real in specific conditions and imaginary in others. The conditions matter more than the headline number.
- What do you take on in exchange? Leaving a managed platform transfers something real — edge network, zero-ops patching, backup management, on-call — to whoever runs the destination. Name it before the DNS flip.
- How much does the move cost in time? At five seats inside Vercel's included allowances the invoice delta is roughly $500–590 a year. Two hours of sysadmin time per month at $75 an hour costs $1,800 a year. The move loses money the moment anyone's time is priced in.
The options, by what you hold when you arrive
Another managed platform — a new subscription on someone else's control plane
The most honest starting point for most teams is a different managed host, not a VPS. Render, Netlify, Railway, and Fly.io keep the zero-ops model and DX close to Vercel's. If the complaint is the bill, the first question is whether a platform with different pricing resolves it before self-hosting enters the calculation.
Render restructured workspace plans on 2026-04-23 and completed automatic migration of existing workspaces on 2026-08-01. The current Pro plan is $25 per month flat, unlimited seats, 25 GB of bandwidth included. Scale is $499 per month with 1 TB. Bandwidth overage is $0.15 per GB on every tier (render.com/docs/new-workspace-plans, as of 2026-08-07). Netlify Pro is $20 per month for the team, unlimited members, following a structural change on 2026-04-14 (netlify.com/changelog).
What you hold: a running application on another vendor's control plane. The structural dependency on a managed platform has not changed — the vendor name and the invoice have.
Honest limit: this is a vendor switch, not a structural change. Preview deploys, CDN coverage, and zero-ops patching stay on someone else's payroll — which for most teams is the correct outcome. The per-seat savings argument that applies to Vercel does not apply to Netlify Pro or Render Pro; both moved to flat unlimited-seat pricing in April 2026.
Free community guide — standard portable files and the understanding to use them
For a single well-maintained Next.js repository with a handful of environment variables, the free path is a genuine option and deserves honest treatment as one. Detailed Vercel-to-Coolify walkthroughs are abundant and current: create a Coolify project, connect the GitHub repo, paste the env vars, set a health-check path, restore the database, flip the A record. Six steps, well-documented, free. Coolify self-hosted is free forever with no feature restrictions — version 4.2.0, released 2026-07-21 (GitHub releases API). No official Vercel-to-Coolify importer appears in Coolify's own documentation (MEDIUM — "none found", not "none exists"), but the community guides fill the gap for a straightforward app.
What you hold: a standard Dockerfile and docker-compose (industry-format files no single vendor has a claim on), your own understanding of the steps, and the confidence to repeat them. Among all options in this guide, the free path arguably leaves the most portable output.
Honest limit: the free guide skips the parts that are hard to document rather than unimportant. No formal inventory of what the source platform was holding before you left, no automated parity check against the destination before DNS moved, and no written savings record for a stakeholder who needs evidence before approving the change. For a solo developer migrating one personal project, none of that is needed. For a team with multiple projects, env-var sprawl, or a stakeholder who needs documentation, those are exactly the missing pieces.
Coolify — the self-hosted PaaS destination
Coolify is where most community guides point. It is not a migration tool — it is the platform you run on the other side. Self-hosted: free forever. Cloud: $5 per month for two servers, $3 per month per additional server (coolify.io/pricing, as of 2026-08-07). Per-PR preview deploy URLs via the Coolify GitHub App are documented in third-party migration guides; verify in Coolify's own docs before quoting to a customer — this was sourced from community guides, not Coolify's documentation directly (MEDIUM confidence). CapRover is sometimes grouped with Coolify in comparisons; secondary sources and the repository show 2026 activity while at least one package registry flags its npm package as inactive — the signals are contradictory and no velocity claim is made here.
What you hold: a Coolify application configuration, portable to any other Coolify installation but specific to Coolify as a platform.
Honest limit: Coolify is a PaaS you operate, not a tool that reads and accounts for what you are leaving behind. The env vars that live in the source platform's dashboard are yours to discover and resolve manually before you configure the destination project.
Dokploy — a leaner self-hosted PaaS
Dokploy is a Docker Swarm-native alternative to Coolify. Cloud plans: Hobby at $4.50 per month (one server), Startup at $15 per month (three servers, extra at $4.50 each) (dokploy.com/pricing, as of 2026-08-07). Self-hosted cost is not stated on the pricing page and should not be assumed to be free. Version 0.29.14, released 2026-08-06 (GitHub releases API).
What you hold: a Dokploy application configuration.
Honest limit: same source-inventory gap as Coolify. Self-host cost is genuinely unknown from public documentation.
Kamal — container deployment without a PaaS layer
Kamal, maintained by 37signals and shipping by default with Rails 8, deploys containers directly to virtual machines with no PaaS abstraction. A deploy.yml file describes the application — image source, servers, env-var references, Kamal Proxy configuration for zero-downtime deploys. For teams who do not want to run a PaaS alongside their application, Kamal removes the layer (HEY.com and Basecamp run on it; widely reported, MEDIUM — not read off a 37signals-owned changelog in this pass).
What you hold: a human-readable deploy.yml in Kamal's format. The concepts it encodes are transferable even if the format is not universally consumable by other tools.
Honest limit: Kamal handles the destination; it does not read the source platform or audit what was held before the move. Populating the env-var references in deploy.yml is a manual step. The mental model is container-native and CLI-first, without a management UI.
Dokku — the Heroku model, self-hosted
Dokku is the minimal self-hosted PaaS. A git push to a Dokku remote triggers a Buildpack or Dockerfile build and a deploy. The Procfile format it recognizes is shared with the CNCF Buildpacks specification — more portable than a platform-specific project config. Version 0.38.x; Dokku Pro exists but its price is not published, so it is omitted from comparison (secondary sources, MEDIUM).
What you hold: a Procfile and Buildpack configuration — the most portable format in this guide because Buildpacks are a CNCF standard independent of any single vendor.
Honest limit: Dokku is intentionally minimal, with less UI and less managed behavior than Coolify or Dokploy. The source-platform inventory gap applies here as everywhere else.
Liftport — the migration cockpit, sold as a codebase
Liftport is not a PaaS and not a destination. It is a migration cockpit: a multi-tenant SaaS you purchase once at $199, deploy under your own brand, and run as a service for other teams.
Where every other tool in this guide begins at the destination, Liftport begins at the source. It reads what the source platform's OAuth-scoped API exposes — project lists, env-var names, routes, domain configurations, build settings — and asks the team to attest the rest, tagging every environment variable by how it was obtained: api-read, user-attested, or missing. Vercel and Netlify OAuth adapters ship in v1; Render is also supported. From that inventory it generates an ordered cutover plan with copy-button commands at the cutover screen, a parity smoke check (HTTP response diff and status gate against the staging VPS before DNS moves), a savings report built from published list rates with dated source citations, and a Coolify import artifact — a Dockerfile and Coolify application config.
What you hold: a documented, audited record of the move — what the source platform held, how each item was verified, what the parity check confirmed, and what the arithmetic shows. This is the artifact none of the other tools in this guide produce.
You are buying the codebase, not a single migration. Your customers pay you to run theirs under your own brand, with their projects and credentials isolated by organisation.
v1 is generate and guided manual: the cockpit produces the artifacts and presents copy-button commands; a human runs them. Direct-SSH and an automated VPS agent are future consideration, not current features. VPS monitoring (uptime and configuration drift alerts) is plan-gated to Pro+ and absent on the free tier. The free tier covers one complete migration — inventory, plan, smoke check, and savings report. The cockpit runs on Next.js, Supabase, QStash, Upstash Redis, Stripe, Resend, and Sentry; those accounts are yours to provision.
Honest limit: Liftport is not a deployment tool and not a host. It does not patch servers, manage certificates, or perform the migration automatically — v1 is generate plus guided manual execution. For a team migrating one simple app with a clear env-var list, the free guide is the honest recommendation. Liftport's price pays for itself when the source is complex, the evidence needs to be in writing, or the goal is running the cockpit as a service for other organisations rather than using it once.
Try the live demo → · Get Liftport →
The savings calculation — when it holds, and when it does not
Where it is real:
Usage-dominated bills. Vercel Pro includes 1 TB of fast data transfer per month; above that, overage is $0.15 per GB (vercel.com/pricing, as of 2026-08-07). A team pushing 5 TB in a month owes $600 in overage on top of seat costs. A DigitalOcean droplet at $48 per month includes 5,000 GB in the plan (digitalocean.com/pricing/droplets, as of 2026-08-07). The comparison for that 5 TB month is order-of-magnitude and holds on both sides from published list rates. DigitalOcean's bandwidth overage rate above the plan allowance is not published and should not be cited.
Seat-dominated Vercel bills — Vercel only. Vercel Pro charges $20 per user per month. At 25 seats that is $6,000 a year before a byte of traffic; a VPS charges nothing per developer. Netlify Pro and Render Pro both moved to flat unlimited-seat pricing in April 2026; the per-seat argument applies to Vercel only.
Teams already running servers. For teams with infrastructure staff on payroll, the marginal cost of one more managed server is near zero. For them the invoice saving is the whole argument.
Where it is not:
A five-developer team inside Vercel's included allowances saves roughly $500–590 a year by moving to a comparable droplet. Two hours of sysadmin time per month at $75 an hour costs $1,800 a year.
The 37signals case — cloud bill reduced from approximately $3.2 million to approximately $1.3 million per year, with roughly $600,000 in hardware capex recouped in under 18 months (Data Centre Dynamics and The Register; consistent across sources, not read off a 37signals-owned page — MEDIUM confidence) — is real. DHH framed it as advice for medium-sized companies with stable growth and operations staff already on payroll, explicitly excepting high-variance workloads. It does not transfer to a five-person startup on a $48 droplet.
VPS pricing is not a fixed floor. Hetzner adjusted prices on 2026-06-15 — some cost-optimised AMD-shared lines rose by roughly a third, some dedicated lines by more than two-and-a-half times (docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/, primary). Any guide citing a Hetzner line price from before June 2026 quotes a number that no longer applies to new orders on those plans. The VPS side of the savings equation has its own price risk; it does not disappear, it moves.
Liftport's savings report produces this arithmetic for a specific project with dated source citations, including the result that the math does not support the move.
How to choose
| If the goal is... | The honest choice |
|---|---|
| Keep zero ops, improve the bill | Check Render ($25/mo flat) or Netlify ($20/mo flat) before any VPS |
| One simple Next.js app, clear env-var list, CLI-comfortable team | Free community guide + Coolify ($0). Leaves standard portable files. |
| Container-first, no PaaS overhead, Docker-native team | Kamal (open source; deploy.yml; no UI) |
| Heroku git-push model, standard Buildpacks | Dokku (open source; Procfile; minimal) |
| Modern self-hosted PaaS with UI and PR preview deploys | Coolify (self-host: free; cloud: from $5/mo) |
| Leaner Docker Swarm PaaS | Dokploy (cloud from $4.50/mo; self-host cost: unverified) |
| Multiple projects, env-var complexity, written parity evidence required | Liftport — use the cockpit or buy the codebase and run it for others |
| Running a migration service as a business under your own brand | Liftport ($199, one-time; multi-tenant; commercial licence) |
The distinction between the last two rows and the first six is what the move is supposed to produce. Every entry above Liftport produces a destination config and a running application. Liftport produces the record of how the move was made.
Honest verdict
For a single well-maintained Next.js application, the free community guide plus Coolify is the right starting point — not Liftport. The community documentation is detailed, the steps are well-established, and what you hold afterward is genuinely portable. Recommending a paid tool for a job that blog posts cover competently would not be honest.
Liftport earns its place in this guide at a different intersection: when the migration has structure the free path does not produce — multiple projects migrating in sequence, env-var inventories that cannot be reconstructed from the repository alone, a stakeholder who needs written parity evidence before the DNS change, or a team that wants to offer migration services to other organisations rather than migrate one app once. Among the tools in this guide that document the source side of the move rather than only deploying the destination, Liftport is the only one.
The calculation is favorable in three specific conditions — usage-heavy bills, high Vercel seat counts, teams already running servers — and unfavorable everywhere else. Liftport's savings report produces that calculation for a specific project before the move, including the result that the math does not support it.
Common questions
Is the free community guide path actually sufficient?
For a single well-maintained Next.js repository with a clear env-var list and a CLI-comfortable team, yes — it is genuinely sufficient and this guide recommends it honestly in that lane. The cases where you need something more: multiple simultaneous migrations, env-var sprawl where the source held values the repository does not document, stakeholders who require a written parity record before the DNS change, or teams who want to run migration as a repeatable service for other people. Liftport addresses those specific cases.
What is Liftport and how does it differ from Coolify and Dokploy?
Liftport is a migration cockpit codebase — sold once at $199, deployed as your own branded multi-tenant SaaS. Coolify and Dokploy are self-hosted PaaS platforms — the environments customers land on after the move. They are complements, not substitutes. Liftport reads what the source platform held, audits the inventory, generates a parity-verified cutover plan, and emits a Coolify import artifact. Coolify or Dokploy receive the application on the other side. Using a destination platform without accounting for what the source held is how teams discover missing environment variables after the DNS flip.
Is it actually cheaper to leave Vercel?
It depends on the specific bill. For usage-dominated bills — Vercel's $0.15/GB overage against a droplet that includes 5 TB in the plan — the delta is order-of-magnitude in the months that matter. For Vercel teams above roughly 10 seats, the per-developer cost adds up: $6,000 a year at 25 seats before any traffic. For teams already running servers, the marginal ops hour is near zero. For a five-developer in-allowance team, the ~$550 annual saving does not survive two ops hours per month at $75/hr. The per-seat argument does not apply to Netlify Pro or Render Pro — both moved to flat unlimited-seat pricing in April 2026. Liftport's savings report produces this arithmetic for a specific project, including the result that the math does not support the move (vercel.com/pricing; digitalocean.com/pricing/droplets; as of 2026-08-07).
What does Kamal do, and do I need it instead of Coolify?
Kamal deploys containers directly to virtual machines with no PaaS layer — a deploy.yml, Kamal Proxy for zero-downtime, no UI, no additional platform to operate. Teams who do not want to manage a PaaS alongside their application remove that abstraction with Kamal. Teams who want a management UI, PR preview URLs, and managed service discovery add it back with Coolify. Neither Kamal nor Coolify reads the source platform or audits what was held before the move — that is the problem Liftport solves before either destination tool takes over.
Should a small team leave Vercel in 2026?
Probably not, if the bill is inside Vercel's included allowances. The ~$550 annual saving for a five-developer in-allowance team does not survive two ops hours per month at any reasonable rate. The move makes sense for usage-heavy bills, Vercel seat counts above roughly 10 developers, or teams already running servers. The 37signals case (cloud costs cut from ~$3.2M to ~$1.3M/yr; Data Centre Dynamics and The Register; MEDIUM — not read off 37signals' own page) applies to a medium-sized company with in-house ops staff — DHH scoped the advice that way explicitly. Liftport's savings report is designed to run this arithmetic for a specific project, including returning "the math does not work; stay where you are."
Does Coolify have an official Vercel importer?
No official Vercel-to-Coolify importer appears in Coolify's own documentation — their only migration guide covers the v3-to-v4 self-upgrade. Free community walkthroughs fill the gap for a straightforward application. Liftport generates a Coolify import artifact — a Dockerfile and Coolify application config — as part of the migration plan output. It is the only importer-equivalent in this guide, and it requires Liftport to produce it (Coolify v4.2.0, released 2026-07-21, GitHub releases API).
