Guía para Desplegar API NestJS con PostgreSQL en AWS Lightsail

Guía completa paso a paso para desplegar una API NestJS con PostgreSQL en AWS Lightsail, gestionada por Cloudflare, con Nginx reverse proxy, Docker, Swagger y pipeline de despliegue seguro.

2 sept 2025 • 6 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

Guía completa paso a paso para desplegar una API NestJS con base de datos PostgreSQL en AWS Lightsail, utilizando un subdominio gestionado por Cloudflare y reverse proxy con Nginx. Ideal para proyectos de aplicaciones a medida, software a medida y arquitecturas modernas en la nube con foco en rendimiento, seguridad y escalabilidad.

Objetivo final del despliegue en producción: API NestJS accesible bajo https://api.tudominio.com con base de datos PostgreSQL en contenedor, SSL gestionado por Cloudflare, documentación Swagger publicada y pipeline de actualización simple y repetible.

Requisitos previos: un servidor AWS Lightsail con Ubuntu, un dominio gestionado en Cloudflare, el proyecto NestJS alojado en GitLab y acceso SSH al servidor.

Preparación del proyecto en tu repositorio: estructura mínima recomendada en la raíz del repo con las carpetas y archivos src, package.json, Dockerfile, docker-compose.yml, .env.production, .dockerignore y .gitignore. Esta estructura facilita el build reproducible y la orquestación de servicios.

Dockerfile sugerido para producción con Node 20: base node 20, directorio de trabajo en app, copiar package.json y package lock, instalar dependencias con npm ci, copiar el código, compilar con npm run build, eliminar dependencias de desarrollo con npm prune --production, exponer el puerto 3000 y arrancar con npm run start:prod.

Orquestación con docker compose: un servicio postgres con imagen postgres 15, variables POSTGRES_DB POSTGRES_USER POSTGRES_PASSWORD, volumen persistente y healthcheck; y un servicio nestjs que se construye desde el Dockerfile, depende de postgres con condición service healthy, variables de entorno NODE_ENV DB_HOST DB_PORT DB_USERNAME DB_PASSWORD DB_NAME PORT JWT_SECRET SWAGGER_PASSWORD y exposición interna al puerto 3000 enlazado al host solo en 127.0.0.1 para mayor seguridad.

Configuración de NestJS con TypeORM mediante variables de entorno: host tomado de DB_HOST, puerto de DB_PORT, credenciales DB_USERNAME y DB_PASSWORD, base de datos DB_NAME, autoLoadEntities en true, y synchronize deshabilitado en producción para evitar cambios de esquema no controlados. Usa ConfigModule y ConfigService para centralizar la carga de variables.

Configuración del servidor Lightsail: inicia sesión con ssh -i tu clave.pem ubuntu arroba tu ip, actualiza el sistema con sudo apt update && sudo apt upgrade -y, instala Docker con el script oficial, añade tu usuario al grupo docker con sudo usermod -aG docker y vuelve a iniciar sesión, instala docker compose con el paquete del sistema y añade Git con sudo apt install git -y.

Despliegue de la aplicación: clona el repositorio desde GitLab con git clone y accede a la carpeta del proyecto, crea el archivo .env a partir de .env.production o constrúyelo manualmente. Variables de ejemplo para producción en el .env DB_HOST=postgres DB_PORT=5432 DB_USERNAME=usuario DB_PASSWORD=contraseña_segura DB_NAME=nombre_db PORT=3000 NODE_ENV=production JWT_SECRET=secreto_largo_y_aleatorio SWAGGER_PASSWORD=clave_admin_docs. Asegúrate de usar claves robustas y únicas.

Construir y arrancar en segundo plano con docker compose up -d --build, verificar estado con docker compose ps y revisar logs con docker compose logs -f. Pruebas locales en el servidor con curl https://localhost:3000 y curl https://localhost:3000/docs para confirmar que la API y Swagger responden.

Configuración del subdominio en Cloudflare: crea un registro DNS tipo A con nombre api apuntando a la IP pública del Lightsail, con proxy activado y TTL automático. Esto permite que Cloudflare gestione el tráfico y el certificado en el borde.

Instalación de Nginx como reverse proxy: instala con sudo apt install nginx -y, habilítalo y arráncalo con systemctl. Crea un servidor virtual para api.tudominio.com que escuche en el puerto 80 y reenvíe al backend de NestJS en 127.0.0.1:3000. Añade cabeceras de proxy como Host X Real IP X Forwarded For y X Forwarded Proto, y ajusta timeouts para peticiones largas. Habilita el sitio, prueba la configuración con sudo nginx -t y recarga con sudo systemctl reload nginx.

Configura el cortafuegos permitiendo Nginx Full con sudo ufw allow Nginx Full y revisa las reglas activas con sudo ufw status. Mantén cerrados puertos innecesarios para mejorar la ciberseguridad del servidor.

SSL con Cloudflare sin certificados en origen mediante modo flexible: en el panel de Cloudflare selecciona SSL TLS en modo Flexible, activa Always Use HTTPS y asegura que el registro DNS del subdominio esté proxificado. Opcionalmente para máxima seguridad considera modo Full o Full strict con certificado de origen en Nginx si tu caso lo requiere.

Pruebas finales desde tu equipo: curl https://api.tudominio.com debería redirigir a HTTPS si activaste Always Use HTTPS y curl https://api.tudominio.com y https://api.tudominio.com/docs deberían responder a tu API y a la documentación Swagger respectivamente.

Automatización del despliegue con un pequeño script de actualización en el servidor: pasos recomendados pull del código con git pull origin main, copiar .env.production a .env, detener servicios con docker compose down, reconstruir y levantar con docker compose up -d --build. Con esto podrás publicar nuevas versiones en segundos.

Mantenimiento diario y diagnóstico: ver logs globales con docker compose logs -f, logs de un servicio concreto con docker compose logs -f nestjs_app o postgres, reiniciar solo la API con docker compose restart nestjs_app, reconstruir tras cambios con docker compose up -d --build y parar todo con docker compose down.

Copias de seguridad de la base de datos: crea backups con docker exec postgres_db pg_dump -U usuario nombre_db mayor que backup.sql y para restaurar utiliza cat backup.sql tubería docker exec -i postgres_db psql -U usuario -d nombre_db. Programa estas tareas con cron y guarda los archivos en almacenamiento seguro.

Puntos críticos de seguridad para producción: cambia todos los passwords por defecto, usa secrets largos y aleatorios para JWT y otros tokens, limita la exposición de puertos a localhost cuando sea posible, endurece Nginx y el sistema, no subas archivos .env a GitLab, aplica actualizaciones del sistema con regularidad y monitoriza logs y métricas.

Flujo recomendado para despliegues futuros: sube cambios a GitLab en la rama principal, ejecuta el script de despliegue en el servidor, verifica salud de servicios y endpoints clave y actualiza documentación o migraciones si procede.

En Q2BSTUDIO aceleramos proyectos de software a medida y aplicaciones a medida con arquitecturas cloud, automatización y seguridad desde el diseño. Somos especialistas en inteligencia artificial, ia para empresas, agentes IA, ciberseguridad, pentesting, servicios cloud aws y azure, servicios inteligencia de negocio y power bi. Si buscas un partner para desplegar y escalar tu backend con buenas prácticas, contáctanos. Descubre nuestros servicios de servicios cloud en AWS y Azure para construir infraestructuras resilientes y optimizadas y consulta cómo creamos aplicaciones a medida y software a medida con enfoque full stack y DevSecOps.

Resultado final esperado: API disponible en https://api.tudominio.com, documentación pública o protegida en https://api.tudominio.com/docs, SSL automático con Cloudflare, base de datos PostgreSQL contenida y persistente, y pipeline de despliegue listo para crecer con tu negocio.

Consejo extra para entornos avanzados: considera separar redes de docker, activar logs estructurados en JSON para observabilidad, usar Full strict con certificados de origen en Nginx, incorporar un WAF a nivel de Cloudflare, habilitar rate limiting y cache selectiva de respuestas idempotentes, y añadir monitorización con métricas y alertas.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat