Instalación de Next.js y puesta en producción
Explicamos paso a paso cómo crear un proyecto Next.js con create-next-app, la estructura de carpetas del App Router y cómo publicar el proyecto en Vercel o en su propio servidor.

Para instalar Next.js, después de instalar la última versión LTS de Node.js, ejecute en el terminal el comando npx create-next-app@latest. El asistente pregunta por TypeScript, ESLint, Tailwind CSS y App Router. Entre en la carpeta del proyecto e inicie el servidor de desarrollo con npm run dev; la web se abre en localhost:3000, y para producción se usa npm run build.
Qué es Next.js y quién debería usarlo
Next.js es un framework de aplicaciones web construido sobre React. Mientras que React solo dibuja componentes de interfaz, Next.js trae ya resueltas necesidades como el enrutamiento, la generación de páginas en el servidor, la salida de páginas estáticas, la optimización de imágenes y los endpoints de API.
Su mayor diferencia es que puede generar las páginas como HTML en el servidor. Los buscadores y las vistas previas de redes sociales ven el contenido directamente y la primera carga es más rápida. Por eso es más adecuado que las aplicaciones de una sola página para webs corporativas centradas en el contenido, catálogos y blogs.
Si solo desarrolla un panel de administración que requiere inicio de sesión, puede bastar una estructura más sencilla; para ese caso consulte nuestra guía de instalación de React con Vite.
Requisitos previos
Next.js es exigente con las versiones de Node.js que admite y, en las nuevas versiones principales, deja de dar soporte a las versiones antiguas de Node. Por eso lo más fiable es instalar la última versión LTS desde nodejs.org.
- La última versión LTS de Node.js y npm (viene con Node); también se pueden usar pnpm, yarn o bun.
- Un editor de código; para instalarlo con las extensiones recomendadas, consulte el artículo de instalación de VS Code.
- Git y un repositorio remoto (GitHub, GitLab): los procesos de despliegue suelen alimentarse del repositorio.
- Si va a instalarlo en su propio servidor, un servidor Linux con acceso SSH.
Instale y verifique Node.js
La instalación de Node.js presenta pequeñas diferencias según el sistema operativo; los comandos de Next.js, en cambio, son iguales en todas partes después de instalarlo.
Windows
Descargue el instalador LTS de nodejs.org o use winget; después vuelva a abrir el terminal.
winget install OpenJS.NodeJS.LTS
node -vmacOS
Puede instalarlo con el paquete oficial o con Homebrew.
brew install node
node -vLinux
La versión de los repositorios de la distribución puede quedarse anticuada; es más seguro instalarlo con nvm.
nvm install --lts
nvm use --lts
node -vCrear el proyecto con create-next-app
El asistente de create next app es la herramienta oficial de inicio y instala de una vez todos los paquetes necesarios. Al ejecutar el comando, pregunta el nombre del proyecto y algunas opciones; si tiene dudas, aceptar los valores predeterminados recomendados es un buen comienzo.
| Pregunta | Recomendación |
|---|---|
| TypeScript | Sí; detecta errores mientras escribe |
| ESLint | Sí; por la calidad del código |
| Tailwind CSS | Según preferencia; elija según su sistema de diseño |
| Carpeta src/ | Según preferencia; separa los archivos de configuración del código |
| App Router | Sí; es la estructura recomendada para proyectos nuevos |
| Import alias | Basta con el predeterminado @/* |
npx create-next-app@latest benim-sitem
cd benim-sitem
npm run devEntender la estructura del App Router
El App Router de Next.js genera el enrutamiento a partir de la estructura de carpetas. Cada carpeta dentro de la carpeta app es un segmento de la dirección; el archivo page.tsx de esa carpeta define la página y layout.tsx define la estructura común de esa sección.
En el App Router, los componentes son por defecto componentes de servidor: se ejecutan en el servidor, pueden obtener datos directamente y no envían JavaScript al navegador. Los componentes que necesitan interacción, como clics o estado de formularios, se convierten en componentes de cliente escribiendo la directiva use client al principio.
| Archivo | Dirección / función |
|---|---|
| app/layout.tsx | Estructura raíz de toda la web: html, body, cabecera y pie comunes |
| app/page.tsx | Página de inicio (/) |
| app/hakkimizda/page.tsx | La dirección /hakkimizda |
| app/blog/[slug]/page.tsx | Dirección dinámica: /blog/cualquier-articulo |
| app/not-found.tsx | Página 404 |
| app/api/iletisim/route.ts | Endpoint de API (manejadores POST y GET) |
Metadatos para SEO
Cada página o archivo de layout puede definir el título, la descripción y las etiquetas Open Graph exportando un objeto metadata. En las páginas dinámicas se usa la función generateMetadata. Esta estructura facilita gestionar a nivel de página las etiquetas necesarias para un diseño web SEO.
Build y variables de entorno
Antes de publicar, genere la compilación de producción con npm run build. La salida del build lista si cada página se genera de forma estática o dinámica; que una página que no esperaba salga como dinámica es una señal temprana de carga innecesaria en el servidor.
Las variables de entorno se guardan en el archivo .env.local. Solo las variables con el prefijo NEXT_PUBLIC_ se envían al navegador; la contraseña de la base de datos y las claves secretas de API deben quedarse sin prefijo y usarse solo en el código del servidor.
npm run build
npm run startCómo generar cada página
La fuerza de Next.js está en poder elegir una estrategia de renderizado distinta para cada página. Una mala elección significa o bien un coste de servidor innecesario o bien contenido obsoleto; por eso, justo después de la instalación, clasifique sus páginas según su tipo.
Las páginas que cambian poco, como «Sobre nosotros», servicios y contacto, son ideales para la generación estática: se generan una vez durante la compilación y se sirven desde la CDN en menos de un segundo. Casi la totalidad de las páginas de una web corporativa pertenece a este grupo.
Para las páginas que se actualizan de vez en cuando, como el blog y los listados de productos, regenerar a intervalos (revalidate) es un buen equilibrio. En cambio, el panel de usuario, el carrito o las pantallas de reservas que muestran disponibilidad al instante deben generarse en el servidor en cada petición. Este último grupo es un escenario habitual en el software sectorial, como el de hoteles y agencias, y obliga a pensar a la vez el diseño de la base de datos, la caché y la autorización.
Opciones de despliegue de Next.js
Para el despliegue de Next.js hay tres vías habituales. Cuál elegir depende del tráfico, del presupuesto, de la ubicación de los datos y de la experiencia de su equipo en la gestión de servidores.
- Vercel: la plataforma de la empresa que desarrolla Next.js. Conecta el repositorio y en cada envío se genera automáticamente la compilación y una dirección de vista previa.
- Su propio servidor Node.js: la aplicación que se ejecuta con npm run start se mantiene en marcha con un gestor de procesos como PM2, con Nginx por delante. Ofrece control total, pero la responsabilidad del mantenimiento es suya.
- Exportación estática: con el ajuste output: 'export' en el archivo next.config, la web se convierte en archivos HTML planos. Las funciones dinámicas que requieren componentes de servidor no funcionan en este modo.
Publicación con PM2 y Nginx
En un servidor basado en Ubuntu, después de instalar Node.js, descargue el proyecto del repositorio, compílelo e inícielo con PM2. El comando startup de PM2 le pide que ejecute con sudo la línea que imprime en pantalla; esa línea hace que la aplicación se inicie automáticamente cuando el servidor se reinicie.
git clone https://github.com/kullanici/benim-sitem.git
cd benim-sitem
npm ci
npm run build
sudo npm install -g pm2
pm2 start npm --name benim-sitem -- start
pm2 save
pm2 startupserver {
listen 80;
server_name ornek.com www.ornek.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Errores frecuentes y soluciones
La mayoría de los errores que aparecen en los proyectos Next.js se deben a incompatibilidades de versión o a mezclar código de servidor y de cliente. Para los problemas con la gestión de paquetes, también le ayudará la guía de comandos de npm.
| Síntoma | Solución |
|---|---|
| Aviso de que la versión de Node no es compatible | Pase a la última versión LTS; si usa nvm, nvm use --lts |
| Puerto 3000 en uso | Elija otro puerto con npm run dev -- -p 3001 |
| Error Hydration failed | Mueva a un componente de cliente o a useEffect el código que genera una salida distinta en el servidor y en el navegador (fecha, número aleatorio, uso de window) |
| useState no se puede usar en un componente de servidor | Añada la directiva use client al principio del archivo |
| La variable de entorno está vacía en producción | Defina la variable también en el servidor; si la necesita en el navegador, use el prefijo NEXT_PUBLIC_ y vuelva a compilar |
Preguntas frecuentes
01¿Debo usar Pages Router o App Router?
Para proyectos nuevos, la recomendación oficial es el App Router; funciones como los componentes de servidor, los layouts anidados y el renderizado en streaming solo existen en esta estructura. El Pages Router sigue siendo compatible, así que no tiene por qué migrar con prisa un proyecto antiguo.
02¿Es imprescindible Vercel para Next.js?
No. Next.js es de código abierto y funciona en cualquier servidor que pueda ejecutar Node.js o en un contenedor Docker. Vercel facilita la instalación; su propio servidor puede aportar ventajas en coste, ubicación de los datos y control.
03¿Funciona un proyecto Next.js en un hosting compartido?
Un proyecto que requiere funciones de servidor no funciona en un hosting compartido clásico en el que no se puede ejecutar un proceso Node.js. Si su web es totalmente estática, puede subir los archivos generados con output: export; de lo contrario, se necesita un VPS o un entorno compatible con Node.
Instalar Next.js se termina con unos pocos comandos; una estrategia de renderizado adecuada y un entorno de producción sólido son lo que da larga vida al proyecto. Si planea una aplicación a medida para su negocio, como reservas, anuncios o un panel de administración, conozca nuestras soluciones de software; y para una web rápida y centrada en el contenido, conozca a nuestro equipo de diseño web.


