Dokploy

Evolution GO

Evolution Go is a high-performance implementation of the WhatsApp API, written in Go. Built with Go’s standard library and modern development practices, it provides a robust and efficient solution for WhatsApp integration using the whatsmeow library.

Evolution GO logo

Configuration

services:
  evolution-go:
    image: evoapicloud/evolution-go:latest
    restart: always
    environment:
      - SERVER_PORT=${SERVER_PORT}
      - CLIENT_NAME=${CLIENT_NAME}
      - GLOBAL_API_KEY=${AUTHENTICATION_API_KEY}
      - POSTGRES_AUTH_DB=${DATABASE_CONNECTION_URI}/evogo_auth?sslmode=disable
      - POSTGRES_USERS_DB=${DATABASE_CONNECTION_URI}/evogo_users?sslmode=disable
      - DATABASE_SAVE_MESSAGES=${DATABASE_SAVE_MESSAGES}
      - WADEBUG=${WADEBUG}
      - LOGTYPE=${LOGTYPE}
    volumes:
      - evolution-go-data:/app/dbdata
      - evolution-go-logs:/app/logs
    depends_on:
      - evolution-postgres

  evolution-gateway:
    image: nginx:alpine
    restart: always
    volumes:
      - ../files/gateway.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - evolution-go

  evolution-postgres:
    image: postgres:16-alpine
    restart: always
    environment:
      - POSTGRES_DB=${POSTGRES_DATABASE}
      - POSTGRES_USER=${POSTGRES_USERNAME}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - evolution-postgres-data:/var/lib/postgresql/data

volumes:
  evolution-postgres-data:
  evolution-go-data:
  evolution-go-logs:
[variables]
main_domain = "${domain}"
api_key = "${base64:64}"
postgres_password = "${password}"

[config]
env = [
  "SERVER_URL=https://${main_domain}",
  "SERVER_PORT=8080",
  "AUTHENTICATION_API_KEY=${api_key}",
  "CLIENT_NAME=Evolution",
  "DATABASE_SAVE_MESSAGES=false",
  "WADEBUG=INFO",
  "LOGTYPE=console",
  "POSTGRES_DATABASE=evolution",
  "POSTGRES_USERNAME=postgresql",
  "POSTGRES_PASSWORD=${postgres_password}",
  "DATABASE_CONNECTION_URI=postgres://postgresql:${postgres_password}@evolution-postgres:5432",
]

[[config.mounts]]
filePath = "gateway.conf"
content = """
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80;
    server_name _;
    absolute_redirect off;
    client_max_body_size 100m;

    # Evolution GO has no route on "/" (and the API answers 503 until the
    # license is activated), so send visitors to the bundled manager UI.
    location = / {
        return 302 /manager/login;
    }

    location / {
        proxy_pass http://evolution-go:8080;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
    }
}
"""

