# OpenWA v0.5.0 - Production compose adapted for m5 stack # Base: docker-compose.dev.yml (rmyndharis/OpenWA) services: openwa: image: ghcr.io/rmyndharis/openwa:latest container_name: m5_openwa restart: unless-stopped security_opt: - 'no-new-privileges:true' cap_add: - SYS_ADMIN - CHOWN - DAC_OVERRIDE - FOWNER - SETGID - SETUID shm_size: '512mb' environment: - NODE_ENV=production - PORT=2785 - HOME=/tmp - XDG_CONFIG_HOME=/tmp/.config - XDG_CACHE_HOME=/tmp/.cache - DATABASE_TYPE=sqlite - DATABASE_NAME=/app/data/openwa.sqlite - DATABASE_SYNCHRONIZE=false - DATABASE_LOGGING=false - ENGINE_TYPE=whatsapp-web.js - SESSION_DATA_PATH=/app/data/sessions - PUPPETEER_HEADLESS=true - PUPPETEER_ARGS=--no-sandbox,--disable-setuid-sandbox,--disable-dev-shm-usage,--disable-gpu,--disable-software-rasterizer - PUPPETEER_PROTOCOL_TIMEOUT=120000 - PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium - STORAGE_TYPE=local - STORAGE_LOCAL_PATH=/app/data/media - WEBHOOK_TIMEOUT=10000 - WEBHOOK_MAX_RETRIES=3 - WEBHOOK_RETRY_DELAY=5000 - QUEUE_ENABLED=false - AUTO_START_SESSIONS=false - LOG_LEVEL=info volumes: - m5_openwa_data:/app/data networks: - scripts_m5_network healthcheck: test: ['CMD', 'node', '-e', "require('http').get('http://localhost:2785/api/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1))"] interval: 30s timeout: 10s retries: 5 start_period: 45s labels: - "traefik.enable=true" - "traefik.http.routers.openwa.rule=Host(`wa.m5digital.net.br`)" - "traefik.http.routers.openwa.entrypoints=websecure" - "traefik.http.routers.openwa.tls=true" - "traefik.http.routers.openwa.service=openwa" - "traefik.http.services.openwa.loadbalancer.server.port=2785" volumes: m5_openwa_data: name: m5_openwa_data networks: scripts_m5_network: external: true