Desplegar SvelteKit en Lizard
Usa @sveltejs/adapter-node para compilar un servidor SvelteKit para Lizard. Produce build/, que se inicia con node build en el puerto 3000. Instala y configura el adaptador de forma explícita; un proyecto base que todavía usa adapter-auto no establece un destino de despliegue Node.
Empieza con el ejemplo completo del código fuente, que incluye la configuración y los archivos usados por esta guía.
Configurar el adaptador
La versión mayor del adaptador debe coincidir con la de SvelteKit. En SvelteKit 2, que usan el ejemplo y las comprobaciones en la nube, instala adapter-node 5:
npm install --save-dev @sveltejs/adapter-node@5Sin @5, npm elige adapter-node 6, que requiere SvelteKit 3, y se detiene con un error ERESOLVE.
En svelte.config.js, mantén tu preprocess actual y los demás ajustes, pero establece kit.adapter en el adaptador Node:
import adapter from '@sveltejs/adapter-node';
export default {
kit: { adapter: adapter() },
};En SvelteKit 3, ejecuta npm install --save-dev @sveltejs/adapter-node para obtener adapter-node 6. SvelteKit 3 ya no lee svelte.config.js; pasa el adaptador al plugin sveltekit() en vite.config.js:
import adapter from '@sveltejs/adapter-node';
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [sveltekit({ adapter: adapter() })],
});SvelteKit 3 necesita Node 22.17 o posterior; la imagen de compilación predeterminada con Node 22 lo cumple. Hemos compilado los pasos de SvelteKit 3 en local, pero todavía no los hemos desplegado en Lizard.
Conserva solo el adaptador de despliegue que realmente vayas a usar. En particular, una dependencia @sveltejs/adapter-static sin usar puede seleccionar la ruta estática en el detector actual incluso cuando tu configuración importa adapter-node.
| Ajuste | Valor |
|---|---|
| Compilación | npm run build, normalmente vite build |
| Salida | build/ |
| Entorno de ejecución | node build |
| Host y puerto | HOST=0.0.0.0, PORT=3000 |
| Puerto del servicio | 3000 |
Probar el servidor de producción
npm ci
npm run build
HOST=0.0.0.0 PORT=3000 ORIGIN=http://localhost:3000 node buildAbre una página renderizada en el servidor y envía una acción de formulario si la app tiene una. Mantén la ruta de salida predeterminada del adaptador para la detección usada en esta guía.
adapter-node 6 ignora ORIGIN. Construye el origen con https y el encabezado Host de la solicitud, así que en SvelteKit 3 un formulario enviado desde http://localhost:3000 recibe un 403 en esta prueba local. Comprueba los formularios en la URL HTTPS desplegada.
Desplegar y establecer el origen público
Después de la configuración de la CLI:
lizard init --name sveltekit-app
lizard add --service web
lizard up --service web --port 3000
lizard ps --jsonEn SvelteKit 2, establece ORIGIN con el origen HTTPS público exacto de la salida del despliegue, sin una ruta. Por ejemplo, reemplaza este marcador con tu URL real:
lizard secrets set ORIGIN=https://YOUR_PUBLIC_HOST --service webUsa el dominio personalizado en su lugar si ese es el origen que usarán los visitantes. Vuelve a comprobar los formularios después de cambiar la variable. Si necesitas varios orígenes permitidos o URL derivadas de proxy, lee la guía del servidor Node de SvelteKit y configura deliberadamente los encabezados de proxy de confianza.
En SvelteKit 3, omite ORIGIN: la app toma su origen del encabezado Host, que lleva el nombre de host público o tu dominio personalizado. Para fijar un origen, establece paths: { origin: 'https://YOUR_PUBLIC_HOST' } en las opciones de sveltekit(); SvelteKit lo lee durante la compilación.
Verificar y solucionar problemas
Lee los logs de compilación y ejecución con lizard logs --build --service web --json y lizard logs --service web --json. Abre directamente una ruta interna, envía un formulario y solicita una ruta inexistente.
Si los formularios muestran un error de envío entre sitios, revisa ORIGIN (SvelteKit 2) o paths.origin (SvelteKit 3) antes de desactivar una comprobación de seguridad. Si node build no puede encontrar el servidor, verifica el adaptador activo y la ruta de salida. Deja sin configurar las anulaciones del comando del servicio para usar la ruta de lizardpack.
Sitios estáticos de SvelteKit
Una app que pueda prerenderizar todas las páginas necesarias puede usar @sveltejs/adapter-static, su salida predeterminada build/ y el puerto de servicio 80. Esa salida no puede ejecutar acciones de servidor ni endpoints en tiempo de solicitud. Configura el prerenderizado para las rutas que necesites; instalar el paquete por sí solo no es suficiente.
En SvelteKit 2, instala @sveltejs/adapter-static@3 (la versión 4 requiere SvelteKit 3) y reemplaza la importación del adaptador en svelte.config.js:
import adapter from '@sveltejs/adapter-static';
export default {
kit: { adapter: adapter() },
};En SvelteKit 3, instala @sveltejs/adapter-static e impórtalo en vite.config.js en lugar de adapter-node.
Para un sitio cuyas rutas puedan generarse por completo, añade esto a src/routes/+layout.js:
export const prerender = true;
export const trailingSlash = 'always';Elimina de las dependencias los adaptadores de despliegue que no uses. Ejecuta npm run build y comprueba que build/ contiene cada página necesaria. Para la salida predeterminada, deja sin configurar las anulaciones del comando del servicio y despliega un servicio nuevo en el puerto 80. Las compilaciones nuevas sirven el HTML generado y devuelven HTTP 404 para las páginas inexistentes. No reutilices el puerto 3000 de la receta del servidor para nginx.
Usa rutas estáticas y 404 para elegir entre rutas HTML generadas y una reserva SPA. Consulta el adaptador estático de SvelteKit para ver las opciones y limitaciones del framework.
Consulta versiones probadas y resultados en la nube para ver las comprobaciones de despliegue del 9 de septiembre de 2026 y sus límites.
Actualizado