Nuxt usa Nitro como motor de servidor, que compila la aplicación para cualquier plataforma de alojamiento. Se construye una vez y Nitro adapta la salida al destino: servidor Node.js, archivos estáticos, funciones serverless o edge workers.
Dos comandos de build
nuxt build genera un servidor que gestiona SSR, rutas de API y renderizado dinámico:
nuxt build
node .output/server/index.mjsnuxt generate pre-renderiza todas las páginas a HTML estático:
nuxt generate
# despliega .output/public/ en cualquier host estáticoPresets
Indica a Nitro qué plataforma es el destino:
// nuxt.config.ts
export default defineNuxtConfig({
nitro: {
preset: 'vercel'
}
})O configúralo en tiempo de build:
NITRO_PRESET=cloudflare-pages nuxt buildLa mayoría de plataformas se detectan automáticamente, por lo que normalmente no hace falta configurar ningún preset.
Ejemplos por plataforma
Vercel
Sin configuración. Vercel detecta Nuxt automáticamente:
npm i -g vercel
vercelAdmite SSR, rutas de API, edge functions y despliegues de previsualización de forma nativa.
Netlify
npm i -g netlify-cli
netlify deploy --prodAdecuado para sitios con gran cantidad de contenido estático. El SSR se ejecuta como funciones serverless.
Cloudflare Pages
NITRO_PRESET=cloudflare-pages nuxt buildAncho de banda ilimitado en el plan gratuito. La aplicación se ejecuta en la red edge de Cloudflare, cerca de los usuarios en todo el mundo. Algunas APIs de Node.js no están disponibles en Workers.
Servidor Node.js (VPS, Docker)
nuxt build
PORT=3000 node .output/server/index.mjsControl total. Funciona en cualquier servidor que ejecute Node.js.
Docker
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/.output .output
ENV PORT=3000
EXPOSE 3000
CMD ["node", ".output/server/index.mjs"]docker build -t my-app .
docker run -p 3000:3000 my-appElegir plataforma
| Necesidad | Plataforma |
|---|---|
| Configuración más rápida, buena experiencia de desarrollo | Vercel |
| Sitio estático con formularios integrados | Netlify |
| Mejor rendimiento global, bajo coste a escala | Cloudflare Pages |
| Control total, infraestructura existente | Node.js en VPS o Docker |
Variables de entorno en producción
Los valores de configuración en tiempo de ejecución provienen de variables de entorno:
// nuxt.config.ts
export default defineNuxtConfig({
runtimeConfig: {
secretKey: '', // solo en el servidor, lee NUXT_SECRET_KEY
public: {
apiBase: '' // cliente y servidor, lee NUXT_PUBLIC_API_BASE
}
}
})Configúralas en el panel de la plataforma o en el archivo .env. Nuxt mapea automáticamente las variables de entorno con prefijo NUXT_ a las claves de configuración.
El directorio .output
Tras el build, todo reside en .output/:
.output/
├── server/
│ └── index.mjs ← punto de entrada del servidor
├── public/
│ └── _nuxt/ ← assets del cliente (JS, CSS)
└── nitro.json ← metadatos del buildEste directorio es autocontenido. Cópialo a cualquier servidor y ejecútalo.