diff --git a/public/svgs/evolution-api.png b/public/svgs/evolution-api.png new file mode 100644 index 000000000..0d26702e9 Binary files /dev/null and b/public/svgs/evolution-api.png differ diff --git a/templates/compose/evolution-api.yaml b/templates/compose/evolution-api.yaml new file mode 100644 index 000000000..ed57a1505 --- /dev/null +++ b/templates/compose/evolution-api.yaml @@ -0,0 +1,161 @@ +# documentation: https://doc.evolution-api.com/v1/pt/get-started/introduction +# slogan: Evolution API Installation with Postgres and Redis +# tags: evolution-api,evo-api,evolution,whatsapp,api,postgres,redis +# logo: svgs/evolution-api.png +# port: 8080 + +version: '3.8' +services: + api: + image: 'atendai/evolution-api:latest' # Change to specific version if needed. + restart: always + depends_on: + - redis + - postgres + environment: + - SERVICE_FQDN_EVO_8080 + - SERVER_URL=$SERVICE_FQDN_EVO + - DB_TYPE=postgresdb + - 'DB_POSTGRESDB_DATABASE=${POSTGRES_DB:-postgres}' + - DB_POSTGRESDB_HOST=postgres + - DB_POSTGRESDB_PORT=5432 + - 'DB_POSTGRESDB_USER=${SERVICE_USER_POSTGRES}' + - 'DB_POSTGRESDB_PASSWORD=${SERVICE_PASSWORD_POSTGRES}' + - DATABASE_PROVIDER=postgresql + - 'DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-postgres}' + - 'DATABASE_CONNECTION_URI=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-postgres}' + - DEL_INSTANCE=false + - 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' + - RABBITMQ_EXCHANGE_NAME=evolution_v2 + - RABBITMQ_GLOBAL_ENABLED=false + - RABBITMQ_EVENTS_APPLICATION_STARTUP=false + - RABBITMQ_EVENTS_INSTANCE_CREATE=false + - RABBITMQ_EVENTS_INSTANCE_DELETE=false + - RABBITMQ_EVENTS_QRCODE_UPDATED=false + - RABBITMQ_EVENTS_MESSAGES_SET=false + - RABBITMQ_EVENTS_MESSAGES_UPSERT=true + - RABBITMQ_EVENTS_MESSAGES_EDITED=false + - RABBITMQ_EVENTS_MESSAGES_UPDATE=false + - RABBITMQ_EVENTS_MESSAGES_DELETE=false + - RABBITMQ_EVENTS_SEND_MESSAGE=false + - RABBITMQ_EVENTS_CONTACTS_SET=false + - RABBITMQ_EVENTS_CONTACTS_UPSERT=false + - RABBITMQ_EVENTS_CONTACTS_UPDATE=false + - RABBITMQ_EVENTS_PRESENCE_UPDATE=false + - RABBITMQ_EVENTS_CHATS_SET=false + - RABBITMQ_EVENTS_CHATS_UPSERT=false + - RABBITMQ_EVENTS_CHATS_UPDATE=false + - RABBITMQ_EVENTS_CHATS_DELETE=false + - RABBITMQ_EVENTS_GROUPS_UPSERT=false + - RABBITMQ_EVENTS_GROUP_UPDATE=false + - RABBITMQ_EVENTS_GROUP_PARTICIPANTS_UPDATE=false + - RABBITMQ_EVENTS_CONNECTION_UPDATE=true + - RABBITMQ_EVENTS_CALL=false + - RABBITMQ_EVENTS_TYPEBOT_START=false + - RABBITMQ_EVENTS_TYPEBOT_CHANGE_STATUS=false + - SQS_ENABLED=false + - SQS_ACCESS_KEY_ID= + - SQS_SECRET_ACCESS_KEY= + - SQS_ACCOUNT_ID= + - SQS_REGION= + - WEBSOCKET_ENABLED=false + - WEBSOCKET_GLOBAL_EVENTS=false + - WA_BUSINESS_TOKEN_WEBHOOK=evolution + - 'WA_BUSINESS_URL=https://graph.facebook.com' + - WA_BUSINESS_VERSION=v20.0 + - WA_BUSINESS_LANGUAGE=pt_BR + - "WEBHOOK_GLOBAL_URL=''" + - WEBHOOK_GLOBAL_ENABLED=false + - WEBHOOK_GLOBAL_WEBHOOK_BY_EVENTS=false + - WEBHOOK_EVENTS_APPLICATION_STARTUP=false + - WEBHOOK_EVENTS_QRCODE_UPDATED=true + - WEBHOOK_EVENTS_MESSAGES_SET=true + - WEBHOOK_EVENTS_MESSAGES_UPSERT=true + - WEBHOOK_EVENTS_MESSAGES_EDITED=true + - WEBHOOK_EVENTS_MESSAGES_UPDATE=true + - WEBHOOK_EVENTS_MESSAGES_DELETE=true + - WEBHOOK_EVENTS_SEND_MESSAGE=true + - WEBHOOK_EVENTS_CONTACTS_SET=true + - WEBHOOK_EVENTS_CONTACTS_UPSERT=true + - WEBHOOK_EVENTS_CONTACTS_UPDATE=true + - WEBHOOK_EVENTS_PRESENCE_UPDATE=true + - WEBHOOK_EVENTS_CHATS_SET=true + - WEBHOOK_EVENTS_CHATS_UPSERT=true + - WEBHOOK_EVENTS_CHATS_UPDATE=true + - WEBHOOK_EVENTS_CHATS_DELETE=true + - WEBHOOK_EVENTS_GROUPS_UPSERT=true + - WEBHOOK_EVENTS_GROUPS_UPDATE=true + - WEBHOOK_EVENTS_GROUP_PARTICIPANTS_UPDATE=true + - WEBHOOK_EVENTS_CONNECTION_UPDATE=true + - WEBHOOK_EVENTS_LABELS_EDIT=true + - WEBHOOK_EVENTS_LABELS_ASSOCIATION=true + - WEBHOOK_EVENTS_CALL=true + - WEBHOOK_EVENTS_TYPEBOT_START=false + - WEBHOOK_EVENTS_TYPEBOT_CHANGE_STATUS=false + - WEBHOOK_EVENTS_ERRORS=false + - WEBHOOK_EVENTS_ERRORS_WEBHOOK= + - 'CONFIG_SESSION_PHONE_CLIENT=Evolution API V2' + - CONFIG_SESSION_PHONE_NAME=Chrome + - CONFIG_SESSION_PHONE_VERSION=2.3000.1015901307 + - QRCODE_LIMIT=30 + - OPENAI_ENABLED=true + - DIFY_ENABLED=true + - TYPEBOT_ENABLED=true + - TYPEBOT_API_VERSION=latest + - CHATWOOT_ENABLED=true + - CHATWOOT_MESSAGE_READ=true + - CHATWOOT_MESSAGE_DELETE=true + - 'CHATWOOT_IMPORT_DATABASE_CONNECTION_URI=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-chatwoot}' + - CHATWOOT_IMPORT_PLACEHOLDER_MEDIA_MESSAGE=true + - CACHE_REDIS_ENABLED=true + - 'CACHE_REDIS_URI=redis://redis:6379/6' + - CACHE_REDIS_PREFIX_KEY=evolution_v2 + - CACHE_REDIS_SAVE_INSTANCES=false + - CACHE_LOCAL_ENABLED=false + - S3_ENABLED=false + - S3_ACCESS_KEY= + - S3_SECRET_KEY= + - S3_BUCKET=evolution + - S3_PORT=443 + - S3_ENDPOINT=files.site.com + - S3_USE_SSL=true + - 'AUTHENTICATION_API_KEY=${SERVICE_AUTHENTICATION_API_KEY}' + - AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES=true + - LANGUAGE=en + volumes: + - 'evolution_instances:/evolution/instances' + expose: + - 8080 + redis: + image: 'redis:latest' + command: "redis-server --port 6379 --appendonly yes\n" + restart: always + volumes: + - 'evolution_redis:/data' + postgres: + image: 'postgres:16-alpine' + command: + - postgres + - '-c' + - max_connections=1000 + environment: + - 'POSTGRES_USER=${SERVICE_USER_POSTGRES}' + - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}' + - 'POSTGRES_DB=${POSTGRES_DB:-postgres}' + - 'AUTHENTICATION_API_KEY=${SERVICE_AUTHENTICATION_API_KEY}' + restart: always + volumes: + - 'postgres_data:/var/lib/postgresql/data' +volumes: + evolution_instances: null + evolution_redis: null + postgres_data: null