Despliegue de una aplicación TypeScript en VPS: guía paso a paso de la A a la Z
\n\nDesarrollar en TypeScript es el estándar moderno para crear aplicaciones web robustas y escalables. Sin embargo, después de escribir el código surge la pregunta: ¿cómo implementarlo correctamente en un servidor real? En este artículo, analizaremos el ciclo completo de despliegue de una aplicación TypeScript en un VPS (Servidor Privado Virtual). Aprenderá a configurar el entorno, compilar TypeScript a JavaScript, organizar el inicio automático con PM2 y configurar un proxy inverso a través de Nginx. El material está dirigido a desarrolladores que ya tienen un conocimiento básico de TypeScript y Linux.
\n\n1. Preparación del VPS e instalación del software necesario
\n\nEl primer paso es preparar el servidor. Usaremos Ubuntu 22.04 LTS, ya que es uno de los sistemas operativos más estables y populares para VPS. Conéctese al servidor a través de SSH:
\n\nssh root@su-ip-del-servidor\n\nActualice el gestor de paquetes e instale Node.js (se recomienda la versión LTS) junto con el gestor de paquetes npm:
\n\napt update && apt upgrade -y\ncurl -fsSL https://deb.nodesource.com/setup_20.x | bash -\napt install -y nodejs git nginx\n\nVerifique la instalación:
\n\nnode -v # v20.x.x\nnpm -v # 10.x.x\n\nAhora instale globalmente TypeScript y PM2 (un administrador de procesos para Node.js):
\n\nnpm install -g typescript pm2\n\nImportante: TypeScript se compila a JavaScript, por lo que no es necesario tener TypeScript en tiempo de ejecución en el servidor; basta con compilar el código localmente o en el servidor antes de ejecutarlo. Sin embargo, la instalación global de ts-node puede ser útil para la depuración.
\n\n2. Compilación de TypeScript y configuración de package.json
\n\nSupongamos que su aplicación tiene la siguiente estructura:
\n\nmy-ts-app/\n├── src/\n│ ├── index.ts\n│ ├── routes.ts\n│ └── utils.ts\n├── package.json\n├── tsconfig.json\n└── .gitignore\n\nEl archivo tsconfig.json debe estar configurado para la compilación de producción. Ejemplo de configuración:
{\n "compilerOptions": {\n "target": "ES2020",\n "module": "commonjs",\n "outDir": "./dist",\n "rootDir": "./src",\n "strict": true,\n "esModuleInterop": true,\n "skipLibCheck": true,\n "forceConsistentCasingInFileNames": true,\n "resolveJsonModule": true\n },\n "include": ["src/**/*"],\n "exclude": ["node_modules", "dist", "tests"]\n}\n\nAgregue scripts en package.json para compilar y ejecutar:
{\n "name": "my-ts-app",\n "version": "1.0.0",\n "scripts": {\n "build": "tsc",\n "start": "node dist/index.js",\n "dev": "ts-node src/index.ts"\n },\n "dependencies": {\n "express": "^4.18.2"\n },\n "devDependencies": {\n "typescript": "^5.3.3",\n "@types/express": "^4.17.21",\n "ts-node": "^10.9.2"\n }\n}\n\nAhora, cuando ejecute npm run build, TypeScript compila los archivos de la carpeta src a la carpeta dist. Ejemplo de un servidor simple en Express (archivo src/index.ts):
import express, { Request, Response } from 'express';\n\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req: Request, res: Response) => {\n res.send('¡La aplicación TypeScript funciona en VPS!');\n});\n\napp.listen(PORT, () => {\n console.log(`Servidor iniciado en el puerto ${PORT}`);\n});\n\n3. Clonación del repositorio y compilación en el servidor
\n\nCopie su aplicación al servidor. La forma más cómoda es a través de Git. Si su código está en GitHub/GitLab, ejecute en el servidor:
\n\ncd /var/www\ngit clone https://github.com/su-usuario/my-ts-app.git\ncd my-ts-app\n\nInstale las dependencias y realice la compilación:
\n\nnpm install\nnpm run build\n\nDespués de esto, en la carpeta dist aparecerán los archivos .js
Blogs
Book Recommendations
Leer también
Reflexión e introspección en PHP: cómo analizar tu código
Feature flags en C++: gestión de funcionalidades sin dolor ni recompilación
.Contains() sin distinción de mayúsculas y minúsculas en C#: 5 mejores formas en 2025
Perfilado de código Swift: encontrando cuellos de botella en la práctica
C# y redes neuronales: cómo conectar ChatGPT a un proyecto