# Vercel or self-hosting: which fits your product?

URL: https://brainpowergroup.eu/en/blog/vercel-or-self-hosting
Date: 2026-08-05
By: Bas Leijder Havenstroom, Brainpower Group

For a small Next.js team, Vercel is usually the fastest way to production. Self-hosting in Docker pays off with steady traffic or when you already run servers.

If you have a small team building a Next.js product and nobody wants to look after servers, Vercel is usually the fastest way to production. Self-hosting with Docker starts to make sense when you want predictable costs, your traffic is steady, or you already have servers and someone who maintains them. We self-host this site in a Docker container, and for some clients I would still pick Vercel.

## What Vercel costs

The free Hobby plan is not an option for a company. Vercel's own terms limit Hobby to personal, non-commercial use, so a product that earns money starts on Pro.

Pro is 20 dollars a month, with one seat that can deploy and 20 dollars of usage credit. Every additional developer who deploys adds 20 dollars a month, and viewers are free. Five deploying developers means 100 dollars a month before a single request has been served. All amounts exclude VAT.

Usage comes on top. Functions are billed on active CPU time and on memory. CPU only counts while your code is actually running, not while it waits for a database or an external API, but memory keeps counting as long as an instance is handling requests. An API that mostly waits is therefore cheap on Vercel. Image processing and heavy computation cost more.

By default Vercel notifies you at 200 dollars per billing cycle. I would set your own limit and an automatic action on day one, so a busy month does not end with a surprise invoice.

## What to watch on Vercel

New projects run their functions in Washington, D.C. (`iad1`) by default. For a European product with its database in Frankfurt, that puts an ocean crossing into every database query. Set the region in the project settings or in `vercel.json` to one close to your database, such as Frankfurt (`fra1`), Paris (`cdg1`) or Dublin (`dub1`). That cuts latency, and functions that run inside the EU also make your GDPR documentation easier to write.

Functions have a maximum duration. On Hobby it is 300 seconds. On Pro the default is also 300 seconds and you can raise it to 800. Long imports, reports or AI jobs that take minutes belong in a queue with a separate worker.

Next.js itself ties you to Vercel less than you might think. The Next.js documentation states that a plain Node.js server and a Docker container support all framework features. The lock-in is in the services around it, such as storage (Blob), configuration (Global Config) and firewall rules you set up in the Vercel dashboard. The more of those you use, the more work a move becomes.

## What self-hosting with Docker involves

This site is a Next.js app built with `output: "standalone"`. On every push to `main`, GitHub Actions builds a Docker image and pushes it to a container registry. Where that image runs after that makes no difference to the app.

What you do take on yourself:

- a reverse proxy in front of the container (Next.js recommends one, to handle rate limiting, request size limits and slow connections),
- operating system and base image updates,
- monitoring and logs,
- backups of everything that is not a container, such as your database,
- someone who picks up the phone when it breaks at night.

A single instance works out of the box. Once you run two or more behind a load balancer, a few things are on you. The cache lives on each instance's local disk by default, so you need a shared cache handler, for example backed by Redis. All instances need the same Server Functions key (`NEXT_SERVER_ACTIONS_ENCRYPTION_KEY`). A fixed `deploymentId` also stops browsers from requesting files of the old version during a rollout.

## Fixed price or pay per use

A VPS or a VM at a cloud provider costs the same every month, whether ten or ten thousand people visit. On Vercel the bill grows with your traffic and your team. With low or irregular traffic Vercel often comes out cheaper, while with steady high traffic or a lot of computation your own server usually wins.

When you self-host, count the hours as well. A server nobody maintains is cheap until the day it falls over. I would plan a few hours of maintenance every month, even when nothing seems wrong, to run updates and test a restore. Where cloud spend tends to leak is covered in [keeping cloud costs under control](/en/blog/keeping-cloud-costs-under-control).

## Which choice fits which situation

| Situation | My choice |
|---|---|
| New product, small team, nobody for operations | Vercel Pro, functions in an EU region, with a spending limit |
| Steady traffic, heavy computation or long jobs | Docker on your own VPS or in your own cloud account |
| Database, workers and queues already run in containers | Docker, so everything lives in one place |
| Frontend that changes often, separate API | Frontend on Vercel, API and workers in containers close to the database |

Whatever you pick, keep a working Dockerfile in your CI, even when you run on Vercel. Then you know you can move, which says more than a migration plan on paper. Aleksa covers functions versus servers in [serverless or your own servers](/en/blog/serverless-or-your-own-servers), and when containers belong on a cluster in [do you need Kubernetes](/en/blog/do-you-need-kubernetes).

## How we do it

For our own site we chose Docker. At clients, our developers work on whatever platform the client already uses, such as Azure, AWS, Google Cloud or their own servers. The stacks and platforms we work with are listed on our [technology page](/en/technology).

## Sources

- [Vercel: Hobby plan](https://vercel.com/docs/plans/hobby)
- [Vercel: Pro plan](https://vercel.com/docs/plans/pro-plan)
- [Vercel: Fluid compute pricing](https://vercel.com/docs/functions/usage-and-pricing)
- [Vercel: Configuring regions for Vercel Functions](https://vercel.com/docs/functions/configuring-functions/region)
- [Next.js: Deploying](https://nextjs.org/docs/app/getting-started/deploying)
- [Next.js: Self-hosting](https://nextjs.org/docs/app/guides/self-hosting)

## Frequently asked questions

**Can you use Vercel's free Hobby plan for a commercial product?**

No. Vercel limits the Hobby plan to personal, non-commercial use. A product that earns money needs at least the Pro plan.

**Does Next.js work as well without Vercel?**

Yes. According to the Next.js documentation, a Node.js server and a Docker container support all features. If you run more than one instance, you set up a shared cache and a single encryption key for Server Functions yourself.

**How much does Vercel Pro cost per month?**

Pro costs 20 dollars a month, including one seat that can deploy and 20 dollars of usage credit. Each additional deploying seat is 20 dollars a month. Usage above the credit is billed per unit, all excluding VAT.

---

Source: https://brainpowergroup.eu/en/blog/vercel-or-self-hosting
Brainpower Group, contact: https://brainpowergroup.eu/en/contact, hello@brainpowergroup.eu
