Evolution API pode ser facilmente instalado usando o Node Version Manager (NVM). Siga estas etapas para configurar seu ambiente e iniciar a Evolution API em seu servidor.

Instalar NVM

Primeiro, baixe e instale o Node.js. Você pode fazer isso executando os seguintes comandos:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

Agora apenas aponte os diretórios do NVM e instale o node:

Terminal
# Carrege a fonte do bash para o ambiente
source ~/.bashrc

# Diretórios
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # Isso carrega o nvm

# Instala o node:
nvm install v20.10.0 && nvm use v20.10.0

Confirme que o NVM foi instalado com sucesso:

command -v nvm

Se você ainda não configurou, também pode configurar o fuso horário do seu servidor privado com o seguinte comando:

dpkg-reconfigure tzdata

Clone o repositório oficial do Github para seu servidor privado.

git clone https://github.com/EvolutionAPI/evolution-api.git

Em seguida, acesse a pasta onde o projeto está

cd evolution-api
npm install

Agora vamos copiar o arquivo env.yml com as configurações que você precisa editar.

cp src/dev-env.yml src/env.yml
nano src/env.yml

Este comando cria uma cópia do arquivo de ambiente padrão.

A seguir, abra o arquivo env.yml em um editor de texto para inserir suas configurações de configuração. Você pode usar o nano, um editor de texto da linha de comando, para este propósito:

Terminal
nano src/env.yml

No editor nano, navegue pelo arquivo e substitua os valores padrão pelas suas configurações específicas. Isso pode incluir strings de conexão de banco de dados, chaves de API, portas do servidor, etc.

Acesse a seção de variáveis de ambiente para instruções detalhadas sobre como configurar seu arquivo env.yml.

Para iniciar a Evolution API, use o seguinte comando:

npm run start:prod

Instalar e Configurar o PM2

Use o PM2 para instalar o PM2 e iniciar o gerenciador para o processo da API:

Terminal
npm install pm2 -g
pm2 start 'npm run start:prod' --name ApiEvolution
pm2 startup
pm2 save --force

Opcional: Você pode precisar alocar mais memória para o PM2, especialmente se o seu servidor tiver capacidade:

pm2 start 'npm run start:prod' --name ApiEvolution -- start --node-args="--max-old-space-size=4096" --max-memory-restart 4G

No exemplo acima, é assumido que seu VPS tem pelo menos 4GB de RAM disponível exclusivamente para a Evolution API.

A memória disponível pode variar, recomendamos pelo menos 1GB para executar a Evolution.

Se você quiser ter certeza de que a API está em execução, basta usar seu navegador para acessar http://localhost:8080. Esta deve ser a resposta do seu navegador:

http://localhost:8080/
{
    "status": 200,
    "message": "Bem-vindo à Evolution API, ela está funcionando!",
    "version": "1.x.x",
    "documentation": "http://localhost:8080/docs"
}

Facilite sua vida com a extensão JSON Formatter no Google Chrome ou Microsoft Edge.

A EvolutionAPI possui uma documentação de ponto de extremidade Swagger integrada, que você pode usar para ver todos os pontos de extremidade possíveis e testar as solicitações acessando http://localhost:8080/docs.

Configuração do Nginx

Primeiro, vamos instalar, iniciar, habilitar e testar o serviço Nginx em seu servidor privado.

Terminal
apt-get install -y nginx
systemctl start nginx
systemctl enable nginx
systemctl status nginx

Se a informação “Ativo: ativo (em execução)” aparecer em verde, significa que o Nginx está em execução e você pode prosseguir para a próxima etapa.

Remover Configuração Padrão do Nginx

Primeiro, remova o arquivo do site padrão que vem habilitado com o Nginx:

rm /etc/nginx/sites-enabled/default

Criar um novo arquivo de bloco do servidor no diretório

nano /etc/nginx/conf.d/default.conf

Em seguida, cole a configuração do Nginx no arquivo default.conf:

/etc/nginx/conf.d/default.conf
server {
  listen 80;
  listen [::]:80;
  server_name _;
  root /var/www/html/;
  index index.php index.html index.htm index.nginx-debian.html;

location / {
    try_files $uri $uri/ /index.php;
  }

location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

# Um longo tempo de cache do navegador pode acelerar visitas repetidas à sua página
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log off;
       log_not_found off;
       expires 360d;
  }

# desativar acesso a arquivos ocultos
location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

Após fazer alterações nas configurações do Nginx, é essencial recarregar o serviço Nginx. Isso garante que quaisquer modificações que você fez sejam aplicadas e se tornem eficazes.

Execute o seguinte comando no terminal para recarregar o Nginx:

systemctl reload nginx

Faça o usuário nginx ser o proprietário do diretório da web, por padrão, ele é de propriedade do usuário root:

chown www-data:www-data /usr/share/nginx/html -R

Agora, crie um Virtual Host apontando para seu subdomínio editando o arquivo api:

cd ~
nano /etc/nginx/sites-available/api

Em seguida, cole a configuração do Nginx no arquivo api:

/etc/nginx/sites-available/api
server {
  server_name substitua-isso-pelo-seu-domínio-legal.com;

location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_cache_bypass $http_upgrade;
  }
}

Crie um link simbólico entre os arquivos api e sites-enabled:

ln -s /etc/nginx/sites-available/api /etc/nginx/sites-enabled

Em seguida, valide a configuração do Nginx para o subdomínio:

nginx -t

Esta mensagem deve aparecer no seu terminal se tudo tiver sido configurado corretamente: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Recarregue o Nginx para que as alterações se tornem efetivas.

systemctl reload nginx

Instalar o Certbot para o Certificado SSL

Para proteger sua Evolution API com um certificado SSL, você pode usar o Certbot. Instale o Certbot usando o seguinte comando:

snap install --classic certbot

Certificar o subdomínio da API

certbot --nginx -d substitua-isso-pelo-seu-domínio-legal.com

Será perguntado se você deseja inserir um email para receber notificações quando o certificado gerado estiver perto da data de expiração.

Se a certificação for bem-sucedida, ao final do processo será exibida uma linha com a seguinte mensagem:

“Congratulations! You have successfully enabled HTTPS”