From bd1418bdd94bf7f6b9d27628ded8e495da1132d1 Mon Sep 17 00:00:00 2001 From: Neo And Date: Tue, 15 Jul 2025 21:03:49 -0600 Subject: [PATCH] Subir archivos a "stack-odoohub" --- stack-odoohub/odoo-stack.yml | 227 +++++++++++++++++++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 stack-odoohub/odoo-stack.yml diff --git a/stack-odoohub/odoo-stack.yml b/stack-odoohub/odoo-stack.yml new file mode 100644 index 0000000..e7ac8d0 --- /dev/null +++ b/stack-odoohub/odoo-stack.yml @@ -0,0 +1,227 @@ +version: "3.7" + +services: + # --------------------------- DATABASE (PostgreSQL) --------------------------- # + # Serviço de banco de dados relacional utilizado por Odoo e Evolution para persistência de dados. + db: + image: postgres:16 + user: root + environment: + - POSTGRES_USER= # Usuário do banco de dados (ex: admin) + - POSTGRES_PASSWORD= # Senha do banco de dados + - POSTGRES_DB= # Nome do banco de dados (ex: postgres) + volumes: + - db_data:/var/lib/postgresql/data + networks: + - netpevo + deploy: + mode: replicated + replicas: 1 + placement: + constraints: + - node.role == manager + resources: + limits: + cpus: "1" + memory: 1024M + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + # Remova a porta abaixo se for usar Traefik para expor o serviço + #ports: + # - 5432:5432 + + # --------------------------- ODOO (DiscussHub) --------------------------- # + # ERP Odoo customizado com DiscussHub, plataforma de gestão empresarial e comunicação integrada. + odoo: + image: discusshub/discuss_hub:latest + depends_on: + - db + tty: true + command: odoo -d odoo -i discuss_hub -u discuss_hub + environment: + - ODOO_RC=/etc/odoo/odoo.conf + - HOST=db + - USER= # Usuário do banco de dados (ex: admin) + - PASSWORD= # Senha do banco de dados + - ADMIN_PASSWORD= # Senha do usuário admin do Odoo + - SMTP_SERVER=mailpit + - SMTP_PORT=1025 + - EVOLUTION_URL=http://evolution:8080 + - EVOLUTION_API_KEY= # Chave de API do Evolution + - EVOLUTION_ODOO_URL=http://odoo:8069 + volumes: + - odoo_conf:/etc/odoo + - odoo_data:/var/lib/odoo + networks: + - netpevo + deploy: + mode: replicated + replicas: 1 + placement: + constraints: + - node.role == manager + resources: + limits: + cpus: "2" + memory: 2048M + labels: + - traefik.enable=true + - traefik.http.routers.odoo.rule=Host(`odoo.seudominio.com.br`) # Altere para seu domínio + - traefik.http.services.odoo.loadbalancer.server.port=8069 + - traefik.http.routers.odoo.service=odoo + - traefik.http.routers.odoo.tls.certresolver=letsencryptresolver + - traefik.http.routers.odoo.entrypoints=websecure + - traefik.http.routers.odoo.tls=true + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + # Remova a porta abaixo se for usar Traefik para expor o serviço + #ports: + # - "8069:8069" + + # --------------------------- EVOLUTION API --------------------------- # + # API Evolution: plataforma de automação, integração e comunicação multicanal (WhatsApp, etc). + evolution: + image: evoapicloud/evolution-api:v2.3.0 + depends_on: + - redis + - db + volumes: + - evolution_instances:/evolution/instances + networks: + - netpevo + deploy: + mode: replicated + replicas: 1 + placement: + constraints: + - node.role == manager + resources: + limits: + cpus: "1" + memory: 1024M + labels: + - traefik.enable=true + - traefik.http.routers.evolution.rule=Host(`evolution.seudominio.com.br`) # Altere para seu domínio + - traefik.http.services.evolution.loadbalancer.server.port=8080 + - traefik.http.routers.evolution.service=evolution + - traefik.http.routers.evolution.tls.certresolver=letsencryptresolver + - traefik.http.routers.evolution.entrypoints=websecure + - traefik.http.routers.evolution.tls=true + environment: + - SERVER_URL=http://localhost:8080 + - DATABASE_PROVIDER=postgresql + - DATABASE_CONNECTION_URI= # URI de conexão do banco (ex: postgresql://usuario:senha@db:5432/nome_db?schema=public) + - 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_SAVE_IS_ON_WHATSAPP=true + - DATABASE_SAVE_IS_ON_WHATSAPP_DAYS=14 + - DATABASE_DELETE_MESSAGE=true + - CACHE_REDIS_ENABLED=true + - CACHE_REDIS_URI=redis://redis:6379/6 + - CACHE_REDIS_TTL=604800 + - CACHE_REDIS_PREFIX_KEY=evolution + - CACHE_REDIS_SAVE_INSTANCES=false + - CACHE_LOCAL_ENABLED=false + - CONFIG_SESSION_PHONE_CLIENT=Conexao Azul + - CONFIG_SESSION_PHONE_NAME=Chrome + - CONFIG_SESSION_PHONE_VERSION=2.3000.1020885143 + - AUTHENTICATION_API_KEY= # Chave de API de autenticação + - WA_BUSINESS_TOKEN_WEBHOOK=evolution + - WA_BUSINESS_URL=https://graph.facebook.com + - WA_BUSINESS_VERSION=v21.0 + - WA_BUSINESS_LANGUAGE=pt_BR + - OPENAI_ENABLED=true + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + # Remova a porta abaixo se for usar Traefik para expor o serviço + #ports: + # - 8080:8080 + + # --------------------------- REDIS --------------------------- # + # Redis: banco de dados em memória utilizado como cache e para filas de mensagens pela Evolution API. + redis: + image: redis:latest + command: redis-server --port 6379 --appendonly yes + volumes: + - redis_data:/data + networks: + - netpevo + deploy: + mode: replicated + replicas: 1 + placement: + constraints: + - node.role == manager + resources: + limits: + cpus: "0.5" + memory: 512M + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + # Remova a porta abaixo se for usar Traefik para expor o serviço + #ports: + # - 6379:6379 + + # --------------------------- MAILPIT --------------------------- # + # Mailpit: servidor SMTP fake para testes de envio de e-mails em ambiente de desenvolvimento. + mailpit: + image: docker.io/axllent/mailpit:latest + networks: + - netpevo + deploy: + mode: replicated + replicas: 1 + placement: + constraints: + - node.role == manager + resources: + limits: + cpus: "0.5" + memory: 512M + # Remova as portas abaixo se for usar Traefik para expor o serviço + #ports: + # - "8025:8025" + # - "1025:1025" + +# --------------------------- VOLUMES EXTERNOS --------------------------- # +# Volumes externos para persistência dos dados dos serviços. Devem ser criados previamente no cluster Swarm. +volumes: + db_data: + external: true + name: db_data + odoo_data: + external: true + name: odoo_data + odoo_conf: + external: true + name: odoo_conf + evolution_instances: + external: true + name: evolution_instances + redis_data: + external: true + name: redis_data + +# --------------------------- REDE OVERLAY EXTERNA --------------------------- # +# Rede overlay compartilhada entre todos os serviços da stack, permitindo comunicação interna segura e isolada no cluster Swarm. +networks: + netpevo: + external: true + name: netpevo # Rede overlay para comunicação interna entre os serviços da stack (ajuste conforme sua infraestrutura) \ No newline at end of file