Skip to content
Go To Agency

Moving Off Vercel Without Breaking What Works

We run around sixty production sites on our own VPS infrastructure with Docker behind Caddy, so this is our daily operations rather than a service invented for a landing page. We will also tell you when staying put is the cheaper answer.

Written reply within 24 business hours4.9/5 from 35 reviewsAsync by default, no calls required

The bill grew faster than the traffic

Managed platforms are excellent value until one of two things happens: bandwidth or function invocations scale past the included tier, or you add seats. At that point the monthly figure stops tracking your traffic and starts tracking your pricing plan, and the gap becomes hard to justify.

Docker
Deployment target we run in production
Caddy
Reverse proxy with automatic TLS
Always
Rollback path agreed before cutover

How the migration actually runs

The cost comparison comes first

Before anything moves, we put your real usage next to the total cost of a VPS including operating time. Sometimes the honest answer is to stay, and we would rather say it than sell a migration.

Containerised, not hand-configured

Your application ships as a Docker image built by CI. Nothing is configured by hand on the server, so the box is reproducible and a rebuild is not an archaeology exercise.

Caddy for TLS and routing

Automatic certificate issuance and renewal, HTTP/2 and HTTP/3, and a configuration file short enough to read in full. No manual renewals to forget.

The Next.js features that need attention

Image optimisation, incremental static regeneration, middleware and scheduled jobs all behave differently off-platform. We map each one to a working equivalent rather than discovering it in production.

Cutover with DNS as the last step

The new stack runs and is verified against real traffic patterns before DNS moves. TTL lowered in advance so a rollback takes minutes rather than a day.

Backups and monitoring on day one

Automated database backups with a restore that has actually been tested, plus uptime monitoring. A server you own is a server someone has to look after.

How a migration runs with us

< 24h
Reply to your brief
100%
Scope agreed in writing before we start
4.9/5
Client rating
100%
Projects delivered remotely

Migration engagements

Assessment

On quote
  • Current usage and cost analysed
  • Feature-by-feature migration map
  • Honest stay-or-move recommendation
  • Written, yours to keep
Send your setup
Recommended

Migration

On quote
  • Dockerised build and CI pipeline
  • Caddy reverse proxy and TLS
  • Database migration and backups
  • Zero-downtime cutover with rollback
  • Runbook and handover
Send your setup

Managed

Custom
  • Ongoing operations after migration
  • Security patching and upgrades
  • Monitoring and incident response
  • Capacity planning as traffic grows
Send your setup

The real arithmetic of leaving a managed platform

Migration decisions are usually made on the invoice and regretted on the operations. Here is the full picture, including the costs that appear on neither bill, drawn from running our own fleet rather than from a vendor comparison page.

Fixed cost versus usage cost

A VPS charges a flat monthly rate whether you serve a hundred visits or a million. A managed platform charges by usage, which is cheaper below a threshold and more expensive above it. The crossover depends almost entirely on bandwidth and function invocations, not on page count. Before deciding anything, pull your actual usage for the last three months and find where your traffic sits relative to that crossover. A single viral week distorts the picture in both directions.

The line item nobody puts in the comparison

Operating a server costs time: security updates, dependency upgrades, disks filling up, certificates, and being the person who gets woken when it stops. On a fleet this amortises well, which is why it works for us. On a single site owned by a team with no appetite for infrastructure, that time is expensive and irregular, and it tends to land on whoever is least able to refuse it. Price it honestly or the comparison is fiction.

What you actually gain besides money

Cost is the usual trigger and it is rarely the best reason. The durable gains are control and portability: no per-seat pricing, no vendor changing their limits, no feature gated behind an enterprise tier, and the freedom to run anything that fits in a container next to your app. If you need a background worker, a queue, a small database and a scheduled job, owning the box is often simpler than assembling four managed services that each bill separately.

The single-server failure mode

One VPS means one machine that can fail, and an honest comparison includes what that costs you. For most business sites a few minutes of downtime during a restore is acceptable and the saving is real. If it is not acceptable, you need at least two machines and a load balancer, which changes the arithmetic considerably and should be decided before the migration rather than discovered after the first outage.

Test the restore, not the backup

Everyone configures backups. Far fewer have ever restored one. A backup that has never been restored is a hypothesis, and the moment you find out it was incomplete is the worst possible moment to find out. On every migration we run a full restore into a scratch environment and time it, so the recovery procedure is a measured number rather than an assumption.

Often, and not always, which is why the assessment comes first. A VPS with meaningful resources costs a fixed monthly amount regardless of traffic, so the saving grows with usage and can be negative for a small site. The number people forget is operating time: patching, upgrades, certificate issues and the occasional restart at an unsociable hour are real costs even when they never appear on an invoice. If your platform bill is modest and nobody on your team wants to own a server, staying is the rational choice and we will say so.

Four things need deliberate handling. Image optimisation has to run somewhere, either in the Node server or through a separate service. Incremental static regeneration needs shared storage once you run more than one container, otherwise instances disagree about what is cached. Middleware runs in the Node runtime rather than at the edge, which changes latency. And scheduled functions become system cron or a job runner. None of these are hard, all of them fail silently if nobody maps them.

The old deployment stays live and untouched throughout, and DNS TTL is lowered in advance so switching back takes minutes. We decommission nothing until the new stack has run under real traffic long enough to trust it. The rollback procedure is written down and agreed before cutover, not improvised during it.

Your choice, and it is worth deciding before the migration rather than after. If your team takes it, you get the runbook, the compose files, the deployment pipeline and a walkthrough of what breaks first. If you would rather not, we operate it. What does not work is nobody owning it, because an unattended server quietly accumulates unpatched packages until it becomes the incident.

Yes. The pattern is the same for most Node, Python or PHP applications: containerise the app, put Caddy in front, move the database, verify, cut over. Frameworks with heavy platform coupling need more mapping work, and we will tell you during the assessment if a particular dependency makes the move more trouble than it is worth.

A straightforward marketing site is usually a matter of days including verification. An application with a database, background jobs, file uploads and scheduled tasks takes longer, and most of that time goes to the parts that are not the application: getting backups right, testing the restore, and running both stacks in parallel long enough to be confident. We give a timeline after the assessment rather than before it.

4.9/5 sur 35 avis clientsRead what our clients say

Send your current setup and usage

Your stack, your monthly bill and your traffic. You get an honest comparison including the case where staying put is the better answer. Written reply within one business day.

Request an assessment
Free quote