Docker
Pré-requisitos: Antes de prosseguir com a instalação da Evolution API v2 utilizando Docker, certifique-se de que você já tenha configurado os serviços necessários, como PostgreSQL e Redis. Siga os links abaixo para mais detalhes:
Estas instruções de instalação assumem que você já instalou o Docker em sua máquina. Você pode encontrar
informações sobre como instalar o Docker na
Documentação Oficial do Docker.
A Evolution API v2 está pronta para o Docker e pode ser facilmente implantada com Docker no modo standalone ou swarm. O repositório oficial do Evolution API contém todos os arquivos de composição necessários para instalar e executar a API.
Docker Compose
Implantar a Evolution API v2 usando o Docker Compose simplifica a configuração e o gerenciamento de seus contêineres Docker.
Ele permite que você defina seu ambiente Docker em um arquivo docker-compose.yaml
e, em seguida, use um único comando para iniciar tudo.
Arquivo Docker Compose
O exemplo a seguir ilustra como configurar o Docker Compose para ambientes standalone, ou seja, um único servidor em execução. Para a sincronização de dois servidores em paralelo ou maior escalabilidade, utilize o Docker Swarm, recomendado para usuários mais avançados.
Configuração Standalone
Atenção: Os comandos aqui descritos como docker compose
, podem não funcionar em versões mais antigas do Docker.
Caso você esteja usando uma versão mais antiga, substitua por docker-compose
.
O Docker standalone é adequado quando a Evolution API será executada em apenas uma máquina, sem a necessidade de escalabilidade imediata. Esta é a forma mais conveniente para a maioria dos usuários.
Para começar, crie um arquivo docker-compose.yml
com o seguinte conteúdo:
version: '3.9'
services:
evolution-api:
container_name: evolution_api
image: atendai/evolution-api:v2.1.0
restart: always
ports:
- "8080:8080"
env_file:
- .env
volumes:
- evolution_instances:/evolution/instances
volumes:
evolution_instances:
Em seguida, crie um arquivo .env
no mesmo diretório com o seguinte conteúdo mínimo:
AUTHENTICATION_API_KEY=mude-me
Para mais configurações, você pode pegar o arquivo de exemplo no repositório oficial. Confira também o guia de variáveis de ambiente aqui.
Inicializando a API
Navegue até o diretório que contém o arquivo docker-compose.yml
e execute o seguinte comando para iniciar os serviços definidos no arquivo:
docker compose up -d
Esse comando baixará as imagens Docker necessárias, criará os serviços, redes e volumes definidos, e iniciará o serviço da Evolution API.
Verificando os Logs
Após executar o comando docker compose up
, você pode verificar os logs para confirmar se os serviços estão em execução corretamente:
docker logs evolution_api
Parando o Serviço
Para parar o serviço, utilize o comando:
docker compose down
Acessando a API
Abra seu navegador e acesse http://localhost:8080 para verificar se a Evolution API está operacional.
Docker Swarm
Para configurar e gerenciar um cluster Docker Swarm para a Evolution API v2, siga as instruções abaixo. O Docker Swarm é ideal para ambientes que exigem escalabilidade e alta disponibilidade.
Instalação do Docker Swarm
Configurando o Servidor Manager
Se estiver utilizando um servidor da Hetzner, execute:
sudo apt-get update && apt-get install -y apparmor-utils
Etapa 1: Configuração do Hostname
- Mude o hostname da máquina para identificá-la no cluster:
hostnamectl set-hostname manager1
- Edite o arquivo
/etc/hosts
para adicionar o novo nome:
nano /etc/hosts
Adicione a linha:
127.0.0.1 manager1
- Reinicie o sistema para aplicar as alterações:
reboot
- Verifique o hostname:
hostnamectl
Etapa 2: Instalação do Docker
Instale o Docker executando:
curl -fsSL https://get.docker.com | bash
Etapa 3: Iniciando o Swarm
Inicie o Docker Swarm:
docker swarm init --advertise-addr IP_SERVER
Etapa 4: Configuração da Rede do Docker Swarm
Crie a rede overlay para o Docker Swarm:
docker network create --driver=overlay network_public
Anote o comando gerado para registrar os Workers:
docker swarm join --token HASH IP_SERVER:2377
Configurando o Servidor Worker
Se estiver utilizando um servidor da Hetzner, execute:
sudo apt-get update && apt-get install -y apparmor-utils
Etapa 1: Configuração do Hostname
- Mude o hostname da máquina para identificá-la no cluster:
hostnamectl set-hostname worker1
- Edite o arquivo
/etc/hosts
para adicionar o novo nome:
nano /etc/hosts
Adicione a linha:
127.0.0.1 worker1
- Reinicie o sistema para aplicar as alterações:
reboot
Etapa 2: Instalação do Docker
Instale o Docker executando:
curl -fsSL https://get.docker.com | bash
Etapa 3: Adicionar o Worker ao Cluster
Execute o comando obtido anteriormente para adicionar o Worker ao cluster:
docker swarm join --token HASH IP_SERVER:2377
Pré-requisitos para a Evolution API via Swarm
Instalação do Traefik
Para instalar o Traefik no Docker Swarm, siga as instruções abaixo:
- No servidor manager, crie um arquivo
traefik.yaml
:
nano traefik.yaml
- Adicione o seguinte conteúdo ao arquivo:
version: "3.7"
services:
traefik:
image: traefik:2.11.2
command:
- "--api.dashboard=true"
- "--providers.docker.swarmMode=true"
- "--providers.docker.endpoint=unix:///var/run/docker.sock"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=network_public"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
- "--entrypoints.web.http.redirections.entrypoint.permanent=true"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencryptresolver.acme.httpchallenge=true"
- "--certificatesresolvers.letsencryptresolver.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.letsencryptresolver.acme.email=seu@email.com"
- "--certificatesresolvers.letsencryptresolver.acme.storage=/etc/traefik/letsencrypt/acme.json"
- "--log.level=DEBUG"
- "--log.format=common"
- "--log.filePath=/var/log/traefik/traefik.log"
- "--accesslog=true"
- "--accesslog.filepath=/var/log/traefik/access-log"
deploy:
placement:
constraints:
- node.role == manager
restart_policy:
condition: on-failure
delay: 5s
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.redirect-https.redirectscheme.scheme=https"
- "traefik.http.middlewares.redirect-https.redirectscheme.permanent=true"
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
- "traefik.http.routers.http-catchall.entrypoints=web"
- "traefik.http.routers.http-catchall.middlewares=redirect-https@docker"
- "traefik.http.routers.http-catchall.priority=1"
volumes:
- "/var/run
/docker.sock:/var/run/docker.sock:ro"
- "vol_certificates:/etc/traefik/letsencrypt"
ports:
- target: 80
published: 80
mode: host
- target: 443
published: 443
mode: host
networks:
- network_public
volumes:
vol_certificates:
external: true
name: volume_swarm_certificates
networks:
network_public:
external: true
name: network_public
- Execute o comando abaixo para fazer o deploy da stack Traefik:
docker stack deploy --prune --resolve-image always -c traefik.yaml traefik
Deploy da Evolution API v2
Finalmente, para implantar a Evolution API v2 no Docker Swarm, use o arquivo de configuração disponível aqui com o seguinte conteúdo:
version: "3.7"
services:
evolution_v2:
image: atendai/evolution-api:v2.1.0
volumes:
- evolution_instances:/evolution/instances
networks:
- network_public
environment:
- SERVER_URL=https://evo2.site.com
- DEL_INSTANCE=false
- DATABASE_ENABLED=true
- DATABASE_PROVIDER=postgresql
- DATABASE_CONNECTION_URI=postgresql://postgres:SENHA@postgres:5432/evolution
- 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_CONNECTION_CLIENT_NAME=evolution_v2
- RABBITMQ_ENABLED=false
- RABBITMQ_URI=amqp://admin:admin@rabbitmq:5672/default
- CACHE_REDIS_ENABLED=true
- CACHE_REDIS_URI=redis://evo_redis:6379/1
- CACHE_REDIS_PREFIX_KEY=evolution_v2
- CACHE_REDIS_SAVE_INSTANCES=false
- CACHE_LOCAL_ENABLED=false
- S3_ENABLED=true
- S3_ACCESS_KEY=
- S3_SECRET_KEY=
- S3_BUCKET=evolution
- S3_PORT=443
- S3_ENDPOINT=files.site.com
- S3_USE_SSL=true
- AUTHENTICATION_API_KEY=429683C4C977415CAAFCCE10F7D57E11
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.hostname == evolution-manager
labels:
- traefik.enable=true
- traefik.http.routers.evolution_v2.rule=Host(`evo2.site.com`)
- traefik.http.routers.evolution_v2.entrypoints=websecure
- traefik.http.routers.evolution_v2.tls.certresolver=letsencryptresolver
- traefik.http.routers.evolution_v2.service=evolution_v2
- traefik.http.services.evolution_v2.loadbalancer.server.port=8080
- traefik.http.services.evolution_v2.loadbalancer.passHostHeader=true
volumes:
evolution_instances:
external: true
name: evolution_v2_data
networks:
network_public:
external: true
name: network_public
Após configurar e salvar o arquivo, faça o deploy da stack com o comando:
docker stack deploy --prune --resolve-image always -c evolution_api_v2.yaml evolution_v2
Acessando a API
Abra seu navegador e acesse https://evo2.site.com para verificar se a Evolution API está operacional.