> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vertracloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Cómo alojar una API Express.js en Vertra Cloud

> Despliega una API Express.js en Vertra Cloud: enlace a 0.0.0.0 y a PORT, publicación del subdominio y peticiones en los logs en directo.

## Requisitos

* Node.js instalado en local
* Cuenta en [Vertra Cloud](https://vertracloud.app)

## Estructura del proyecto

```
my-api/
├── src/
│   ├── index.js
│   ├── routes/
│   │   └── users.js
│   └── middleware/
│       └── auth.js
├── package.json
└── vertracloud.config
```

## Configuración

### package.json

```json theme={null}
{
  "name": "my-api",
  "version": "1.0.0",
  "main": "src/index.js",
  "scripts": {
    "start": "node src/index.js"
  },
  "dependencies": {
    "express": "^4.18.0",
    "cors": "^2.8.5",
    "dotenv": "^16.3.0"
  }
}
```

### vertracloud.config

```ini theme={null}
MAIN=src/index.js
START=npm start
VERSION=recommended
```

## Ejemplo completo

```javascript theme={null}
const express = require('express');
const cors = require('cors');

const app = express();
const port = process.env.PORT || 80;

app.use(cors());
app.use(express.json());

app.get('/', (req, res) => {
  res.json({ message: 'API online on Vertra Cloud' });
});

app.get('/health', (req, res) => {
  res.json({ status: 'healthy', uptime: process.uptime() });
});

app.get('/api/users', (req, res) => {
  res.json({ users: [] });
});

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({ error: 'Internal server error' });
});

app.listen(port, '0.0.0.0', () => {
  console.log(`API running on port ${port}`);
});
```

> [!WARNING]
>
> Usa siempre `'0.0.0.0'` como host en `app.listen()`. El enlace predeterminado a `localhost` no acepta conexiones externas dentro del contenedor.

## Deploy

**Dashboard**

1. Comprime el proyecto en un `.zip` (las carpetas como `node_modules`, `venv` y `target` se eliminan automáticamente) o súbelo a GitHub.
2. En el panel, haz clic en **Nuevo Proyecto** y sube el `.zip` o pega la URL del repositorio.
3. En **Build**, revisa el runtime (**JavaScript**), el archivo principal (`index.js`) y la memoria. Los comandos de inicio y de build están en **Ajustes avanzados**.
4. Añade tus variables de entorno en **Variables de Entorno**.
5. En **Red**, activa la **publicación web** para que la aplicación reciba una dirección `*.vertraweb.app` (plan Pro o superior, 512 MB de memoria). La aplicación debe escuchar en el puerto 80.
6. Revisa y despliega. Sigue la salida en la pestaña **Logs**.

**CLI**

```bash theme={null}
vertra upload
vertra logs -f
```

Consulta la [CLI](https://docs.vertracloud.app/es-es/cli.md) para la instalación y el inicio de sesión.

**VS Code**

Abre la carpeta con la extensión de Vertra Cloud instalada y ejecuta **Deploy current project**. Consulta la [extensión de VS Code](https://docs.vertracloud.app/es-es/vscode-extension.md).

La guía completa está en [Primer despliegue](https://docs.vertracloud.app/es-es/how-to-host.md).

## Versiones disponibles

| Versión | Estado | Descripción |
| - | - | - |
| 24.22.1 | Más reciente | Node.js 24.22.1 (versión más reciente) |
| 22.23.4 | Recomendada | Node.js 22.23.4 LTS (recomendada para producción) |

## Conexión a una base de datos

Las bases de datos de Vertra exigen TLS **y** el certificado de cliente. Coloca en tu proyecto los tres archivos de la pestaña
**Certificados** de la base de datos y léelos al abrir el pool:

```javascript theme={null}
const fs = require('fs');
const { Pool } = require('pg');

const pool = new Pool({
  host: process.env.DB_HOST,
  port: Number(process.env.DB_PORT), // única por base de datos, cópiala desde el panel
  user: 'postgres',
  password: process.env.DB_PASSWORD,
  database: 'postgres',
  ssl: {
    ca: fs.readFileSync('certificate.pem'),
    cert: fs.readFileSync('certificate.crt'),
    key: fs.readFileSync('certificate.key'),
    rejectUnauthorized: true,
  },
});
```

Los ejemplos de MongoDB, Redis y MySQL están en [¿Cómo me conecto a cada motor?](https://docs.vertracloud.app/es-es/databases.md#cómo-me-conecto-a-cada-motor).

## Notas

* En aplicaciones **TypeScript**, compila antes del despliegue y apunta `MAIN` al archivo `.js` compilado
* Usa **variables de entorno** para la configuración de la base de datos y los secretos
* El **reinicio automático** está activado por defecto en todas las aplicaciones
* Configura un endpoint `/health` para la monitorización


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.