mirror of
https://github.com/Dokploy/templates.git
synced 2026-07-10 00:15:28 +02:00
Merge pull request #923 from brunofrank/evolution-crm
Evolution CRM & Evolution GO templates
This commit is contained in:
251
blueprints/evolutioncrm/docker-compose.yml
Normal file
251
blueprints/evolutioncrm/docker-compose.yml
Normal file
@@ -0,0 +1,251 @@
|
||||
services:
|
||||
evo-auth:
|
||||
image: evoapicloud/evo-auth-service-community:latest
|
||||
command: sh -c "bundle exec rails db:prepare && bundle exec rails s -p 3001 -b 0.0.0.0"
|
||||
restart: always
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -f http://localhost:3001/up"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 120s
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- RAILS_ENV=production
|
||||
- RAILS_MAX_THREADS=5
|
||||
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
|
||||
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
|
||||
- EVOAI_CRM_API_TOKEN=${EVOAI_CRM_API_TOKEN}
|
||||
- POSTGRES_HOST=postgres
|
||||
- POSTGRES_PORT=5432
|
||||
- POSTGRES_USERNAME=postgres
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- POSTGRES_DATABASE=evo_crm_production
|
||||
- POSTGRES_SSLMODE=disable
|
||||
- REDIS_URL=redis://redis:6379/3
|
||||
- FRONTEND_URL=${FRONT_URL}
|
||||
- BACKEND_URL=${BACK_URL}
|
||||
- CORS_ORIGINS=${FRONT_URL},${BACK_URL}
|
||||
- DOORKEEPER_JWT_SECRET_KEY=${DOORKEEPER_JWT_SECRET_KEY}
|
||||
- DOORKEEPER_JWT_ALGORITHM=${DOORKEEPER_JWT_ALGORITHM}
|
||||
- DOORKEEPER_JWT_ISS=${DOORKEEPER_JWT_ISS}
|
||||
- MFA_ISSUER=${MFA_ISSUER}
|
||||
|
||||
evo-auth-sidekiq:
|
||||
image: evoapicloud/evo-auth-service-community:latest
|
||||
command: ["bundle", "exec", "sidekiq", "-C", "config/sidekiq.yml"]
|
||||
restart: always
|
||||
healthcheck:
|
||||
disable: true
|
||||
depends_on:
|
||||
evo-auth:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- RAILS_ENV=production
|
||||
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
|
||||
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
|
||||
- EVOAI_CRM_API_TOKEN=${EVOAI_CRM_API_TOKEN}
|
||||
- POSTGRES_HOST=postgres
|
||||
- POSTGRES_PORT=5432
|
||||
- POSTGRES_USERNAME=postgres
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- POSTGRES_DATABASE=evo_crm_production
|
||||
- POSTGRES_SSLMODE=disable
|
||||
- REDIS_URL=redis://redis:6379/3
|
||||
- DOORKEEPER_JWT_SECRET_KEY=${DOORKEEPER_JWT_SECRET_KEY}
|
||||
- DOORKEEPER_JWT_ALGORITHM=${DOORKEEPER_JWT_ALGORITHM}
|
||||
- DOORKEEPER_JWT_ISS=${DOORKEEPER_JWT_ISS}
|
||||
- MFA_ISSUER=EvoCRM
|
||||
- SIDEKIQ_CONCURRENCY=10
|
||||
|
||||
evo-crm:
|
||||
image: evoapicloud/evo-ai-crm-community:latest
|
||||
command: sh -c "bundle exec rails db:prepare && bundle exec rails s -p 3000 -b 0.0.0.0"
|
||||
restart: always
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:3000/health/live"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 120s
|
||||
depends_on:
|
||||
evo-auth:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- RAILS_ENV=production
|
||||
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
|
||||
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
|
||||
- EVOAI_CRM_API_TOKEN=${EVOAI_CRM_API_TOKEN}
|
||||
- POSTGRES_HOST=postgres
|
||||
- POSTGRES_PORT=5432
|
||||
- POSTGRES_USERNAME=postgres
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- POSTGRES_DATABASE=evo_crm_production
|
||||
- POSTGRES_SSLMODE=disable
|
||||
- REDIS_URL=redis://redis:6379/3
|
||||
- EVO_AUTH_SERVICE_URL=http://evo-auth:3001
|
||||
- EVO_AI_CORE_SERVICE_URL=http://evo-core:5555
|
||||
- BACKEND_URL=${BACK_URL}
|
||||
- FRONTEND_URL=${FRONT_URL}
|
||||
- CORS_ORIGINS=${FRONT_URL},${BACK_URL}
|
||||
- EVOLUTION_API_ONLY_SERVER=true
|
||||
- DISABLE_TELEMETRY=true
|
||||
- LOG_LEVEL=info
|
||||
- ENABLE_ACCOUNT_SIGNUP=true
|
||||
- ENABLE_PUSH_RELAY_SERVER=true
|
||||
- ENABLE_INBOX_EVENTS=true
|
||||
- BOT_RUNTIME_URL=http://evo-bot-runtime:8080
|
||||
- BOT_RUNTIME_SECRET=${BOT_RUNTIME_SECRET}
|
||||
- BOT_RUNTIME_POSTBACK_BASE_URL=${BACK_URL}
|
||||
volumes:
|
||||
- evo-crm-data:/app/storage
|
||||
|
||||
evo-crm-sidekiq:
|
||||
image: evoapicloud/evo-ai-crm-community:latest
|
||||
command: ["bundle", "exec", "sidekiq", "-C", "config/sidekiq.yml"]
|
||||
healthcheck:
|
||||
disable: true
|
||||
depends_on:
|
||||
evo-crm:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- RAILS_ENV=production
|
||||
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
|
||||
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
|
||||
- EVOAI_CRM_API_TOKEN=${EVOAI_CRM_API_TOKEN}
|
||||
- POSTGRES_HOST=postgres
|
||||
- POSTGRES_PORT=5432
|
||||
- POSTGRES_USERNAME=postgres
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- POSTGRES_DATABASE=evo_crm_production
|
||||
- POSTGRES_SSLMODE=disable
|
||||
- REDIS_URL=redis://redis:6379/3
|
||||
- EVO_AUTH_SERVICE_URL=${AUTH_URL}
|
||||
- EVO_AI_CORE_SERVICE_URL=http://evo-core:5555
|
||||
- BACKEND_URL=${BACK_URL}
|
||||
- FRONTEND_URL=${FRONT_URL}
|
||||
- CORS_ORIGINS=${FRONT_URL},${BACK_URL},${AUTH_URL}
|
||||
- DISABLE_TELEMETRY=true
|
||||
- LOG_LEVEL=info
|
||||
- ENABLE_ACCOUNT_SIGNUP=true
|
||||
- ENABLE_PUSH_RELAY_SERVER=true
|
||||
- ENABLE_INBOX_EVENTS=true
|
||||
- BOT_RUNTIME_URL=http://evo-bot-runtime:8080
|
||||
- BOT_RUNTIME_SECRET=${BOT_RUNTIME_SECRET}
|
||||
- BOT_RUNTIME_POSTBACK_BASE_URL=${BACK_URL}
|
||||
- SIDEKIQ_CONCURRENCY=10
|
||||
|
||||
evo-core:
|
||||
image: evoapicloud/evo-ai-core-service-community:latest
|
||||
restart: always
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- DB_NAME=evo_crm_production
|
||||
- DB_SSLMODE=disable
|
||||
- DB_MAX_IDLE_CONNS=10
|
||||
- DB_MAX_OPEN_CONNS=100
|
||||
- DB_CONN_MAX_LIFETIME=1h
|
||||
- DB_CONN_MAX_IDLE_TIME=30m
|
||||
- PORT=5555
|
||||
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
|
||||
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
|
||||
- JWT_ALGORITHM=HS256
|
||||
- ENCRYPTION_KEY=${ENCRYPTION_KEY}
|
||||
- EVOLUTION_BASE_URL=http://evo-crm:3000
|
||||
- EVO_AUTH_BASE_URL=http://evo-auth:3001
|
||||
- AI_PROCESSOR_URL=http://evo-processor:8000
|
||||
- AI_PROCESSOR_VERSION=v1
|
||||
|
||||
evo-processor:
|
||||
image: evoapicloud/evo-ai-processor-community:latest
|
||||
depends_on:
|
||||
evo-crm:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- POSTGRES_CONNECTION_STRING=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/evo_crm_production
|
||||
- REDIS_HOST=redis
|
||||
- REDIS_PORT=6379
|
||||
- REDIS_SSL=false
|
||||
- REDIS_DB=3
|
||||
- REDIS_KEY_PREFIX="a2a:"
|
||||
- REDIS_TTL=3600
|
||||
- HOST=0.0.0.0
|
||||
- PORT=8000
|
||||
- DEBUG=false
|
||||
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
|
||||
- ENCRYPTION_KEY=${ENCRYPTION_KEY}
|
||||
- EVOAI_CRM_API_TOKEN=${EVOAI_CRM_API_TOKEN}
|
||||
- EVO_AI_CRM_URL=http://evo-crm:3000
|
||||
- CORE_SERVICE_URL=http://evo-core:5555/api/v1
|
||||
- EVO_AUTH_BASE_URL=http://evo-auth:3001
|
||||
- APP_URL=${FRONT_URL}
|
||||
- API_URL=${PROCESSOR_URL}
|
||||
- API_TITLE=Agent Processor Community
|
||||
- API_DESCRIPTION=Agent Processor Community for Evolution AI
|
||||
- API_VERSION=1.0.0
|
||||
- ORGANIZATION_NAME=Evolution CRM
|
||||
- TOOLS_CACHE_ENABLED=true
|
||||
- TOOLS_CACHE_TTL=3600
|
||||
|
||||
evo-bot-runtime:
|
||||
image: evoapicloud/evo-bot-runtime:latest
|
||||
environment:
|
||||
- LISTEN_ADDR=0.0.0.0:8080
|
||||
- REDIS_URL=redis://:${REDIS_PASSWORD}@redis:6379/3
|
||||
- AI_PROCESSOR_URL=http://evo-processor:8000
|
||||
- BOT_RUNTIME_SECRET=${BOT_RUNTIME_SECRET}
|
||||
- AI_CALL_TIMEOUT_SECONDS=30
|
||||
|
||||
evo-crm-frontend:
|
||||
image: evoapicloud/evo-ai-frontend-community:latest
|
||||
environment:
|
||||
- VITE_APP_ENV=production
|
||||
- VITE_API_URL=${BACK_URL}
|
||||
- VITE_AUTH_API_URL=${AUTH_URL}
|
||||
- VITE_EVOAI_API_URL=${EVOIA_URL}
|
||||
- VITE_AGENT_PROCESSOR_URL=${PROCESSOR_URL}
|
||||
- VITE_WS_URL=wss://${BACK_DOMAIN}
|
||||
- VITE_FRONT_URL=${FRONT_URL}
|
||||
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
restart: always
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_DB=${POSTGRES_DATABASE}
|
||||
- POSTGRES_USER=${POSTGRES_USERNAME}
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 10s
|
||||
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
volumes:
|
||||
- redis-data:/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "redis-cli ping"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
redis-data:
|
||||
evo-processor-data:
|
||||
evo-crm-data:
|
||||
BIN
blueprints/evolutioncrm/evolutionapi.png
Normal file
BIN
blueprints/evolutioncrm/evolutionapi.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
20
blueprints/evolutioncrm/meta.json
Normal file
20
blueprints/evolutioncrm/meta.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"id": "evolutioncrm",
|
||||
"name": "Evolution CRM",
|
||||
"version": "latest",
|
||||
"description": "Evo CRM Community is the open-source edition of the Evo CRM platform — a complete suite for AI-assisted customer support. It brings together authentication, CRM, AI agents, agent processing, bot pipelines and a modern frontend into a unified, self-hostable stack.",
|
||||
"logo": "evolutionapi.png",
|
||||
"links": {
|
||||
"github": "https://github.com/evolution-foundation/evo-crm-community",
|
||||
"docs": "https://docs.evolutionfoundation.com.br",
|
||||
"website": "https://evolutionfoundation.com.br"
|
||||
},
|
||||
"tags": [
|
||||
"crm",
|
||||
"ai",
|
||||
"agent",
|
||||
"processing",
|
||||
"bot",
|
||||
"pipeline"
|
||||
]
|
||||
}
|
||||
67
blueprints/evolutioncrm/template.toml
Normal file
67
blueprints/evolutioncrm/template.toml
Normal file
@@ -0,0 +1,67 @@
|
||||
[variables]
|
||||
auth_domain = "${domain}"
|
||||
front_domain = "${domain}"
|
||||
api_domain = "${domain}"
|
||||
evoia_domain = "${domain}"
|
||||
processor_domain = "${domain}"
|
||||
postgres_password = "${password}"
|
||||
secret_key_base = "${base64:64}"
|
||||
jwt_secret_key = "${base64:64}"
|
||||
api_token = "${base64:64}"
|
||||
doorkeeper_jwt_secret_key = "${base64:64}"
|
||||
bot_runtime_secret = "${base64:64}"
|
||||
encryption_key = "${base64:32}"
|
||||
global_api_key = "${base64:64}"
|
||||
|
||||
[config]
|
||||
env = [
|
||||
"SECRET_KEY_BASE=${secret_key_base}",
|
||||
"JWT_SECRET_KEY=${jwt_secret_key}",
|
||||
"EVOAI_CRM_API_TOKEN=${api_token}",
|
||||
"GLOBAL_API_KEY=${global_api_key}",
|
||||
"POSTGRES_PASSWORD=${postgres_password}",
|
||||
"POSTGRES_DATABASE=evo_crm_community",
|
||||
"POSTGRES_USERNAME=postgres",
|
||||
"REDIS_URL=redis://redis:6379/3",
|
||||
"FRONT_DOMAIN=${front_domain}",
|
||||
"FRONT_URL=\"http://${front_domain}\"",
|
||||
"BACK_DOMAIN=${api_domain}",
|
||||
"BACK_URL=\"http://${api_domain}\"",
|
||||
"AUTH_DOMAIN=${auth_domain}",
|
||||
"AUTH_URL=\"http://${auth_domain}\"",
|
||||
"PROCESSOR_DOMAIN=${processor_domain}",
|
||||
"PROCESSOR_URL=\"http://${processor_domain}\"",
|
||||
"EVOIA_DOMAIN=${evoia_domain}",
|
||||
"EVOIA_URL=\"http://${evoia_domain}\"",
|
||||
"DOORKEEPER_JWT_SECRET_KEY=${doorkeeper_jwt_secret_key}",
|
||||
"DOORKEEPER_JWT_ALGORITHM=hs256",
|
||||
"DOORKEEPER_JWT_ISS=evo-auth-service",
|
||||
"MFA_ISSUER=EvoCRM",
|
||||
"BOT_RUNTIME_SECRET=${bot_runtime_secret}",
|
||||
"ENCRYPTION_KEY=${encryption_key}",
|
||||
]
|
||||
|
||||
mounts = []
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "evo-auth"
|
||||
port = 3001
|
||||
host = "${auth_domain}"
|
||||
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "evo-crm-frontend"
|
||||
port = 80
|
||||
host = "${front_domain}"
|
||||
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "evo-crm"
|
||||
port = 3000
|
||||
host = "${api_domain}"
|
||||
|
||||
|
||||
[[config.domains]]
|
||||
serviceName = "evo-processor"
|
||||
port = 8000
|
||||
host = "${processor_domain}"
|
||||
41
blueprints/evolutiongo/docker-compose.yml
Normal file
41
blueprints/evolutiongo/docker-compose.yml
Normal file
@@ -0,0 +1,41 @@
|
||||
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:
|
||||
BIN
blueprints/evolutiongo/evolutionapi.png
Normal file
BIN
blueprints/evolutiongo/evolutionapi.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
17
blueprints/evolutiongo/meta.json
Normal file
17
blueprints/evolutiongo/meta.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"id": "evolutiongo",
|
||||
"name": "Evolution GO",
|
||||
"version": "latest",
|
||||
"description": "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.",
|
||||
"logo": "evolutionapi.png",
|
||||
"links": {
|
||||
"github": "https://github.com/evolution-foundation/evolution-go",
|
||||
"docs": "https://docs.evolutionfoundation.com.br/evolution-go",
|
||||
"website": "https://docs.evolutionfoundation.com.br/evolution-go"
|
||||
},
|
||||
"tags": [
|
||||
"api",
|
||||
"whatsapp",
|
||||
"messaging"
|
||||
]
|
||||
}
|
||||
59
blueprints/evolutiongo/template.toml
Normal file
59
blueprints/evolutiongo/template.toml
Normal file
@@ -0,0 +1,59 @@
|
||||
[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}"
|
||||
Reference in New Issue
Block a user