Files
DeskcommCRM/docker-compose.yml
T
Rafael Melgaço 8cd723b84d docs(waha): switch production hosting recommendation Hetzner → Hostgator
Hostgator é parceiro comercial do projeto, justificando preferência sobre
Hetzner mesmo com custo maior (~R$140 vs ~$5/mês). Datacenter São Paulo
adiciona vantagem real de latência <30ms pro Meta BR (vs ~150ms da EU).

- Novo runbook docs/runbooks/waha-hostgator.md (13 seções: bootstrap,
  Nginx + egress allowlist Vercel CIDRs, restic→B2, watchdog, restore drill)
- Specs/PRDs/research/presentation atualizados com plano Turing, custo R$,
  datacenter SP
- Hetzner mantido como plano B documentado (sem parceria) e DR cross-region
- Backup: substituído "Hetzner Volume Snapshots" por "restic → Backblaze B2"
  (Hostgator não tem snapshots nativos — restore drill mensal documentado)
2026-05-05 11:52:23 -03:00

52 lines
2.0 KiB
YAML

# Stack local de dependências externas para o DeskcommCRM.
#
# Sobe apenas o WAHA (Plus / NOWEB) pra desenvolvimento. Postgres + Auth + Storage
# vêm do Supabase Cloud (ou supabase local CLI separadamente, conforme o time preferir).
#
# Uso:
# 1. Copie .env.example -> .env.local e preencha WAHA_API_KEY (plaintext)
# 2. Gere o hash: echo -n "$WAHA_API_KEY" | shasum -a 512 | awk '{print $1}'
# 3. Cole esse hash em WAHA_API_KEY abaixo (NÃO o plaintext)
# 4. docker compose up -d
# 5. Acesse http://localhost:3030/dashboard/ (UI do WAHA Plus)
# (host port 3030 — :3000 fica reservado pra outros dev tools como Remotion)
#
# Em prod, WAHA roda em VPS dedicada (Hostgator) atrás de Nginx (proxy_buffering off
# pra SSE). docker-compose aqui é DEV ONLY.
version: "3.9"
services:
waha:
image: devlikeapro/waha-plus:latest
platform: linux/amd64
container_name: deskcomm-waha
restart: unless-stopped
ports:
- "3030:3000"
environment:
# Hash SHA512 hex da api key (NÃO plaintext). Cliente envia plaintext em X-Api-Key.
WAHA_API_KEY: ${WAHA_API_KEY_SHA512}
# Webhook base URL — precisa ser pública (use ngrok/cloudflared em dev).
WHATSAPP_HOOK_URL: ${WAHA_WEBHOOK_BASE_URL}/api/v1/webhooks/waha
WHATSAPP_HOOK_EVENTS: "message,message.any,message.ack,session.status,state.change"
# HMAC SHA512 do payload, validado server-side via crypto.timingSafeEqual.
WHATSAPP_HOOK_HMAC: ${WAHA_HMAC_SECRET}
# Engine NOWEB por default (mais leve, ~150MB; estável).
WAHA_DEFAULT_ENGINE: NOWEB
# Storage de mídia: Supabase Storage via Backend (NÃO inline base64).
WAHA_DASHBOARD_ENABLED: "true"
volumes:
- waha-data:/app/.sessions
- waha-media:/app/.media
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/api/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
volumes:
waha-data:
waha-media: