> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.squarecloud.app/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Cómo alojar una aplicación NestJS

# Cómo alojar aplicaciones NestJS en Square Cloud

Alojar una aplicación NestJS en Square Cloud es un proceso directo, enfocado en la eficiencia. Como NestJS utiliza TypeScript, el secreto para un deploy exitoso está en la compilación (build) y en el ajuste correcto del puerto de escucha.

---

## 1. Ajustando el puerto (Port 80)

Square Cloud utiliza el **puerto 80** para enrutar el tráfico de tu aplicación. Por defecto, NestJS suele iniciar en el puerto 3000. Debes modificar el archivo `main.ts` para que escuche en el puerto correcto.

**En tu archivo `src/main.ts`:**
```typescript
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  // Altere de 3000 para 80
  await app.listen(80);
}
bootstrap();
```

---

## 2. Generando el build

No enviamos la carpeta `src` al alojamiento, pues Nest compila el código de manera optimizada a JS.

Ejecuta el comando de build en tu máquina local:
```bash
npm run build
```
Esto generará una carpeta llamada **`dist`** en la raíz de tu proyecto. Es ese contenido el que se ejecutará en Square Cloud.

---

## 3. Preparando el paquete de envío

Para un deploy optimizado, debes crear un `.zip` que contenga:
*   **La carpeta `dist/`:** (Contiene tu código compilado).
*   **El archivo `package.json`:** (Necesario para instalar las dependencias de producción).
*   **El archivo `package-lock.json` o `yarn.lock`:** (Garantiza las versiones exactas de las bibliotecas).

**Importante:** No incluyas la carpeta `node_modules`. Square Cloud instalará las dependencias automáticamente en el servidor tras el upload.

---

## 4. Configurando el archivo principal (Main)

Al realizar el deploy (ya sea por el dashboard o vía archivo de configuración), debes apuntar al archivo de entrada dentro de la carpeta compilada.

*   **Main File:** `dist/main.js`

Si usas el archivo `squarecloud.app` o `squarecloud.config`, la línea quedará así:
```text
MAIN=dist/main.js
```

---

## 5. Consejos de oro para NestJS

*   **Producción:** Asegúrate de que tus dependencias de base de datos y secretos (como claves de API) estén configurados en las **Variables de Entorno (ENVs)** del dashboard de Square, y no "hardcoded" en el código.
*   **Prisma/TypeORM:** Si usas un ORM, recuerda ejecutar las migraciones tras el build o vía scripts de `postinstall` en el `package.json`.
*   **Memoria:** Las aplicaciones NestJS pueden consumir un poco más de RAM durante la inicialización debido a la inyección de dependencias. Monitorea los logs para garantizar que tu plan tiene recursos suficientes.