Saltar al contenido principal

Vercel vs VPS: Cuánto Cuesta Realmente Mantener una App Next.js en 2026

Comparo la factura real de Vercel Pro vs un VPS en Hetzner para una app Next.js con tráfico real. Incluye costes ocultos, escenarios de factura sorpresa y cuándo merece la pena cada opción.

Fran Cobos 7 min de lectura 1337 palabras

Tabla de contenidos

Desplegué mi primera app Next.js en Vercel en 2024. git push, URL en 30 segundos, SSL automático. Mágico.

Tres meses después llegó la primera factura que no esperaba: $87. Mi app tenía 12.000 visitas al mes. ¿Cómo es posible?

Desde entonces he mantenido la misma app en Vercel Y en un VPS de Hetzner en paralelo durante 6 meses para comparar. Aquí van los números reales.

La app: Qué estoy desplegando

  • Framework: Next.js 15 (App Router, Server Components)
  • Base de datos: PostgreSQL en Supabase (externo)
  • Auth: Auth.js con Google + GitHub
  • API Routes: 15 endpoints serverless
  • ISR: Páginas estáticas regeneradas cada 60s
  • Tráfico: ~15.000 visitas/mes, ~45.000 page views
  • Imágenes: Servidas desde Cloudflare R2

Vercel Pro: La factura desglosada

Plan Pro: $20/mes base

Lo que incluye:

RecursoIncluidoMi uso real
Bandwidth1 TB~8 GB
Serverless invocaciones1M~180K
Edge Middleware invocaciones1M~45K
ISR regeneraciones100K~22K
Image Optimization5.000~3.200
Build minutes6.000 min~120 min

A primera vista, todo cabe. Pero hay extras:

Los costes ocultos

Image Optimization: Las 5.000 imágenes optimizadas del plan Pro se refieren a imágenes únicas procesadas, no a veces servidas. Con un blog que tiene 30 posts con 3 imágenes cada uno = 90 imágenes únicas × varios tamaños (srcset) = ~450 imágenes. Bien.

Pero si usas next/image con imágenes de usuario (avatares, uploads), cada imagen nueva cuenta. Con 2.000 usuarios subiendo fotos de perfil… llegas rápido a 5.000.

Serverless Function Duration: El plan Pro incluye 1.000 GB-horas. Cada invocación × su duración × su memoria. Si tienes una API route que tarda 3 segundos (porque llama a una IA), eso come rápido:

180.000 invocaciones × 0.5s promedio × 1GB memoria = 25 GB-horas
(bien, dentro del límite)

Pero si una función tarda 3s (llamada a OpenAI):
50.000 invocaciones × 3s × 1GB = 41.6 GB-horas
(todavía bien, pero se nota)

Mi factura real de Vercel en 6 meses:

MesBaseExtrasTotal
1$20$0$20
2$20$0$20
3$20$12 (imágenes)$32
4$20$8$28
5$20$15$35
6$20$22 (pico tráfico)$42
Total$177
Media$29.50/mes

El escenario de pesadilla: La factura sorpresa

Un post de mi blog se compartió en Hacker News. En 24 horas:

  • 45.000 visitas (vs las 500/día normales)
  • 890.000 serverless invocations
  • 95 GB de bandwidth

Con el plan Pro, la factura de ese mes: $87. No fue dramático porque el post no siguió viral, pero si hubiera sido una semana entera, habría sido $200+.

Vercel tiene un “Spend Limit” que puedes configurar para que tu app deje de funcionar si llegas a un límite. Pero tu app deja de funcionar. Si es un SaaS de pago, eso no es aceptable.

VPS (Hetzner): La factura desglosada

Setup

RecursoEspecificacionesPrecio
VPS CX222 vCPU, 4 GB RAM, 40 GB SSD4,50€/mes
IPv4 dedicada(incluida)0€
Backups automáticos20% del precio del VPS0,90€/mes
Total5,40€/mes (~$5.80)

Sí. $5.80 al mes. Independientemente del tráfico.

Lo que tuve que configurar

# 1. Ubuntu 24.04 + Docker
apt update && apt install docker.io docker-compose-v2 nginx certbot

# 2. Dockerfile para Next.js
# (Next.js tiene un Dockerfile oficial en su repo)

