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..19ae4477e --- /dev/null +++ b/templates/compose/evolution-api.yaml @@ -0,0 +1,160 @@ +# 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/default.webp +# port: 8080 + +services: + api: + image: 'atendai/evolution-api:latest' + restart: always + depends_on: + - redis + - postgres + environment: + - SERVICE_FQDN_EVO_8080 + - SERVER_URL=$SERVICE_FQDN_EVO + - DB_TYPE=postgresdb + - POSTGRES_DB=${POSTGRES_DB:-postgres} + - 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 + - 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 + - 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:-postgres} + - 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 + - AUTHENTICATION_API_KEY=$SERVICE_PASSWORD_EVO + - AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES=true + - LANGUAGE=en + volumes: + - evolution_instances:/evolution/instances + healthcheck: + test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:8080/health-check"] + interval: 10s + timeout: 5s + retries: 3 + + redis: + image: redis:latest + command: redis-server --port 6379 --appendonly yes + restart: always + volumes: + - evolution_redis:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 30s + timeout: 10s + retries: 5 + + 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} + restart: always + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $SERVICE_USER_POSTGRES -d ${POSTGRES_DB:-postgres}"] + interval: 30s + timeout: 10s + retries: 5 \ No newline at end of file