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

# Faça deploy da Evolution API (API do WhatsApp)

> Evolution API na Square Cloud: hospede esta API de WhatsApp com PostgreSQL gerenciado, rode as migrações, use a porta 80, chave de API global e cache Redis.

export const RecommendedPlan = ({lang, plan, tier, cpu, appType, min}) => {
  const t = {
    'en': {
      q: <>Which plan should you choose for {appType}?</>,
      rec: p => <>We recommend the {p} plan: its <b>{tier} GB</b> of RAM and <b>{cpu} vCPU</b> handle most projects of this kind, with headroom for traffic spikes.</>,
      min: m => <> Lighter projects also run on the {m} plan.</>,
      pro: p => <> For larger projects, the {p} plan adds more RAM and CPU.</>
    },
    'pt-br': {
      q: <>Qual plano escolher para {appType}?</>,
      rec: p => <>Recomendamos o plano {p}: seus <b>{tier} GB</b> de RAM e <b>{cpu} vCPU</b> atendem a maioria dos projetos desse tipo, com folga para picos de tráfego.</>,
      min: m => <> Projetos mais leves também rodam no plano {m}.</>,
      pro: p => <> Para projetos maiores, o plano {p} oferece mais RAM e CPU.</>
    },
    'es': {
      q: <>¿Qué plan elegir para {appType}?</>,
      rec: p => <>Te recomendamos el plan {p}: sus <b>{tier} GB</b> de RAM y <b>{cpu} vCPU</b> cubren la mayoría de los proyectos de este tipo, con margen para picos de tráfico.</>,
      min: m => <> Los proyectos más ligeros también funcionan en el plan {m}.</>,
      pro: p => <> Para proyectos más grandes, el plan {p} ofrece más RAM y CPU.</>
    },
    'fr': {
      q: <>Quel plan choisir pour héberger {appType} ?</>,
      rec: p => <>Nous recommandons le plan {p} : ses <b>{tier} Go</b> de RAM et <b>{cpu} vCPU</b> suffisent pour la plupart des projets de ce type, avec une marge pour les pics de trafic.</>,
      min: m => <> Les projets plus légers fonctionnent aussi avec le plan {m}.</>,
      pro: p => <> Pour les projets plus importants, le plan {p} offre davantage de RAM et de CPU.</>
    },
    'de': {
      q: <>Welcher Plan eignet sich für {appType}?</>,
      rec: p => <>Wir empfehlen den {p}-Plan: <b>{tier} GB</b> RAM und <b>{cpu} vCPU</b> reichen für die meisten Projekte dieser Art, mit Reserven für Lastspitzen.</>,
      min: m => <> Kleinere Projekte laufen auch mit dem {m}-Plan.</>,
      pro: p => <> Für größere Projekte bietet der {p}-Plan mehr RAM und CPU.</>
    },
    'it': {
      q: <>Quale piano scegliere per {appType}?</>,
      rec: p => <>Ti consigliamo il piano {p}: i suoi <b>{tier}GB</b> di RAM e <b>{cpu}vCPU</b> bastano per la maggior parte dei progetti di questo tipo, con margine per i picchi di traffico.</>,
      min: m => <> I progetti più leggeri funzionano anche con il piano {m}.</>,
      pro: p => <> Per progetti più grandi, il piano {p} offre più RAM e CPU.</>
    },
    'ja': {
      q: <>{appType}にはどのプランを選べばよいですか？</>,
      rec: p => <>{p}プランをおすすめします。<b>{tier}GB</b>のRAMと<b>{cpu}vCPU</b>があれば、この種のプロジェクトの多くをトラフィックのピークにも余裕を持って動かせます。</>,
      min: m => <>軽量なプロジェクトは{m}プランでも動作します。</>,
      pro: p => <>より大規模なプロジェクトには、RAMとCPUが増える{p}プランをご検討ください。</>
    },
    'zh': {
      q: <>托管{appType}应该选择哪个套餐？</>,
      rec: p => <>我们推荐 {p} 套餐：<b>{tier}GB</b> RAM 和 <b>{cpu}vCPU</b> 足以运行大多数此类项目，并能从容应对流量高峰。</>,
      min: m => <>较轻量的项目也可以在 {m} 套餐上运行。</>,
      pro: p => <>对于更大的项目，{p} 套餐提供更多 RAM 和 CPU。</>
    }
  };
  const siteLang = t[lang] ? lang : 'en';
  const c = t[siteLang];
  const pay = (name, query) => <a href={`https://squarecloud.app/${siteLang}/pay?${query}`}>{name}</a>;
  const isPro = plan.toLowerCase() === 'pro';
  return <Note>
      <b>{c.q}</b><br />
      {c.rec(pay(plan, `plan=${plan.toLowerCase()}&tier=${tier}`))}
      {min ? c.min(pay(min, `plan=${min.toLowerCase()}`)) : null}
      {isPro ? null : c.pro(pay('Pro', 'plan=pro'))}
    </Note>;
};

