Introducción: por qué desplegar una aplicación TypeScript en VPS es la elección correcta
El desarrollo con TypeScript se ha convertido en el estándar de la industria gracias al tipado estricto y la legibilidad mejorada del código. Sin embargo, una vez finalizado el desarrollo, surge una pregunta clave: ¿cómo desplegar correctamente la aplicación en un servidor de producción? Desplegar una aplicación TypeScript en un VPS (Virtual Private Server) no es simplemente copiar archivos. Es un proceso que incluye la compilación de TypeScript a JavaScript, la configuración del entorno, la gestión de procesos y la garantía de seguridad.
En este artículo, analizaremos un algoritmo paso a paso para desplegar una aplicación TypeScript en un VPS. Aprenderá cómo preparar el servidor, configurar la compilación, ejecutar la aplicación con el gestor de procesos PM2 y garantizar su disponibilidad a través de Nginx. El material está dirigido a desarrolladores que ya tienen una aplicación básica en TypeScript (por ejemplo, Express.js o NestJS) y desean desplegarla en un servidor remoto.
Paso 1: Preparación del VPS e instalación del software necesario
La primera etapa del despliegue de una aplicación TypeScript en un VPS es la configuración del propio servidor. Usaremos Ubuntu 22.04 LTS, el sistema operativo más estable y popular para servidores web.
Después de conectarse al servidor por SSH, ejecute los siguientes comandos:
# Actualización de paquetessudo apt update && sudo apt upgrade -y
# Instalación de Node.js (versión 18 o superior)curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -sudo apt install -y nodejs
# Verificación de versionesnode -vnpm -v
# Instalación de Gitsudo apt install git -y
# Instalación del gestor de procesos PM2npm install -g pm2Tenga en cuenta: TypeScript no necesita instalarse globalmente en el servidor. Solo se utilizará en la etapa de compilación del proyecto, que puede realizarse tanto en la máquina local como en el servidor a través de scripts CI/CD.
También se recomienda configurar un firewall básico:
sudo ufw allow OpenSSHsudo ufw allow 'Nginx Full'sudo ufw enablePaso 2: Clonación del proyecto y compilación de TypeScript
Ahora que el servidor está listo, transfiramos el código de la aplicación TypeScript. La forma más común es clonar el repositorio a través de Git.
# Clonación del repositoriogit clone https://github.com/your-username/your-project.gitcd your-project
# Instalación de dependenciasnpm install
# Compilación de TypeScript a JavaScriptnpx tscUn punto importante: asegúrese de que en el archivo tsconfig.json la carpeta de salida esté correctamente especificada. Normalmente es dist o build:
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"]}Después de una compilación exitosa, en la carpeta dist aparecerá el código JavaScript listo para ejecutarse. Verifique que la aplicación se inicie correctamente:
node dist/index.jsPaso 3: Ejecución con PM2 y configuración de inicio automático
La ejecución simple con node no es adecuada para producción: si la conexión SSH se interrumpe, el proceso se detendrá. Para el despliegue de una aplicación TypeScript en un VPS, usamos PM2, que proporciona:
- Reinicio automático después de una caída
- Registro de errores y stdout
- Clustering (ejecución en varios núcleos de CPU)
Cree un archivo ecosystem.config.js en la raíz del proyecto:
module.exports = { apps: [{ name: 'my-ts-app', script: './dist/index.js', instances: 'max', exec_mode: 'cluster', env: { NODE_ENV: 'production', PORT: 3000 }, error_file: './logs/err.log', out_file: './logs/out.log', merge_logs: true }]};Inicie la aplicación con PM2:
pm2 start ecosystem.config.jspm2 savepm2