DEV Community

Júnior Carvalho
Júnior Carvalho

Posted on

Instalando a Evolution Go com Portainer, Traefik e PostgreSQL em uma VPS Linux

A primeira versão da Evolution Go foi liberada.

Neste guia, vou mostrar uma instalação usando Portainer, Traefik e PostgreSQL.

O ambiente que utilizei foi:

  • VPS Magalu Cloud
  • Plano BV2-2-10
  • 2 vCPU
  • 2 GB de RAM
  • 10 GB de disco
  • Ubuntu 22.04
  • Região br-se1

A proposta é simples: subir tudo com Docker Swarm via Portainer, com roteamento feito pelo Traefik.

Apesar de eu estar usando uma VPS da Magalu Cloud, este passo a passo deve funcionar em praticamente qualquer VPS Linux baseada em Debian ou derivados.

Pré-requisitos

Antes de começar, garanta que você já tenha:

  • uma VPS Linux ativa
  • um domínio apontando para o IP da VPS
  • acesso root ao servidor

Instalando Portainer e Traefik com SetupOrion

Ao acessar sua VPS, vamos utilizar o SetupOrion para instalar o Portainer e o Traefik.

Site: https://oriondesign.art.br/

Para baixar e executar o script, utilize o usuário root.

O setup do Portainer e do Traefik vai solicitar algumas informações, entre elas o domínio do Portainer, que já deve estar configurado, por exemplo via Cloudflare. Também será solicitado o nome da rede interna. Neste exemplo, usamos network_internal.

O instalador é bem direto, e a primeira opção já instala o Portainer e o Traefik.

Importante:

Configure o domínio antes de iniciar a instalação, para evitar problemas com roteamento e emissão de certificado.

Estrutura da instalação

Neste tutorial, vamos subir duas stacks no Portainer:

  • postgres
  • evolution-go

A stack do PostgreSQL será usada para persistência de dados, e a stack da Evolution Go será exposta pelo Traefik.


Stack do PostgreSQL

Crie uma stack no Portainer com o conteúdo abaixo.

services:
  postgres:
    image: postgres:15
    command: >
      postgres
      -c max_connections=500
      -c shared_buffers=512MB

    volumes:
      - postgres_data:/var/lib/postgresql/data

    networks:
      - network_internal

    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=SUA_SENHA_FORTE_AQUI
      - TZ=America/Sao_Paulo

    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: "1"
          memory: 1024M

volumes:
  postgres_data:
    name: postgres_data

networks:
  network_internal:
    external: true
    name: network_internal
Enter fullscreen mode Exit fullscreen mode

Observações sobre a stack do PostgreSQL

  • Troque SUA_SENHA_FORTE_AQUI por uma senha real e forte.
  • O limite de memória foi definido em 1024M. Como a VPS tem apenas 2 GB de RAM, esse ambiente é enxuto. Funciona, mas não sobra muito recurso para crescer.
  • O shared_buffers=512MB é um valor aceitável para um ambiente pequeno, mas pode ser ajustado depois conforme uso real.

Stack da Evolution Go

Agora crie outra stack no Portainer para a Evolution Go.

services:
  evolution-go:
    image: evoapicloud/evolution-go:latest

    volumes:
      - evolution_instances:/evolution/instances

    networks:
      - network_internal

    environment:
      - SERVER_PORT=8080
      - CLIENT_NAME=EVOGO
      - GLOBAL_API_KEY=SUA_GLOBAL_API_KEY_AQUI
      - POSTGRES_AUTH_DB=postgresql://postgres:SUA_SENHA_FORTE_AQUI@postgres:5432/evogo_auth?sslmode=disable
      - POSTGRES_USERS_DB=postgresql://postgres:SUA_SENHA_FORTE_AQUI@postgres:5432/evogo_users?sslmode=disable
      - DATABASE_SAVE_MESSAGES=false
      - WADEBUG=INFO
      - LOGTYPE=console

    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      labels:
        - traefik.enable=true
        - traefik.http.routers.evolution.rule=Host(`seu-dominio.com.br`)
        - traefik.http.routers.evolution.entrypoints=websecure
        - traefik.http.routers.evolution.priority=1
        - traefik.http.routers.evolution.tls.certresolver=letsencryptresolver
        - traefik.http.routers.evolution.service=evolution
        - traefik.http.services.evolution.loadbalancer.server.port=8080

volumes:
  evolution_instances:
    name: evolution_instances

networks:
  network_internal:
    external: true
    name: network_internal
Enter fullscreen mode Exit fullscreen mode

O que você precisa alterar

Antes de subir essa stack, ajuste estes pontos:

  • SUA_GLOBAL_API_KEY_AQUI
  • SUA_SENHA_FORTE_AQUI
  • seu-dominio.com.br

Observações importantes

  1. Senha do PostgreSQL

A senha usada em POSTGRES_PASSWORD deve ser exatamente a mesma usada nas variáveis:

  • POSTGRES_AUTH_DB
  • POSTGRES_USERS_DB

Se isso não bater, a aplicação não conseguirá abrir conexão com o banco.

2. Bancos utilizados

A Evolution Go foi configurada aqui para usar dois bancos:

  • evogo_auth
  • evogo_users

A Evolution Go cria esses bancos.

3. API Key global

A GLOBAL_API_KEYé sensível. Não publique essa chave em prints, repositórios ou posts públicos.

4. Domínio

Na label do Traefik:

- traefik.http.routers.evolution.rule=Host(`seu-dominio.com.br`)
Enter fullscreen mode Exit fullscreen mode

troque pelo domínio real que apontará para sua Evolution Go.

Top comments (0)