version: "3.9"

name: viperconnect

# ViperConnect + Redis + RabbitMQ para uso atras de Nginx.
# Aponte o Nginx para http://HOST_DOCKER:9876 ou para http://unoapi:9876
# se o Nginx estiver na mesma network Docker.

services:
  unoapi:
    image: ghcr.io/viperteccorporation/viperconnect:3.0.67
    container_name: unoapi
    restart: always
    entrypoint: ["yarn", "cloud"]
    ports:
      - "9876:9876"
    depends_on:
      - unoapi-redis
      - unoapi-rabbitmq
    networks:
      - unoapi
    environment:
      SIGNAL_CACHE_SAFE_MODE: "false"

      HTTP_PROTOCOL: "https"
      BASE_URL: "https://unoapi.seudominio.com.br"

      UNOAPI_AUTH_TOKEN: "SUA_TOKEN_AQUI"

      EMBEDDED_SIGNUP_APP_ID: "SEU_APP_ID"
      EMBEDDED_SIGNUP_APP_SECRET: "SEU_APP_SECRET"
      EMBEDDED_SIGNUP_REDIRECT_URI: "https://unoapi.seudominio.com.br/embedded-callback.html"
      EMBEDDED_SIGNUP_GRAPH_VERSION: "v24.0"

      # Integracao Chatwoot (se usar)
      WEBHOOK_URL: "https://chatwoot.seudominio.com.br/webhooks/whatsapp"
      WEBHOOK_TOKEN: "SEU_WEBHOOK_TOKEN"
      WEBHOOK_HEADER: "Authorization"

      AMQP_URL: "amqp://user:senha@unoapi-rabbitmq:5672"
      REDIS_URL: "redis://:SUA_SENHA_REDIS@unoapi-redis:6379"

      STORAGE_BUCKET_NAME: "unoapi"
      STORAGE_ACCESS_KEY_ID: "SEU_ACCESS_KEY"
      STORAGE_SECRET_ACCESS_KEY: "SEU_SECRET_KEY"
      STORAGE_REGION: "auto"
      STORAGE_ENDPOINT: "https://SEU-ENDPOINT.r2.cloudflarestorage.com"
      STORAGE_FORCE_PATH_STYLE: "true"
      STORAGE_TIMEOUT_MS: "1200000"

      LOG_LEVEL: "info"
      UNO_LOG_LEVEL: "info"

      IGNORE_GROUP_MESSAGES: "true"
      IGNORE_BROADCAST_STATUSES: "true"
      IGNORE_OWN_MESSAGES: "false"
      IGNORE_STATUS_MESSAGE: "true"
      IGNORE_YOURSELF_MESSAGES: "false"
      IGNORE_HISTORY_MESSAGES: "true"
      IGNORE_BROADCAST_MESSAGES: "true"
      COMPOSING_MESSAGE: "true"

      REJECT_CALLS: "Nao consigo atender ligacoes"
      REJECT_CALLS_WEBHOOK: "Tentou ligar no whatsapp"
      SEND_CONNECTION_STATUS: "true"
      AUTO_CONNECT: "true"
      CLEAN_CONFIG_ON_DISCONNECT: "true"

      UNOAPI_RETRY_REQUEST_DELAY_MS: "10000"
      UNOAPI_DELAY_AFTER_FIRST_MESSAGE_MS: "10"
      UNOAPI_DELAY_BETWEEN_MESSAGES_MS: "5"
      CONSUMER_TIMEOUT_MS: "450000"

      CONFIG_SESSION_PHONE_CLIENT: "Unoapi"
      CONFIG_SESSION_PHONE_NAME: "Chrome"

      LID_RESOLVER_ENABLED: "true"
      HISTORY_MAX_AGE_DAYS: "7"

      UNOAPI_NATIVE_FLOW_BUTTONS: "true"
      BAILEYS_DEBUG_RAW_MESSAGES: "0"
      BAILEYS_ENABLE_LIST_REPORTING: "1"
      UNOAPI_DEBUG_BAILEYS_LIST_DUMP: "1"

  unoapi-rabbitmq:
    image: rabbitmq:4.2.2-management-alpine
    container_name: unoapi-rabbitmq
    restart: always
    networks:
      - unoapi
    environment:
      RABBITMQ_DEFAULT_USER: "user"
      RABBITMQ_DEFAULT_PASS: "senha"
    volumes:
      - rabbitmq_data:/var/lib/rabbitmq

  unoapi-redis:
    image: valkey/valkey:9-alpine3.23
    container_name: unoapi-redis
    restart: always
    networks:
      - unoapi
    command: >
      valkey-server
      --appendonly yes
      --requirepass "SUA_SENHA_REDIS"
      --protected-mode no
    volumes:
      - redis_data:/data

volumes:
  rabbitmq_data:
  redis_data:

networks:
  unoapi:
    driver: bridge
