
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.
Want to deploy Evolution API on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.
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.
Install Docker
Skip this step if Docker is already installed on your server.
curl -fsSL https://get.docker.com | sh
Configure
Customize the settings below. Defaults work for most cases.
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
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)"