> ## 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.

# Como hospedar uma API Fastify na Vertra Cloud

> Faça deploy de uma API Fastify na Vertra Cloud: escute no host 0.0.0.0 e na variável PORT, escolha a versão do Node e tenha HTTPS automático no subdomínio.

## Requisitos

* Node.js instalado localmente
* Conta na [Vertra Cloud](https://vertracloud.app)

## Estrutura do projeto

```
my-api-fastify/
├── src/
│   ├── server.js
│   └── routes/
│       └── index.js
├── package.json
└── vertracloud.config
```

## Configuração

### package.json

```json theme={null}
{
  "name": "my-api-fastify",
  "version": "1.0.0",
  "main": "src/server.js",
  "scripts": {
    "start": "node src/server.js"
  },
  "dependencies": {
    "fastify": "^5.0.0",
    "@fastify/cors": "^10.0.0"
  }
}
```

### vertracloud.config

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

## Exemplo completo

```javascript theme={null}
const fastify = require('fastify')({ logger: true });
const cors = require('@fastify/cors');

fastify.register(cors, { origin: '*' });

fastify.get('/', async (request, reply) => {
  return { message: 'Fastify on Vertra Cloud!' };
});

fastify.get('/health', async (request, reply) => {
  return { status: 'healthy', uptime: process.uptime() };
});

const start = async () => {
  try {
    const port = process.env.PORT || 80;
    await fastify.listen({ port, host: '0.0.0.0' });
  } catch (err) {
    fastify.log.error(err);
    process.exit(1);
  }
};

start();
```

> [!WARNING]
>
> Use `host: '0.0.0.0'` em `fastify.listen()`. Por padrão, o Fastify escuta apenas em `localhost`, o que impede conexões externas dentro do container.

## Deploy

**Dashboard**

1. Compacte o projeto em um `.zip` (pastas como `node_modules`, `venv` e `target` são removidas automaticamente) ou envie-o ao GitHub.
2. No dashboard, clique em **Novo Projeto** e envie o `.zip` ou cole a URL do repositório.
3. Em **Build**, confira o runtime (**JavaScript**), o arquivo principal (`index.js`) e a memória. Os comandos de start e build ficam em **Configurações avançadas**.
4. Adicione suas variáveis de ambiente em **Variáveis de Ambiente**.
5. Em **Rede**, ative a **publicação na web** para que a aplicação receba um endereço `*.vertraweb.app` (plano Pro ou superior, 512 MB de memória). A aplicação precisa escutar na porta 80.
6. Revise e faça o deploy. Acompanhe a saída na aba **Logs**.

**CLI**

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

Veja a [CLI](https://docs.vertracloud.app/pt-br/cli.md) para instalação e login.

**VS Code**

Abra a pasta com a extensão da Vertra Cloud instalada e execute **Deploy current project**. Veja a [extensão do VS Code](https://docs.vertracloud.app/pt-br/vscode-extension.md).

O passo a passo completo está em [Primeiro deploy](https://docs.vertracloud.app/pt-br/how-to-host.md).

## Versões disponíveis

| Versão | Status | Descrição |
| - | - | - |
| 24.22.1 | Mais recente | Node.js 24.22.1 (versão mais recente) |
| 22.23.4 | Recomendada | Node.js 22.23.4 LTS (recomendada para produção) |

## Diferenças em relação ao Express

| Aspecto | Express | Fastify |
| - | - | - |
| Desempenho | Bom | Superior (até 2x mais rápido) |
| Validação | Manual ou por middleware | Nativa, com JSON Schema |
| Plugins | Middleware simples | Sistema de plugins encapsulado |
| TypeScript | Via @types | Suporte nativo |

## Observações

* O Fastify tem **validação de schema nativa**: use-a para garantir a integridade das requisições
* Para **TypeScript**, compile para JavaScript antes do deploy
* O **logger nativo** do Fastify aparece nos logs em tempo real do dashboard
* O **reinício automático** vem ativado por padrão em todas as aplicações


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