Este documento describe el stack tecnológico completo necesario para desplegar este proyecto en un servidor con Ubuntu 24.04.
- Ubuntu Server 24.04 LTS
- Al menos 1 GB de RAM (2+ GB recomendado)
- 10 GB de espacio en disco (mínimo)
- Acceso a internet para descargar paquetes
- Runtime: Node.js 18+ LTS (recomendado Node.js 20 LTS)
- Gestión de paquetes: npm 10+ o yarn 1.22+
- Framework: React 18 con TypeScript
- Build: Vite
- Estilos: Tailwind CSS con shadcn-ui
- Routing: React Router Dom
- Estado: Tanstack React Query
- Framework: Node.js con Express o Fastify
- API: REST o GraphQL con Apollo Server
- ORM: Prisma o TypeORM
- Validación: Zod (ya instalado en frontend)
- Relacional: PostgreSQL
- Caché: Redis (para sesiones y cache)
- Autenticación: JWT con Passport.js
- Hasheo: bcrypt
- Gestión de Permisos: CASL o AccessControl
- Servidor Web: nginx como proxy inverso
- Certificados SSL: Let's Encrypt
- Contenerización: Docker y Docker Compose
- Almacenamiento: Servicio S3-compatible para imágenes y archivos
- Headers HTTP: Helmet.js
- Rate Limiting: Express-rate-limit o similar
- CORS: Configurado para permitir solo orígenes autorizados
- Logging: Winston o Pino
- Métricas: Prometheus
- Visualización: Grafana
- Configuración del servidor Ubuntu 24.04
- Instalación de Node.js y npm
- Instalación y configuración de bases de datos
- Configuración de nginx como servidor web
- Configuración de SSL con Let's Encrypt
- Clonación del repositorio
- Construcción de la aplicación
- Configuración del proxy inverso en nginx
- Configuración del sistema para reinicio automático
Se puede utilizar una solución como Supabase, Firebase o Amplify que proporciona muchos de estos servicios integrados, simplificando el despliegue inicial.
-
Instala las dependencias:
npm install
-
Genera la build de producción:
npm run build
-
Sirve la carpeta
distcon un servidor estático. Ejemplo usandoserve:npm install -g serve serve -s dist
También puedes usar Nginx, Apache, Vercel, Netlify, etc. para servir la carpeta dist.
Asegúrate de configurar las variables de entorno necesarias si tu frontend las utiliza (por ejemplo, la URL del backend).