# Instalação e Configuração

### Pré-requisitos

Para integrar com sucesso utilizando o Netacea, certifique-se de que você possui:

1. A [interface de linha de comando (CLI) do Vercel](https://vercel.com/docs/cli), o [Node.js](https://nodejs.org/en) (versão 16.13.0 ou superior) e o [Git ](https://git-scm.com/)instalados em sua máquina.
2. Uma conta ativa no Vercel com acesso à funcionalidade de edge middleware.
3. Uma assinatura "Paid" do Vercel, para evitar quaisquer problemas com limites de requisições etc.
4. Um Projeto Vercel existente.
5. Detalhes das chaves de API e Secret relevantes, e um endpoint Kinesis - fornecidos pela Netacea.

### Instalação

Dentro do seu projeto Vercel, execute:

`npm i @netacea/vercel` .

Isso instalará o pacote Netacea no seu projeto.

### Configurar o Projeto Vercel

Dentro do projeto, crie `NetaceaConfig.json` no mesmo diretório do seu middleware (descrito na seção "Configuração do Middleware"). Em seguida, atualize seu conteúdo para corresponder ao exemplo abaixo:

```json
{
"apiKey": "API-KEY-PROVIDED-BY-NETACEA",
"secretKey": "SECRET-KEY-PROVIDED-BY-NETACEA",
"mitigationType": "PREFERRED-MITIGATION-TYPE",
"ingestType": "KINESIS",
"kinesis": {
"kinesisStreamName": "NAME-PROVIDED-BY-NETACEA",
"kinesisAccessKey": "KEY-PROVIDED-BY-NETACEA",
"kinesisSecretKey": "KEY-PROVIDED-BY-NETACEA"
},
"cookieEncryptionKey": "ENCRYPTION-KEY-PROVIDED-BY-NETACEA",
"netaceaCookieName": "_cookieName",
"netaceaCaptchaCookieName": "_captchaCookieName",
"enableDynamicCaptchaContentType": false,
"timeout": 3000
}
```

Substitua os valores pelos detalhes que a Netacea forneceu e **salve** o arquivo.

{% hint style="info" %}
O atributo `mitigationType` é usado para determinar o modo da integração. Ele pode ter um dos três valores:

* "**INGEST**" - Este modo de integração é apenas para monitoramento, o que significa que nenhuma ação de mitigação será executada. Recomendado durante POCs.
* "**MITIGATE**" - Este é o modo de integração "normal", o que significa que a solução Netacea irá monitorar e mitigar ativamente as requisições.
* "**INJECT**" - Este modo é usado em soluções personalizadas nas quais a ação de mitigação da Netacea será apenas uma recomendação utilizando cabeçalhos HTTP adicionados à requisição.
  {% endhint %}

{% hint style="danger" %}
As variáveis cookieEncryptionKey, netaceaCookieName e netaceaCaptchaCookieName são usadas para aumentar a segurança, ocultando os nomes e valores padrão dos cookies da Netacea da visualização pública.
{% endhint %}

### Configuração do Middleware

Um `middleware.ts` deve ser criado no diretório raiz do seu projeto, caso ainda não exista. O código a seguir deve ser colocado no arquivo `middleware.ts`:

```tsconfig
import { NextRequest, NextResponse } from 'next/server'
import { waitUntil } from '@vercel/functions'
import * as netaceaConfig from './NetaceaConfig.json'
import NetaceaVercelIntegration from '@netacea/vercel'
import type { NetaceaVercelIntegrationArgs } from '@netacea/vercel'

let netaceaWorker: NetaceaVercelIntegration | undefined = undefined

export default async function middleware(req: NextRequest) {
  try {
    // Initialize Netacea worker
    if (netaceaWorker === undefined) {
      netaceaWorker = new NetaceaVercelIntegration(netaceaConfig as NetaceaVercelIntegrationArgs)
    }

    // Run Netacea integration
    const event = { request: req }
    const netaceaResult = await netaceaWorker.run(event, originRequest)

    // Asynchronously ingest the Netacea result, without adding latency to the request
    waitUntil(netaceaWorker.ingest(req, netaceaResult))

    return netaceaResult.response
  } catch (error) {
    console.error("Netacea Middleware Error:", error)
    return NextResponse.next()
  }
}

async function originRequest(request: Request): Promise<NextResponse> {
  return NextResponse.next({
    headers: request.headers
  })
}
```

### Implantar o projeto no Vercel

Para implantar o projeto no Vercel com sucesso, os seguintes passos devem ser seguidos:

* Faça commit de `NetaceaConfig.json` no seu controle de versão
* Adicione `NetaceaConfig.json` ao seu `.gitignore`
* O projeto deve então ser enviado para o seu repositório Git.

O Vercel detectará automaticamente o push para o Github e iniciará o processo de implantação.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.netacea.com/br/informacoes-do-plugin-netacea/vercel/installation-and-configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
