Sube tu Next.js con salida standalone, instala y construye desde el panel Node.js de Plesk y sirve las páginas generadas en el servidor, sin SSH ni Vercel.
Next.js no necesita Vercel: en los planes Profesional y Avanzado corre bajo Node.js Toolkit como cualquier aplicación Node, con sus páginas generadas en el servidor, sus rutas de API y sus estáticos. La clave está en la salida standalone, que deja un server.js autónomo que el panel puede arrancar. Esta guía sigue un despliegue real de Next.js 16 en un subdominio del hosting; si vienes de Astro, el camino es el mismo que en Cómo desplegar Astro con SSR en Node.js en tu plan Profesional o Avanzado.
Antes de empezar
- Un plan Profesional o Avanzado (Qué incluye tu plan de hosting: recursos, límites y permisos) y un subdominio para la aplicación (Cómo crear un subdominio y qué puedes montar en él), con certificado (Cómo activar un certificado Let's Encrypt gratis en tu dominio).
- En
next.config.ts, la salida standalone:output: 'standalone'. Sin esto,next startnecesita todonode_modulesy una consola que en el hosting no tienes. - En
package.json, un scriptbuildque además copie los estáticos dentro de la salida, porque Next no lo hace solo:next build && cp -r public .next/standalone/ && cp -r .next/static .next/standalone/.next/. - Comprueba en tu ordenador que
npm run buildtermina y quenode .next/standalone/server.jssirve la web. Lo que no arranca ahí tampoco arrancará aquí.
Paso a paso
-
Sube el proyecto sin
node_modulesni.nexta la carpeta del subdominio: un zip desde Archivos y Extraer archivos (Cómo publicar una web Astro en tu hosting sin Node en el servidor), o tu repositorio Git (Cómo desplegar tu web desde GitHub, GitLab o Bitbucket). Borra elindex.htmlde bienvenida de Plesk. -
En el subdominio, abre Node.js. Pulsa el valor de Archivo de inicio de la aplicación, escribe
.next/standalone/server.jsy acepta. Avisará de que el archivo no existe: lo crea el build. -
Pulsa Activar Node.js y después Instalación de NPM. Tarda uno o dos minutos: Next es grande.
-
Pulsa Ejecutar Script, escribe
buildy pulsa Ejecutar. En la ventana ves «Creating an optimized production build», la lista de rutas conƒ(dinámicas, generadas en el servidor) y○(estáticas), y al final la copia de los estáticos.
- Pulsa el valor de Raíz del documento y elige la carpeta
publicdel proyecto: lo que pongas ahí (imágenes,robots.txt,favicon) lo sirve el servidor web sin pasar por Node. Comprueba que Raíz de la aplicación sigue siendo la carpeta del proyecto y que el Archivo de inicio es.next/standalone/server.js.
- Pulsa Reiniciar app y abre
https://tudominio.es. La primera petición tarda unos segundos (arranca Node); las siguientes salen al momento.
- Para actualizar: sube el código nuevo, Ejecutar Script →
buildy Reiniciar app. Si cambiaste dependencias, antes Instalación de NPM.
Cómo comprobar que ha funcionado
Recarga dos veces una página dinámica: cambia lo que dependa del servidor (una hora, datos de una API). Las rutas /_next/static/... cargan en 200 (F12 → Red) y una imagen de public también. En el panel Node.js no queda ningún aviso rojo.
Si algo falla
- 503 o «Web application could not be started»: no existe
.next/standalone/server.js; el build falló o no pusisteoutput: 'standalone'. Repite el paso 4 y lee la salida hasta el error. - La página carga sin estilos ni JavaScript, o
/_next/static/...da 404: el scriptbuildno copió.next/staticdentro de.next/standalone/.next/. Revisa el script de Antes de empezar y vuelve a construir. - Las imágenes de
publicdan 404: la Raíz del documento no apunta apublic, o no la copiaste dentro de.next/standalone/. - El build se queda sin memoria («JavaScript heap out of memory»): construye en tu ordenador y sube la carpeta
.next/standaloneya hecha, conpublicy.next/staticdentro; el panel solo la arranca. - Necesitas variables de entorno (claves de una API, la URL de una base de datos): en Variables de entorno personalizadas → especificar, y Reiniciar app. Las
NEXT_PUBLIC_*se fijan en el build, así que también tienen que estar antes de construir. - Cualquier otra cosa: abre un ticket desde tu área de cliente (Cómo abrir un ticket de soporte y que se resuelva a la primera) con la salida del build o el error de la página.