export const appType_0 = "a Evolution API"

## Introdução

Para desenvolver e hospedar {appType_0} na Square Cloud, siga a sequência de configurações e pré-requisitos abaixo.
Este guia cobre todo o processo, da configuração inicial ao deploy em produção.

### Pré-requisitos

* **Conta Square Cloud**: Cadastre-se através da [página de cadastro](https://squarecloud.app/pt-br/signup) usando seu e-mail.
* **Plano ativo**: Garante recursos dedicados e desempenho otimizado para seu aplicativo. Confira nossos [planos disponíveis](https://squarecloud.app/pt-br/pricing) e escolha o mais adequado às suas necessidades.

<RecommendedPlan appType="a Evolution API" plan="Standard" tier="4" cpu="4" lang="pt-br" />

A Evolution API é uma API open source para WhatsApp. Ela gerencia várias instâncias do WhatsApp em um só lugar, pelo gerenciador web ou pela API REST, e as conecta a ferramentas como n8n, Chatwoot e Typebot. Este guia usa o [runtime Node.js](/pt-br/articles/getting-started-with-nodejs).

## Obtenha o projeto

Baixe o projeto das [nossas releases do evolutionapi-web](https://github.com/squarecloud-education/evolutionapi-web/releases), que já têm os arquivos necessários para fazer o deploy na Square Cloud, ou do [repositório oficial](https://github.com/EvolutionAPI/evolution-api).

<Note>O repositório oficial lista o `typescript` em `devDependencies`. A Square Cloud instala as dependências em modo de produção, sem as `devDependencies`, então a etapa `npm run build` falha. A nossa release já o move para `dependencies`; com o repositório oficial, mova-o você mesmo.</Note>

## Configure a Evolution API

A Evolution API lê um arquivo `.env` na raiz do projeto quando inicia, então esse arquivo vai no seu ZIP. Comece pelo `.env` da nossa release (ou pelo `.env.example` do repositório oficial) e edite as variáveis abaixo. As variáveis definidas em **Variáveis de ambiente** no dashboard têm prioridade sobre o arquivo `.env`, o que torna o dashboard o melhor lugar para segredos como `AUTHENTICATION_API_KEY` e `DATABASE_CONNECTION_URI`. Veja [Variáveis de ambiente](/pt-br/platform/environment-variables).

### Banco de dados

A Evolution API precisa de um banco de dados PostgreSQL. Você pode hospedar um na Square Cloud com o plano Standard ou superior: veja [como criar e conectar um banco de dados gerenciado](/pt-br/tutorials/how-to-deploy-your-database).
Após criá-lo, defina a URL dele no `.env` como `DATABASE_CONNECTION_URI`, junto com o certificado de cliente para a conexão com o PostgreSQL. Veja um exemplo da configuração necessária:

```systemd .env theme={"system"}
DATABASE_PROVIDER=postgresql
DATABASE_CONNECTION_URI='postgresql://squarecloud:password@host:port/database?sslmode=require&sslidentity=path/to/client-identity.p12&sslpassword=p12password'
DATABASE_CONNECTION_CLIENT_NAME='evolution_exchange'
DATABASE_SAVE_DATA_INSTANCE=true
DATABASE_SAVE_DATA_NEW_MESSAGE=true
DATABASE_SAVE_MESSAGE_UPDATE=true
DATABASE_SAVE_DATA_CONTACTS=true
DATABASE_SAVE_DATA_CHATS=true
DATABASE_SAVE_DATA_LABELS=true
DATABASE_SAVE_DATA_HISTORIC=true
DATABASE_SAVE_IS_ON_WHATSAPP=true
DATABASE_SAVE_IS_ON_WHATSAPP_DAYS=7
DATABASE_DELETE_MESSAGE=true
```

A Evolution API se conecta pelo Prisma, que espera o certificado de cliente como um arquivo `.p12`. Baixe os arquivos do certificado (`.crt` e `.key`) na página do banco de dados no dashboard, converta-os e coloque o `.p12` no seu projeto:

```bash theme={"system"}
openssl pkcs12 -export -out client-identity.p12 -inkey <certificate>.key -in <certificate>.crt
```

A senha de exportação que você escolher é o `sslpassword` da URL, e o `sslidentity` é o caminho do arquivo `.p12`. Mantenha o `.p12` no seu ZIP, já que a aplicação o lê do disco.

### Aplique as migrações

Com a variável de ambiente e o certificado configurados, aplique as migrações no seu banco de dados. Na pasta do projeto, no seu computador, instale as dependências com `npm install` (é preciso ter o arquivo `runWithProvider.js`) e execute o seguinte comando:

<Tabs>
  <Tab title="Windows">
    ```bash theme={"system"}
    npm run db:deploy:win
    ```
  </Tab>

  <Tab title="Linux">
    ```bash theme={"system"}
    npm run db:deploy
    ```
  </Tab>
</Tabs>

Vai atualizar de uma versão anterior? Rode o mesmo comando de novo antes de enviar os arquivos novos, porque versões novas podem trazer migrações novas.

### Servidor

Conforme mostrado no arquivo `.env.example` do repositório, defina as variáveis do servidor: `SERVER_TYPE`, `SERVER_PORT`, `SERVER_URL` e o idioma.

```systemd .env theme={"system"}
SERVER_NAME=evolution
SERVER_TYPE=http
SERVER_PORT=80
# A URL da sua aplicação: https://<subdomain>.squareweb.app, ou o seu domínio personalizado
SERVER_URL="https://my-evolution-api.squareweb.app"
LANGUAGE="pt-BR"
# Outras variáveis abaixo...
```

A Evolution API lê a porta do `SERVER_PORT` (e não da `PORT`) e, sem ele, usa `8080`, então mantenha `SERVER_PORT=80`.

### Chave de API global

É importante configurar uma chave de API global segura para evitar acessos não autorizados. Substitua-a por um valor aleatório e longo, só seu: a chave dos arquivos de exemplo é pública.

```systemd .env theme={"system"}
# Outras variáveis...
AUTHENTICATION_API_KEY=MySuperSecureAPIKEY
```

### Cache Redis (opcional)

Você pode configurar um sistema de cache na Evolution API. Para isso, você precisará de um banco de dados Redis, que também pode ser hospedado na Square Cloud.\
Para configurá-lo, você também precisará baixar o certificado e definir a URL de conexão. Repare no esquema `rediss://`: os bancos de dados da Square Cloud só aceitam conexões TLS.

```systemd .env theme={"system"}
CACHE_REDIS_ENABLED=true
CACHE_REDIS_URI="rediss://default:MySecurePassword@square-cloud-db-ID.squareweb.app:7170"
CACHE_REDIS_TTL=604800
# Prefixo serve para diferenciar dados de uma instalação para outra que estejam usando o mesmo Redis
CACHE_REDIS_PREFIX_KEY=evolution
# Habilitar esta variável fará com que as informações de conexão sejam salvas no Redis e não no banco de dados.
CACHE_REDIS_SAVE_INSTANCES=false
```

## Configure a Square Cloud

Crie um arquivo `squarecloud.app` na raiz do projeto. O comando `START` gera o client do Prisma, faz o build do projeto e o inicia; a instalação e o build precisam de cerca de 3072 MB de RAM:

```systemd squarecloud.app theme={"system"}
DISPLAY_NAME=Evolution API
RUNTIME=nodejs
START=npx prisma generate --schema prisma/postgresql-schema.prisma && npm run build && npm run start:prod
MEMORY=3072
VERSION=recommended
SUBDOMAIN=my-evolution-api
AUTORESTART=true
```

O `SUBDOMAIN` precisa corresponder ao endereço do `SERVER_URL`. Ao enviar pelo dashboard, selecione "Publicação na Web", defina o mesmo subdomínio e cole o comando `START` como comando de inicialização.

## O que vai no ZIP

* A pasta inteira do projeto: `package.json`, `runWithProvider.js`, `src/`, `prisma/` e os outros arquivos da release ou do repositório.
* `.env`, com as variáveis acima.
* O certificado de cliente `.p12`.
* `squarecloud.app`.

Deixe de fora a `node_modules/`, que o `npm install` criou para as migrações: a Square Cloud instala as dependências no servidor.

## Faça o deploy e verifique

### Via dashboard

<Steps>
  <Step title="Acesse a página de upload">
    Acesse a [página de upload](https://squarecloud.app/pt-br/dashboard/new) e envie seu arquivo zip.
  </Step>

  <Step title="Configure seu ambiente">
    Após fazer o upload do seu arquivo zip, você precisará configurar o nome, o arquivo principal ou o ambiente de execução e outras configurações do seu projeto.\
    Se você estiver enviando um projeto web, certifique-se de selecionar "Publicação na Web" e definir um subdomínio para o seu projeto.
  </Step>

  <Step title="Faça o deploy do projeto">
    Por fim, clique no botão "Deploy" para hospedar seu projeto na Square Cloud.
    Após o deploy, você poderá monitorar o status e os registros do seu projeto no dashboard.

    <Frame>
      <img src="https://cdn.squarecloud.app/docs/articles/dashboard/uploading-pt-br.gif" alt="Enviando aplicação para a Square Cloud" style={{ borderRadius: "0.2rem" }} />
    </Frame>
  </Step>

  <Step title="Confirme que seu app está no ar">
    Seu primeiro deploy geralmente leva menos de um minuto. No [dashboard](https://squarecloud.app/pt-br/dashboard), aguarde o status da sua aplicação mudar para em execução e verifique os registros em busca de erros de inicialização.\
    Se você fez deploy de um site ou API, abra `https://<seu-subdominio>.squareweb.app` no navegador: você deve ver sua aplicação respondendo. Se você fez deploy de um bot, envie um comando para confirmar que ele está online.
    <Tip>Seu app não está iniciando? Veja o [guia de solução de problemas](/pt-br/platform/troubleshooting/app-wont-start) para as causas e correções mais comuns.</Tip>
  </Step>
</Steps>

### Via CLI

Para usar esse método, seu projeto precisa de um arquivo de configuração chamado `squarecloud.app` na raiz. Ele informa à Square Cloud como executar a sua aplicação.

<Card title="Guia do arquivo de configuração" icon="link" href="/pt-br/getting-started/config-file">
  Saiba como criar o arquivo de configuração `squarecloud.app` que define o ambiente da sua aplicação.
</Card>

<Steps>
  <Step title="Instale a CLI">
    Instale a [CLI da Square Cloud](/pt-br/cli-reference/installation). Se você já a tem, execute o mesmo comando para atualizá-la:

    <CodeGroup>
      ```bash macOS, Linux e WSL theme={"system"} theme={"system"}
      curl -fsSL https://cli.squarecloud.app/install | bash
      ```

      ```bash Windows com npm theme={"system"} theme={"system"}
      npm install -g @squarecloud/cli@latest
      ```
    </CodeGroup>
  </Step>

  <Step title="Faça login">
    Execute o comando abaixo. Ele abre o seu navegador: aprove o login lá e a CLI está pronta. Não há nenhuma chave de API para copiar. Para scripts e CI, veja [autenticação da CLI](/pt-br/cli-reference/authentication).

    ```bash theme={"system"} theme={"system"}
    squarecloud auth login
    ```
  </Step>

  <Step title="Envie o seu projeto">
    Na pasta do seu projeto, execute o comando abaixo. A CLI compacta a pasta atual, deixando de fora o que o [`squarecloud.ignore`](/pt-br/getting-started/squarecloud-ignore) lista, e faz o upload:

    ```bash theme={"system"} theme={"system"}
    squarecloud upload
    ```

    Para enviar um zip que você mesmo criou, passe-o com `--file`:

    ```bash theme={"system"} theme={"system"}
    squarecloud upload --file <caminho/para/zip>
    ```
  </Step>

  <Step title="Confirme que seu app está no ar">
    Seu primeiro deploy geralmente leva menos de um minuto. Verifique o status e os registros da sua aplicação diretamente pelo terminal:

    ```bash theme={"system"} theme={"system"}
    squarecloud app status
    squarecloud app logs
    ```

    Se você fez deploy de um site ou API, abra `https://<seu-subdominio>.squareweb.app` no navegador: você deve ver sua aplicação respondendo. Se você fez deploy de um bot, envie um comando para confirmar que ele está online.
    <Tip>Seu app não está iniciando? Veja o [guia de solução de problemas](/pt-br/platform/troubleshooting/app-wont-start) para as causas e correções mais comuns.</Tip>
  </Step>
</Steps>

### Reduza a RAM depois da primeira execução

Após a primeira execução, você pode reduzir a RAM para 1536MB ou 2048MB e definir o comando de inicialização apenas para:

```bash theme={"system"}
npm run start:prod
```

## Primeiro acesso

Abra `https://my-evolution-api.squareweb.app/manager` para acessar o gerenciador web. Entre com o seu `SERVER_URL` como URL do servidor e a sua `AUTHENTICATION_API_KEY` como chave de API global e crie a sua primeira instância do WhatsApp.

## Erros comuns

<CardGroup cols={1}>
  ### Domínio personalizado

  <Card horizontal>
    Para usar um domínio personalizado (ex.: `meusite.com`) no lugar da URL padrão `meusite.squareweb.app`, você precisa do **plano Standard ou superior**. A URL padrão vem do campo **SUBDOMAIN** no arquivo de configuração. Para conectar o seu domínio, veja [como configurar seu próprio domínio](https://help.squarecloud.app/pt-br/article/como-configurar-seu-proprio-dominio-cnamedns-j39hh2/).
  </Card>

  ### Requisitos mínimos de RAM

  <Card horizontal>
    **Mínimo: 512MB de RAM** para sites e APIs, o suficiente para um build estático no runtime estático. Para aplicações que renderizam páginas no servidor (Next.js, Nuxt, Angular SSR e similares), recomendamos **pelo menos 1GB de RAM**. Para aplicações maiores, aloque mais RAM para evitar que a aplicação fique sem memória e trave.
  </Card>

  ### Não foi possível encontrar esse site.

  <Card horizontal>
    Verifique se o **subdomínio/domínio** corresponde ao configurado no campo **SUBDOMAIN** ou nas **configurações de domínio personalizado**. Se você acabou de enviar o site, aguarde até **60 segundos** para a Square liberar o **primeiro acesso**.
  </Card>

  ### Site demorou demais para responder...

  <Card horizontal>
    O seu servidor precisa escutar na **porta 80** e no **host 0.0.0.0**. A Square Cloud define as variáveis de ambiente **PORT** (`80`) e **HOST** (`0.0.0.0`) na sua aplicação: leia essas variáveis no código em vez de fixar outros valores. Um servidor que escuta apenas em `localhost` ou `127.0.0.1` nunca recebe requisições.
  </Card>
</CardGroup>

### A Evolution API não consegue se conectar ao banco de dados

Confira se o `sslidentity` aponta para o arquivo `.p12` dentro do seu ZIP e se o `sslpassword` é a senha de exportação que você escolheu. Para outros erros de SSL/TLS, veja [erros de conexão com o banco de dados](/pt-br/platform/troubleshooting/database-connection-errors).

## Próximos passos

<CardGroup cols={3}>
  <Card title="Banco de dados gerenciado" icon="database" href="/pt-br/tutorials/how-to-deploy-your-database">
    Crie o banco de dados PostgreSQL de que a Evolution API precisa.
  </Card>

  <Card title="Erros de conexão com o banco" icon="triangle-exclamation" href="/pt-br/platform/troubleshooting/database-connection-errors">
    Corrija erros de SSL/TLS e de conexão.
  </Card>

  <Card title="Bot do WhatsApp" icon="whatsapp" href="/pt-br/tutorials/bots/whatsapp">
    Crie um bot de WhatsApp com whatsapp-web.js ou Baileys.
  </Card>
</CardGroup>

## Contate-nos

Se você continuar enfrentando **dificuldades técnicas**, nossa **equipe de suporte especializada** está disponível para auxiliá-lo. [**Entre em contato conosco**](https://squarecloud.app/pt-br/support) e teremos prazer em ajudá-lo a resolver qualquer questão: a qualidade do suporte é uma grande parte do motivo pelo qual desenvolvedores avaliam a Square Cloud com [**4,9/5 em 402 avaliações**](https://www.trustpilot.com/review/squarecloud.app) no Google e Trustpilot.


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