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";
}
}
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)