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

# Como hospedar o Evolution API no Square Cloud

> Este tutorial irá guia-lo na criação e hospedagem da sua aplicação Evolution API na Square Cloud.

export const PortNote = ({lang}) => {
  if (lang == 'pt-br') {
    return <Note>
            <b>Qual porta devo usar para o meu servidor?</b><br />
            Você deve usar a porta <b>80</b> para o seu servidor. A porta 80 é a porta padrão para tráfego HTTP; a Square Cloud a encaminha para 443 (HTTPS) para estabelecer uma conexão segura.<br />
            Certifique-se de configurá-la antes de compactar e enviar seu projeto.
        </Note>;
  }
  return <Note>
            <b>What port should I use for my server?</b><br />
            You should use port <b>80</b> for your server. Port 80 is the default port for HTTP traffic, which is handled by Square Cloud to route it to 443, HTTPS, for a secure connection.<br />
            Make sure to configure it before compressing and uploading your project.
        </Note>;
};

export const RecommendedPlan = ({lang, plan, tier, cpu, appType}) => {
  const url = `https://squarecloud.app/${lang}/pay?plan=${plan.toLowerCase()}&tier=${tier}`;
  if (lang == 'en') {
    return <Note>
        <b>Wondering how much RAM and CPU your plan needs to host {appType}?</b><br />
        Don't worry, we're here to help.
        Our <a href={url}>{plan}</a> plan offers <b>{tier}GB</b> of RAM and <b>{cpu}vCPU</b>, which should be sufficient for most {appType}. 
        However, if you are working on a larger project and seeking extra stability, we recommend considering our <b>Pro</b> plan. With additional resources, you can maintain stability even during demand spikes. 
        To purchase, simply click <a href="https://squarecloud.app/en/pay?plan=pro">here</a>.
      </Note>;
  } else {
    return <Note>
          <b>Está se perguntando quanta RAM e CPU seu plano precisa para hospedar {appType}?</b><br />
          Não se preocupe, estamos aqui para ajudar.
          Nosso plano <a href={url}>{plan}</a> oferece <b>{tier}GB</b> de RAM e <b>{cpu}vCPU</b>, o que deve ser suficiente para a maioria dos {appType}.
          No entanto, se você estiver trabalhando em um projeto maior e precisar de mais estabilidade, recomendamos considerar nosso plano <b>Pro</b>.
          Com recursos adicionais, você pode manter a estabilidade mesmo durante picos de demanda.
          Para comprar, basta clicar <a href={`https://squarecloud.app/${lang}/pay?plan=pro`}>aqui</a>.
        </Note>;
  }
};

export const appType_0 = "Evolution API"

## Introdução

Para desenvolver e hospedar um aplicativo {appType_0} no Square Cloud, é essencial seguir uma sequência estruturada de configurações e pré-requisitos.
Este guia técnico abordará todo o processo, desde a configuração inicial até a implantação 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 Pago 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="Evolution API" plan="Standard" tier="4" cpu="4" lang="pt-br" />

## Por que usar o Evolution API?

O Evolution API facilita o uso de várias ferramentas em um único lugar, integrando n8n, Chatwoot e outras ferramentas.
Este projeto permite criar e conectar-se rapidamente a uma instância através dele ou pela sua API, gerenciando várias instâncias de bots em um só lugar.

## Configurando o projeto