[[config.domains]]
serviceName = "evolution-gateway"
port = 80
host = "${main_domain}"

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICBldm9sdXRpb24tZ286XG4gICAgaW1hZ2U6IGV2b2FwaWNsb3VkL2V2b2x1dGlvbi1nbzpsYXRlc3RcbiAgICByZXN0YXJ0OiBhbHdheXNcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gU0VSVkVSX1BPUlQ9JHtTRVJWRVJfUE9SVH1cbiAgICAgIC0gQ0xJRU5UX05BTUU9JHtDTElFTlRfTkFNRX1cbiAgICAgIC0gR0xPQkFMX0FQSV9LRVk9JHtBVVRIRU5USUNBVElPTl9BUElfS0VZfVxuICAgICAgLSBQT1NUR1JFU19BVVRIX0RCPSR7REFUQUJBU0VfQ09OTkVDVElPTl9VUkl9L2V2b2dvX2F1dGg/c3NsbW9kZT1kaXNhYmxlXG4gICAgICAtIFBPU1RHUkVTX1VTRVJTX0RCPSR7REFUQUJBU0VfQ09OTkVDVElPTl9VUkl9L2V2b2dvX3VzZXJzP3NzbG1vZGU9ZGlzYWJsZVxuICAgICAgLSBEQVRBQkFTRV9TQVZFX01FU1NBR0VTPSR7REFUQUJBU0VfU0FWRV9NRVNTQUdFU31cbiAgICAgIC0gV0FERUJVRz0ke1dBREVCVUd9XG4gICAgICAtIExPR1RZUEU9JHtMT0dUWVBFfVxuICAgIHZvbHVtZXM6XG4gICAgICAtIGV2b2x1dGlvbi1nby1kYXRhOi9hcHAvZGJkYXRhXG4gICAgICAtIGV2b2x1dGlvbi1nby1sb2dzOi9hcHAvbG9nc1xuICAgIGRlcGVuZHNfb246XG4gICAgICAtIGV2b2x1dGlvbi1wb3N0Z3Jlc1xuXG4gIGV2b2x1dGlvbi1nYXRld2F5OlxuICAgIGltYWdlOiBuZ2lueDphbHBpbmVcbiAgICByZXN0YXJ0OiBhbHdheXNcbiAgICB2b2x1bWVzOlxuICAgICAgLSAuLi9maWxlcy9nYXRld2F5LmNvbmY6L2V0Yy9uZ2lueC9jb25mLmQvZGVmYXVsdC5jb25mOnJvXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gZXZvbHV0aW9uLWdvXG5cbiAgZXZvbHV0aW9uLXBvc3RncmVzOlxuICAgIGltYWdlOiBwb3N0Z3JlczoxNi1hbHBpbmVcbiAgICByZXN0YXJ0OiBhbHdheXNcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQVRBQkFTRX1cbiAgICAgIC0gUE9TVEdSRVNfVVNFUj0ke1BPU1RHUkVTX1VTRVJOQU1FfVxuICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0ke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgIHZvbHVtZXM6XG4gICAgICAtIGV2b2x1dGlvbi1wb3N0Z3Jlcy1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YVxuXG52b2x1bWVzOlxuICBldm9sdXRpb24tcG9zdGdyZXMtZGF0YTpcbiAgZXZvbHV0aW9uLWdvLWRhdGE6XG4gIGV2b2x1dGlvbi1nby1sb2dzOlxuIiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbmFwaV9rZXkgPSBcIiR7YmFzZTY0OjY0fVwiXG5wb3N0Z3Jlc19wYXNzd29yZCA9IFwiJHtwYXNzd29yZH1cIlxuXG5bY29uZmlnXVxuZW52ID0gW1xuICBcIlNFUlZFUl9VUkw9aHR0cHM6Ly8ke21haW5fZG9tYWlufVwiLFxuICBcIlNFUlZFUl9QT1JUPTgwODBcIixcbiAgXCJBVVRIRU5USUNBVElPTl9BUElfS0VZPSR7YXBpX2tleX1cIixcbiAgXCJDTElFTlRfTkFNRT1Fdm9sdXRpb25cIixcbiAgXCJEQVRBQkFTRV9TQVZFX01FU1NBR0VTPWZhbHNlXCIsXG4gIFwiV0FERUJVRz1JTkZPXCIsXG4gIFwiTE9HVFlQRT1jb25zb2xlXCIsXG4gIFwiUE9TVEdSRVNfREFUQUJBU0U9ZXZvbHV0aW9uXCIsXG4gIFwiUE9TVEdSRVNfVVNFUk5BTUU9cG9zdGdyZXNxbFwiLFxuICBcIlBPU1RHUkVTX1BBU1NXT1JEPSR7cG9zdGdyZXNfcGFzc3dvcmR9XCIsXG4gIFwiREFUQUJBU0VfQ09OTkVDVElPTl9VUkk9cG9zdGdyZXM6Ly9wb3N0Z3Jlc3FsOiR7cG9zdGdyZXNfcGFzc3dvcmR9QGV2b2x1dGlvbi1wb3N0Z3Jlczo1NDMyXCIsXG5dXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiZ2F0ZXdheS5jb25mXCJcbmNvbnRlbnQgPSBcIlwiXCJcbm1hcCAkaHR0cF91cGdyYWRlICRjb25uZWN0aW9uX3VwZ3JhZGUge1xuICAgIGRlZmF1bHQgdXBncmFkZTtcbiAgICAnJyAgICAgIGNsb3NlO1xufVxuXG5zZXJ2ZXIge1xuICAgIGxpc3RlbiA4MDtcbiAgICBzZXJ2ZXJfbmFtZSBfO1xuICAgIGFic29sdXRlX3JlZGlyZWN0IG9mZjtcbiAgICBjbGllbnRfbWF4X2JvZHlfc2l6ZSAxMDBtO1xuXG4gICAgIyBFdm9sdXRpb24gR08gaGFzIG5vIHJvdXRlIG9uIFwiL1wiIChhbmQgdGhlIEFQSSBhbnN3ZXJzIDUwMyB1bnRpbCB0aGVcbiAgICAjIGxpY2Vuc2UgaXMgYWN0aXZhdGVkKSwgc28gc2VuZCB2aXNpdG9ycyB0byB0aGUgYnVuZGxlZCBtYW5hZ2VyIFVJLlxuICAgIGxvY2F0aW9uID0gLyB7XG4gICAgICAgIHJldHVybiAzMDIgL21hbmFnZXIvbG9naW47XG4gICAgfVxuXG4gICAgbG9jYXRpb24gLyB7XG4gICAgICAgIHByb3h5X3Bhc3MgaHR0cDovL2V2b2x1dGlvbi1nbzo4MDgwO1xuICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xO1xuICAgICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgJGhvc3Q7XG4gICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1SZWFsLUlQICRyZW1vdGVfYWRkcjtcbiAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLUZvcndhcmRlZC1Gb3IgJHByb3h5X2FkZF94X2ZvcndhcmRlZF9mb3I7XG4gICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtUHJvdG8gJHNjaGVtZTtcbiAgICAgICAgcHJveHlfc2V0X2hlYWRlciBVcGdyYWRlICRodHRwX3VwZ3JhZGU7XG4gICAgICAgIHByb3h5X3NldF9oZWFkZXIgQ29ubmVjdGlvbiAkY29ubmVjdGlvbl91cGdyYWRlO1xuICAgICAgICBwcm94eV9yZWFkX3RpbWVvdXQgMzYwMHM7XG4gICAgICAgIHByb3h5X3NlbmRfdGltZW91dCAzNjAwcztcbiAgICB9XG59XG5cIlwiXCJcblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiZXZvbHV0aW9uLWdhdGV3YXlcIlxucG9ydCA9IDgwXG5ob3N0ID0gXCIke21haW5fZG9tYWlufVwiXG4iCn0=

Tags

api, whatsapp, messaging


Version: latest

On this page