Por qué autoalojar SvelteKit en un VPS
SvelteKit se adapta a numerosos destinos mediante sus adaptadores (Vercel, Netlify, Cloudflare…), pero el adaptador oficial @sveltejs/adapter-node produce un servidor Node autónomo, perfecto para un VPS. En lugar de dividir su aplicación en funciones serverless sujetas a cold starts y a límites de duración de ejecución, obtiene un proceso persistente que mantiene abiertas sus conexiones a la base de datos y responde sin arranque en frío. Las acciones de formulario, las funciones load del lado del servidor y los endpoints +server.ts se ejecutan en un único runtime que usted controla. En un VPS, además evita la facturación por invocación, frecuente en las plataformas front, que se vuelve impredecible en cuanto sube el tráfico.
Beneficios concretos
- Servidor Node persistente mediante adapter-node: ningún cold start en las rutas de servidor
- Conexiones a la base de datos mantenidas abiertas en un pool, sin reconexión en cada petición
- Sin facturación por invocación: coste estable incluso con un tráfico elevado e irregular
- Acciones de formulario y endpoints
+server.tsejecutados sin límite de duración impuesto - WebSockets y SSE posibles, allí donde el serverless los prohíbe o los complica
- Variables de entorno y secretos gestionados directamente, sin panel de una plataforma de terceros
Requisitos de hardware y software
Una aplicación SvelteKit en modo Node consume de forma moderada: un VPS de 1 vCPU y 2 GB de RAM basta para un sitio de tráfico medio; suba a 2 vCPU / 4 GB si coloca junto a ella una base PostgreSQL y tiene funciones load de servidor pesadas. Instale Node.js 20 LTS y, o bien Docker, o bien PM2 para gestionar el proceso como daemon. Nginx hará de reverse proxy. Apunte su dominio a la IP del VPS. El build (build/ generado por adapter-node) se mantiene ligero: de 5 a 10 GB de disco bastan con los node_modules.
Despliegue paso a paso
Instalar y configurar el adaptador Node
Añada
@sveltejs/adapter-nodey declárelo ensvelte.config.js(adapter: adapter()). Es él quien transforma su aplicación en un servidor Node autónomo en lugar de en un bundle serverless.Compilar la aplicación
Ejecute
npm run build. SvelteKit genera una carpetabuild/que contieneindex.js, el punto de entrada del servidor. Puede probarlo en local connode build; por defecto escucha en el puerto 3000.Contenerizar o daemonizar el proceso
Con Docker: un Dockerfile
node:20-alpineque copiabuild/ypackage.json, instala las dependencias de producción (npm ci --omit=dev) y ejecutanode build. Sin Docker: utilice PM2 conpm2 start build/index.js --name svelte-apppara el reinicio automático.Inyectar la configuración de runtime
Pase
PORT,ORIGIN(imprescindible para que SvelteKit valide las acciones de formulario) y sus secretos a través del entorno:ORIGIN=https://mondomaine.com. Sin unORIGINcorrecto, las acciones de formulario fallarán en producción con un error CSRF.Configurar Nginx como frontal
Cree un vhost con
proxy_pass http://127.0.0.1:3000;y las cabecerasproxy_set_header HostyX-Forwarded-Proto $scheme. Activeproxy_http_version 1.1y las cabecerasUpgradesi utiliza WebSockets.Proteger con Let's Encrypt
Ejecute
certbot --nginx -d mondomaine.com. Una vez instalado el certificado, compruebe queORIGINcoincide con la URL HTTPS final; de lo contrario, los envíos de formulario serán rechazados.
Cachee la salida de las rutas estáticas con la cabecera Cache-Control en sus funciones load, y active la precompresión: adapter-node sirve automáticamente los archivos .gz y .br si existen. Compile con la precompresión definiendo precompress: true en las opciones del adaptador. En cuanto a la gestión de procesos, prefiera el modo cluster de PM2 (pm2 start build/index.js -i max) para aprovechar todos los núcleos del VPS con una carga de CPU elevada.
Desplegar SvelteKit en un clic desde el Marketplace
El Marketplace de ServOrbit ofrece una plantilla SvelteKit Stack que configura automáticamente Node.js LTS, PM2 y Nginx en su VPS Ubuntu 24.04 en unos minutos. Elija su VPS, seleccione la plantilla y obtenga un entorno de producción listo para recibir su proyecto SvelteKit — sin línea de comandos del sistema. El aprovisionamiento instala toda la cadena de herramientas; solo queda transferir su build y configurar Nginx para su dominio.