Primeiro, você precisa obter o projeto de alguma fonte. Você pode obtê-lo do [repositório oficial](https://github.com/EvolutionAPI/evolution-api) ou do [nosso repositório](https://github.com/squarecloud-education/evolutionapi-web), que já contém os arquivos necessários para fazer o deploy nas releases.

### Configuração do banco de dados

Para começar a configurar, precisamos de um banco de dados. Você pode hospedar um na Square Cloud se tiver o plano Standard ou superior.
Após criá-lo, precisamos definir no arquivo `.env` a URL como `DATABASE_CONNECTION_URI` e criar o certificado de cliente para a conexão com o PostgreSQL.

```systemd .env theme={null}
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
```

Com a variável de ambiente e o certificado configurados, você deve aplicar as migrações no seu banco de dados. Para isso, é necessário ter o arquivo `runWithProvider.js` na pasta do projeto e executar o seguinte comando:

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

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

### Configuração do servidor

Conforme mostrado no arquivo `.env.example` do repositório, você precisa definir algumas variáveis de ambiente: `SERVER_TYPE`, `SERVER_PORT`, `SERVER_URL`.

```systemd .env theme={null}
SERVER_NAME=evolution
SERVER_TYPE=http
SERVER_PORT=80
# Altere o SERVER_URL para a URL real do seu servidor.
# Você pode alterar para a URL do seu app, selecionada ao criar o app
# ou quando configurar um domínio
SERVER_URL="https://my-evolution-api.squareweb.app"
LANGUAGE="pt-BR"
# Outras variáveis abaixo...
```

## Deploying

Para implantar na Square Cloud, você só precisa definir o comando de inicialização e publicar como web. Para a instalação e build, recomendamos usar 3096MB de RAM.

```bash startup command theme={null}
npx prisma generate --schema prisma/postgresql-schema.prisma && npm run build && npm run start:prod
```

<PortNote lang="pt-br" />

### 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 no Square Cloud.
    Após o deploy, você poderá monitorar o status e os registros do seu projeto no painel.

    <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>
</Steps>

### Via CLI

Para usar esse método, você precisa criar um arquivo de configuração chamado `squarecloud.app` no diretório raiz do seu projeto. Esse arquivo conterá a configuração necessária para o seu projeto.

<Card title="Saiba mais sobre: Como criar arquivo de configuração da Square Cloud." icon="link" href="/pt-br/getting-started/config-file">
  O arquivo squarecloud.app é um arquivo de configuração que será usado para configurar seu aplicativo; ele será usado para definir seu ambiente.
</Card>

<Steps>
  <Step title="Primeiro Passo">
    Primeiro, você precisa ter a CLI instalada em seu ambiente. Se você ainda não a possui, execute o seguinte comando em seu terminal:

    ```
    npm install -g @squarecloud/cli
    ```

    Se você já a possui, recomendamos atualizá-la. Para fazer isso, execute o seguinte comando em seu terminal:

    <Tabs>
      <Tab title="Windows">
        ```bash theme={null}
        squarecloud update
        ```
      </Tab>

      <Tab title="Linux, macOS, e WSL">
        ```bash theme={null}
        curl -fsSL https://cli.squarecloud.app/install | bash
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Segundo Passo">
    Agora, para autenticar e usar outros comandos da CLI, você encontrará sua chave de autorização [aqui](https://squarecloud.app/pt-br/account/security) clicando em "Solicitar Chave da API". Após obter sua chave de autorização, execute o seguinte comando:

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

  <Step title="Terceiro Passo">
    Finalmente, para fazer o deploy da sua aplicação para a Square Cloud usando a CLI, você precisa executar o seguinte comando:

    ```bash theme={null}
    squarecloud upload
    ```

    Ou se já possui o zip criado:

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

## Informações adicionais

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={null}
npm run start:prod
```

### Sistema de cache

Você pode configurar um sistema de cache no 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.

```systemd .env theme={null}
CACHE_REDIS_ENABLED=true
CACHE_REDIS_URI="redis://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
```

## Solução de problemas

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

  <Card horizontal>
    Para usar domínio personalizado (ex: `meusite.com`) ao invés da URL padrão `meusite.squareweb.app`, você precisa do **plano Standard ou superior**. O subdomínio é definido pelo campo **SUBDOMAIN** no arquivo de configuração. Veja: [Como configurar seu domínio personalizado](https://docs.squarecloud.app/pt-br/tutorials/platform/custom-domain).
  </Card>

  ### Requisitos Mínimos de RAM

  <Card horizontal>
    **Mínimo: 512MB de RAM** para websites/APIs simples. Para sites com frameworks (Next.JS, React, Vue, Angular, etc.), sugerimos sempre **pelo menos 1GB de RAM**. Para aplicações maiores, aumente a 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**.

    <Frame>
      <img src="https://cdn.squarecloud.app/docs/articles/cloudflare/pt-br/unauthorized.webp" alt="Erro de site não encontrado no Cloudflare" style={{ borderRadius: "0.2rem" }} />
    </Frame>
  </Card>

  ### Site demorou demais para responder...

  <Card horizontal>
    Verifique se configurou corretamente a **porta 80** e **host 0.0.0.0** na aplicação. Recomendamos usar as variáveis de ambiente forçadas da Square: **PORT** e **HOST** do arquivo `.env`.

    <Frame>
      <img src="https://cdn.squarecloud.app/docs/articles/cloudflare/pt-br/timeout.webp" alt="Erro de timeout no Cloudflare" style={{ borderRadius: "0.2rem" }} />
    </Frame>
  </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.
