DEV Community

Joseph Anady
Joseph Anady

Posted on • Originally published at thatdevpro.com

Replacing Vercel with Bare-Metal Debian and nginx: Cost and Performance Comparison

Vercel and Netlify built a generation of developers who never had to touch a Linux box. The pricing model worked when sites were small. At any meaningful scale, the costs and the lock-in start to matter. Here is what running production traffic on bare-metal Debian plus nginx actually looks like in 2026, with real numbers from a 130-site portfolio.

Short answer: Bare-metal Debian plus nginx serves Next.js static exports and Astro builds with TTFB under 200ms, LCP under 2.5s on most pages, and operating costs around $30 per month per server. For static or mostly-static sites, it is faster, cheaper, and you own your stack.

Vercel pricing reality check

Vercel Pro starts at $20 per user per month and scales by team size and bandwidth. Once you cross 1 TB bandwidth, 100k invocations, or basic feature gates, the bill compounds. For a five-site studio shipping 50 GB per month each, you are paying $20 per user per month plus bandwidth overage, typically $80-$200 monthly for a single developer.

A single $30 Debian VPS runs the same five sites at any bandwidth without changing the bill.

What you actually need

A Debian VPS, nginx, Let Encrypt for SSL, BIND or external DNS, and an rsync deploy step.

server {
  listen 443 ssl http2;
  server_name www.example.com;
  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  root /var/www/example.com;
  index index.html;

  location / {
    try_files $uri $uri/index.html $uri/ =404;
  }

  location /_next/static/ {
    expires 365d;
    add_header Cache-Control "public, immutable";
  }
  location ~* \.html$ {
    expires 5m;
    add_header Cache-Control "public, must-revalidate";
  }
}
Enter fullscreen mode Exit fullscreen mode

Performance comparison

Side-by-side PSI runs on the same Next.js 14 site:

Metric Vercel Pro Debian + nginx
TTFB 180-280ms 90-180ms
LCP mobile 2.4-3.1s 2.1-2.9s
CLS 0.00-0.05 0.00-0.05
PSI performance 88-94 90-97

Bare-metal usually wins TTFB because the request hits one server, not an edge function that warms a Node container on each cold start.

The lock-in cost nobody talks about

Vercel-specific primitives (Edge Functions, Image Optimization, Middleware in their shape, ISR with their cache invalidation API) only run on Vercel. The moment you depend on one, your site cannot migrate without a rewrite.

On bare-metal, the same Next.js build artifact (static export from next build with output: export) runs anywhere a webroot can be served from.

When Vercel is the right answer

  • You actually need SSR per request (real personalization, real auth state)
  • You have no Linux administrator on the team
  • You are pre-product-market-fit and your time is better spent on the product
  • You run ISR on a content-driven site where cache invalidation timing matters per page

For everyone else, bare-metal is the cleaner answer.

Operational reality

Running bare-metal is not free. OS patching, certificate renewals, log rotation, backups, occasional rebuild.

The ThatDevPro pattern is one beefy VPS (4 vCPU, 16 GB RAM) serving 100+ sites via nginx vhosts. Backup runs nightly to a $5 storage VPS at a different provider. Total cost: about $35 per month for the whole portfolio.

For the full version with FAQs and the full nginx config, see the original at thatdevpro.com.


Posted from ThatDevPro, SDVOSB veteran-owned web development and AI engineering studio. Owned bare-metal hosting via ThatDeveloperGuy.

Top comments (0)