Back to Apps
Evolution API

Deploy Evolution API on Your Own Server

Evolution API is a powerful WhatsApp API that allows you to create bots and automate your WhatsApp communication.

πŸ’¬ Communication

Want to deploy Evolution API on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.

Get Started

What is Evolution API?

Deploying Evolution API with required services (PostgreSQL, Redis, RabbitMQ)...

Self-Host Evolution API

Follow these steps to deploy on your own server.

1

Install Docker

Skip this step if Docker is already installed on your server.

curl -fsSL https://get.docker.com | sh
2

Configure

Customize the settings below. Defaults work for most cases.

3

Deploy

Copy the configuration and run it on your server.

services:
  evolution_api:
    image: atendai/evolution-api:v2.2.1
    environment:
      AUTHENTICATION_API_KEY: evolution_api_authentication_api_key
      AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES: "false"
      CACHE_LOCAL_ENABLED: "false"
      CACHE_REDIS_ENABLED: "true"
      CACHE_REDIS_PREFIX_KEY: "evolution-api:"
      CACHE_REDIS_SAVE_INSTANCES: "true"
      CACHE_REDIS_TTL: "3600"
      CACHE_REDIS_URI: redis://evolution_api-redis:6379
      CHATWOOT_BOT_CONTACT: "false"
      CHATWOOT_ENABLED: "false"
      CHATWOOT_IMPORT_DATABASE_CONNECTION_URI: ""
      CHATWOOT_IMPORT_PLACEHOLDER_MEDIA_MESSAGE: ""
      CHATWOOT_MESSAGE_DELETE: "false"
      CHATWOOT_MESSAGE_READ: "false"
      CONFIG_SESSION_PHONE_CLIENT: Evolution API
      CONFIG_SESSION_PHONE_NAME: Chrome
      CONFIG_SESSION_PHONE_VERSION: 4.0.0
      CORS_CREDENTIALS: "true"
      CORS_METHODS: POST,GET,PUT,DELETE
      CORS_ORIGIN: "*"
      DATABASE_CONNECTION_CLIENT_NAME: evolution-api
      DATABASE_CONNECTION_URI: postgres://evolution:9ad35271ab8899d2@evolution_api-postgres:5432/evolution_db
      DATABASE_DELETE_MESSAGE: "false"
      DATABASE_PROVIDER: postgresql
      DATABASE_SAVE_DATA_CHATS: "true"
      DATABASE_SAVE_DATA_CONTACTS: "true"
      DATABASE_SAVE_DATA_HISTORIC: "true"
      DATABASE_SAVE_DATA_INSTANCE: "true"
      DATABASE_SAVE_DATA_LABELS: "true"
      DATABASE_SAVE_DATA_NEW_MESSAGE: "true"
      DATABASE_SAVE_IS_ON_WHATSAPP: "true"
      DATABASE_SAVE_IS_ON_WHATSAPP_DAYS: "30"
      DATABASE_SAVE_MESSAGE_UPDATE: "true"
      DEL_INSTANCE: "false"
      DIFY_ENABLED: "false"
      EVENT_EMITTER_MAX_LISTENERS: "100"
      LANGUAGE: en
      LOG_BAILEYS: error
      LOG_COLOR: "true"
      LOG_LEVEL: info
      OPENAI_ENABLED: "false"
      PROXY_HOST: ""
      PROXY_PASSWORD: ""
      PROXY_PORT: ""
      PROXY_PROTOCOL: ""
      PROXY_USERNAME: ""
      PUSHER_ENABLED: "false"
      PUSHER_EVENTS_APPLICATION_STARTUP: ""
      PUSHER_EVENTS_CALL: ""
      PUSHER_EVENTS_CHATS_DELETE: ""
      PUSHER_EVENTS_CHATS_SET: ""
      PUSHER_EVENTS_CHATS_UPDATE: ""
      PUSHER_EVENTS_CHATS_UPSERT: ""
      PUSHER_EVENTS_CONNECTION_UPDATE: ""
      PUSHER_EVENTS_CONTACTS_SET: ""
      PUSHER_EVENTS_CONTACTS_UPDATE: ""
      PUSHER_EVENTS_CONTACTS_UPSERT: ""
      PUSHER_EVENTS_GROUPS_UPDATE: ""
      PUSHER_EVENTS_GROUPS_UPSERT: ""
      PUSHER_EVENTS_GROUP_PARTICIPANTS_UPDATE: ""
      PUSHER_EVENTS_LABELS_ASSOCIATION: ""
      PUSHER_EVENTS_LABELS_EDIT: ""
      PUSHER_EVENTS_MESSAGES_DELETE: ""
      PUSHER_EVENTS_MESSAGES_EDITED: ""
      PUSHER_EVENTS_MESSAGES_SET: ""
      PUSHER_EVENTS_MESSAGES_UPDATE: ""
      PUSHER_EVENTS_MESSAGES_UPSERT: ""
      PUSHER_EVENTS_PRESENCE_UPDATE: ""
      PUSHER_EVENTS_QRCODE_UPDATED: ""
      PUSHER_EVENTS_SEND_MESSAGE: ""
      PUSHER_EVENTS_TYPEBOT_CHANGE_STATUS: ""
      PUSHER_EVENTS_TYPEBOT_START: ""
      PUSHER_GLOBAL_APP_ID: ""
      PUSHER_GLOBAL_CLUSTER: ""
      PUSHER_GLOBAL_ENABLED: "false"
      PUSHER_GLOBAL_KEY: ""
      PUSHER_GLOBAL_SECRET: ""
      PUSHER_GLOBAL_USE_TLS: ""
      QRCODE_COLOR: "#198754"
      QRCODE_LIMIT: "30"
      RABBITMQ_ENABLED: "true"
      RABBITMQ_EVENTS_APPLICATION_STARTUP: "true"
      RABBITMQ_EVENTS_CALL: "true"
      RABBITMQ_EVENTS_CHATS_DELETE: "true"
      RABBITMQ_EVENTS_CHATS_SET: "true"
      RABBITMQ_EVENTS_CHATS_UPDATE: "true"
      RABBITMQ_EVENTS_CHATS_UPSERT: "true"
      RABBITMQ_EVENTS_CONNECTION_UPDATE: "true"
      RABBITMQ_EVENTS_CONTACTS_SET: "true"
      RABBITMQ_EVENTS_CONTACTS_UPDATE: "true"
      RABBITMQ_EVENTS_CONTACTS_UPSERT: "true"
      RABBITMQ_EVENTS_GROUPS_UPSERT: "true"
      RABBITMQ_EVENTS_GROUP_PARTICIPANTS_UPDATE: "true"
      RABBITMQ_EVENTS_GROUP_UPDATE: "true"
      RABBITMQ_EVENTS_INSTANCE_CREATE: "true"
      RABBITMQ_EVENTS_INSTANCE_DELETE: "true"
      RABBITMQ_EVENTS_LOGOUT_INSTANCE: "true"
      RABBITMQ_EVENTS_MESSAGES_DELETE: "true"
      RABBITMQ_EVENTS_MESSAGES_EDITED: "true"
      RABBITMQ_EVENTS_MESSAGES_SET: "true"
      RABBITMQ_EVENTS_MESSAGES_UPDATE: "true"
      RABBITMQ_EVENTS_MESSAGES_UPSERT: "true"
      RABBITMQ_EVENTS_PRESENCE_UPDATE: "true"
      RABBITMQ_EVENTS_QRCODE_UPDATED: "true"
      RABBITMQ_EVENTS_REMOVE_INSTANCE: "true"
      RABBITMQ_EVENTS_SEND_MESSAGE: "true"
      RABBITMQ_EVENTS_TYPEBOT_CHANGE_STATUS: "true"
      RABBITMQ_EVENTS_TYPEBOT_START: "true"
      RABBITMQ_EXCHANGE_NAME: evolution-api
      RABBITMQ_GLOBAL_ENABLED: "true"
      RABBITMQ_URI: amqp://evolution:5b42783168f3812d@evolution_api-rabbitmq:5672
      S3_ACCESS_KEY: ""
      S3_BUCKET: ""
      S3_ENABLED: "false"
      S3_ENDPOINT: ""
      S3_PORT: ""
      S3_REGION: us-east-1
      S3_SECRET_KEY: ""
      S3_USE_SSL: "false"
      SENTRY_DSN: ""
      SERVER_PORT: "80"
      SERVER_TYPE: http
      SERVER_URL: https://evolution_api.your-domain.com
      SQS_ACCESS_KEY_ID: ""
      SQS_ACCOUNT_ID: ""
      SQS_ENABLED: "false"
      SQS_REGION: ""
      SQS_SECRET_ACCESS_KEY: ""
      TYPEBOT_API_VERSION: "1"
      TYPEBOT_ENABLED: "false"
      WA_BUSINESS_LANGUAGE: ""
      WA_BUSINESS_TOKEN_WEBHOOK: ""
      WA_BUSINESS_URL: ""
      WA_BUSINESS_VERSION: ""
      WEBHOOK_EVENTS_APPLICATION_STARTUP: "true"
      WEBHOOK_EVENTS_CALL: "true"
      WEBHOOK_EVENTS_CHATS_DELETE: "true"
      WEBHOOK_EVENTS_CHATS_SET: "true"
      WEBHOOK_EVENTS_CHATS_UPDATE: "true"
      WEBHOOK_EVENTS_CHATS_UPSERT: "true"
      WEBHOOK_EVENTS_CONNECTION_UPDATE: "true"
      WEBHOOK_EVENTS_CONTACTS_SET: "true"
      WEBHOOK_EVENTS_CONTACTS_UPDATE: "true"
      WEBHOOK_EVENTS_CONTACTS_UPSERT: "true"
      WEBHOOK_EVENTS_ERRORS: "true"
      WEBHOOK_EVENTS_ERRORS_WEBHOOK: "true"
      WEBHOOK_EVENTS_GROUPS_UPDATE: "true"
      WEBHOOK_EVENTS_GROUPS_UPSERT: "true"
      WEBHOOK_EVENTS_GROUP_PARTICIPANTS_UPDATE: "true"
      WEBHOOK_EVENTS_LABELS_ASSOCIATION: "true"
      WEBHOOK_EVENTS_LABELS_EDIT: "true"
      WEBHOOK_EVENTS_LOGOUT_INSTANCE: "true"
      WEBHOOK_EVENTS_MESSAGES_DELETE: "true"
      WEBHOOK_EVENTS_MESSAGES_EDITED: "true"
      WEBHOOK_EVENTS_MESSAGES_SET: "true"
      WEBHOOK_EVENTS_MESSAGES_UPDATE: "true"
      WEBHOOK_EVENTS_MESSAGES_UPSERT: "true"
      WEBHOOK_EVENTS_PRESENCE_UPDATE: "true"
      WEBHOOK_EVENTS_QRCODE_UPDATED: "true"
      WEBHOOK_EVENTS_REMOVE_INSTANCE: "true"
      WEBHOOK_EVENTS_SEND_MESSAGE: "true"
      WEBHOOK_EVENTS_TYPEBOT_CHANGE_STATUS: "true"
      WEBHOOK_EVENTS_TYPEBOT_START: "true"
      WEBHOOK_GLOBAL_ENABLED: "true"
      WEBHOOK_GLOBAL_URL: https://your-webhook-url.com
      WEBHOOK_GLOBAL_WEBHOOK_BY_EVENTS: "true"
      WEBSOCKET_ENABLED: "false"
      WEBSOCKET_GLOBAL_EVENTS: "false"
    volumes:
      - evolution_api-data:/evolution
    depends_on:
      - evolution_api-redis
      - evolution_api-postgres
      - evolution_api-rabbitmq
  evolution_api-postgres:
    image: postgres:17
    environment:
      POSTGRES_DB: evolution_db
      POSTGRES_PASSWORD: 9ad35271ab8899d2
      POSTGRES_USER: evolution
    volumes:
      - evolution_api-postgres-data:/var/lib/postgresql/data
  evolution_api-rabbitmq:
    image: rabbitmq:3.7
    environment:
      RABBITMQ_DEFAULT_PASS: 5b42783168f3812d
      RABBITMQ_DEFAULT_USER: evolution
    volumes:
      - evolution_api-rabbitmq-data:/var/lib/rabbitmq
  evolution_api-redis:
    image: redis:latest
    volumes:
      - evolution_api-redis-data:/data
volumes:
  evolution_api-data: {}
  evolution_api-postgres-data: {}
  evolution_api-rabbitmq-data: {}
  evolution_api-redis-data: {}

Then run:

docker compose up -d
4

Access

Once started, access your app at http://localhost:80

Why Self-Host Evolution API?

Full Data Ownership

Your data stays on your servers. No third-party access.

No Monthly Fees

Pay only for your server. No per-seat or usage charges.

Complete Control

Customize, backup, and scale on your own terms.

Privacy & Compliance

Meet GDPR, HIPAA, or internal security requirements.

Technical Details

Docker Image

atendai/evolution-api:${ant_version}

Want to go faster?

Try Senate! Senate handles Docker, HTTPS, updates, and monitoring for you. Deploy any of our 300+ apps with a single command.

Install on any Linux server:

sh -c "$(curl -sSL https://get.senate.sh)"