# 3. Nginx como reverse proxy
server {
    listen 443 ssl http2;
    server_name miapp.com;
    
    ssl_certificate /etc/letsencrypt/live/miapp.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/miapp.com/privkey.pem;
    
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

# 4. Certbot para SSL automático
certbot --nginx -d miapp.com

# 5. GitHub Actions para deploy automático
# (git push → build → docker push → restart en el VPS)

Tiempo de setup inicial: ~3 horas la primera vez. Después tengo un script que lo replica en 15 minutos.

Mi factura real del VPS en 6 meses

MesVPSExtrasTotal
1-65,40€0€5,40€
Total32,40€ (~$35)
Media$5.80/mes

Cuando el post se viralizó en HN, ¿qué pasó con el VPS? Nada. La CPU subió al 60%, Nginx sirvió páginas cacheadas, y la factura fue… $5.80. Como siempre.

Comparativa directa

AspectoVercel ProVPS Hetzner
Precio base$20/mes~$5.80/mes
Precio real (mi caso)~$29.50/mes~$5.80/mes
Setup0 minutos3 horas
Deploygit pushgit push (con CI/CD)
SSLAutomáticoCertbot (automático tras setup)
CDNIncluido (Edge Network)Necesitas Cloudflare (gratis)
EscaladoAutomáticoManual (resize VPS)
Serverless FunctionsNativasNo (usas Node.js normal)
Image OptimizationIncluidaNecesitas sharp + cache
Factura sorpresaPosibleImposible
Mantenimiento0~1h/mes (updates)
ISR/SSRNativoFunciona con next start
MonitoringDashboard incluidoNecesitas Uptime Kuma/similar

Cuándo elegir Vercel

  • Equipo sin DevOps: Si nadie en tu equipo sabe configurar un servidor, Vercel vale la pena
  • Preview Deployments: Cada PR genera una URL de preview → genial para equipos
  • Edge Functions: Si necesitas lógica en el edge (geolocalización, A/B testing)
  • Presupuesto > $30/mes es aceptable: Para empresas que facturan, $30/mes es nada
  • MVP que necesitas YA: Deploy en 30 segundos vs 3 horas de setup

Cuándo elegir un VPS

  • Presupuesto ajustado: $5.80 vs $30/mes es una diferencia del 80%
  • Tráfico impredecible: Un VPS no te penaliza por ser viral
  • Control total: Logs, SSH, cron jobs, lo que necesites
  • Multi-app: En un VPS de $5.80 puedo correr 3-4 apps a la vez
  • Aprendizaje: Montar un servidor te enseña cosas que Vercel te oculta

Mi setup actual (lo mejor de ambos mundos)

Blog/Portfolio (este sitio) → Netlify (gratis, estático)
SaaS frontend (Next.js) → VPS Hetzner ($5.80/mes)
SaaS API (NestJS) → Mismo VPS
Base de datos → Supabase ($25/mes)
CDN/Caché → Cloudflare (gratis)
CI/CD → GitHub Actions (gratis)
Monitoring → Uptime Kuma (self-hosted en el mismo VPS)

Total: ~$31/mes para un stack completo de producción. Con Vercel sería ~$55/mes para lo mismo.

Si quieres configurar el deploy automático con GitHub Actions, lee mi guía de deploy gratis.

El elefante en la habitación: Next.js sin Vercel

Next.js es propiedad de Vercel. Las features más nuevas (Partial Prerendering, Server Actions optimizados) funcionan mejor en Vercel. En un VPS con next start, todo funciona, pero sin las optimizaciones de edge.

Alternativas si esto te preocupa:

  • Astro: Lo uso para este blog. Genera HTML estático, funciona en cualquier hosting
  • Remix: Funciona en cualquier servidor Node.js sin preferencia por un hosting
  • SvelteKit: Idem, adapter para cualquier plataforma

Si estás empezando un proyecto nuevo y no quieres depender de Vercel, considera estas opciones. Si ya tienes una app Next.js, funciona perfectamente en un VPS — solo te pierdes las optimizaciones de edge.

Artículos relacionados

Fran Cobos

Fran Cobos

Desarrollador Full Stack especializado en IA aplicada, automatización y desarrollo web. Escribo sobre herramientas, tutoriales y casos reales para programadores.

¿Necesitas desarrollo a medida?

Apps web, IA, módulos ERP — cuéntame tu proyecto.