Tema
Variáveis de Ambiente
Lista completa de todas as variáveis usadas pelo sistema com descrição de cada uma.
Secrets
Nunca commite arquivos com valores reais. Em produção, todos os secrets vêm do Azure Key Vault — o deploy.sh faz isso automaticamente.
Backend (.env.secrets)
Banco de dados
| Variável | Obrigatória | Descrição |
|---|---|---|
DATABASE_URL | Sim | Connection string PostgreSQL. Formato: postgresql://user:pass@host:5432/db?sslmode=disable |
POSTGRES_USER | Sim | Usuário do PostgreSQL |
POSTGRES_PASSWORD | Sim | Senha do PostgreSQL |
POSTGRES_DB | Sim | Nome do banco de dados |
Redis
| Variável | Obrigatória | Descrição |
|---|---|---|
REDIS_HOST | Sim | Host do Redis (ex: crm-galdix-redis-1 em produção) |
REDIS_PORT | Não | Porta do Redis. Padrão: 6379 |
REDIS_PASSWORD | Sim | Senha do Redis |
Autenticação (Clerk)
| Variável | Obrigatória | Descrição |
|---|---|---|
CLERK_SECRET_KEY | Sim | Chave secreta do Clerk (começa com sk_) |
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY | Sim | Chave pública do Clerk (começa com pk_) |
CLERK_WEBHOOK_SECRET | Sim | Secret para verificar webhooks do Clerk (Svix) |
Segurança interna
| Variável | Obrigatória | Descrição |
|---|---|---|
MASTER_ENCRYPTION_KEY | Sim | Chave mestra para criptografia AES-256-GCM de secrets no banco (SMTP password, tokens WhatsApp) |
INTERNAL_API_KEY | Sim | Chave para comunicação interna entre serviços (guards de endpoints internos) |
JWT_SECRET | Sim | Secret para assinatura de JWTs internos |
WhatsApp / Meta
| Variável | Obrigatória | Descrição |
|---|---|---|
META_APP_ID | Sim | ID do App no Facebook Developers |
META_APP_SECRET | Sim | Secret do App no Facebook Developers (validação de webhooks) |
Azure Key Vault (produção)
| Variável | Obrigatória em PRD | Descrição |
|---|---|---|
AZURE_KEYVAULT_URL | Sim | URL do Key Vault (ex: https://nome.vault.azure.net/) |
AZURE_TENANT_ID | Sim | ID do tenant Azure |
AZURE_CLIENT_ID | Sim | ID do client (service principal) |
AZURE_CLIENT_SECRET | Sim | Secret do client Azure AD |
Armazenamento (MinIO)
| Variável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
MINIO_ENDPOINT | Não | http://minio:9000 | Endpoint do MinIO |
MINIO_PUBLIC_URL | Não | https://minio.galdix.com.br | URL pública para acesso aos arquivos |
MINIO_BUCKET | Não | crm-templates | Bucket padrão |
MINIO_ACCESS_KEY | Sim | — | Chave de acesso MinIO |
MINIO_SECRET_KEY | Sim | — | Secret MinIO |
Aplicação
| Variável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
PORT | Não | 3001 | Porta que o backend escuta |
NODE_ENV | Sim | — | development ou production |
FRONTEND_URL | Sim | — | URL do frontend (ex: https://crm.galdix.com.br) — usada para CORS e redirecionamentos de convite |
Sync ERP
| Variável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
DISABLE_SYNC_CRON | Não | false | Se true, desabilita crons automáticos de sync com o ERP |
ERP_SYNC_LOCK_TTL_SECONDS | Não | 7200 | TTL do lock distribuído de sync (2h) |
Bull Board (Dashboard de Filas)
| Variável | Obrigatória | Descrição |
|---|---|---|
ENABLE_BULLBOARD | Não | Se true, habilita /admin/queues |
BULLBOARD_USER | Se ENABLE=true | Usuário basic auth para o BullBoard |
BULLBOARD_PASS | Se ENABLE=true | Senha basic auth para o BullBoard |
Chatwoot
| Variável | Obrigatória | Descrição |
|---|---|---|
CHATWOOT_CABLE_PREFIX | Não | Prefixo do ActionCable do Chatwoot. Padrão: chatwoot_production_action_cable |
Surveys
| Variável | Obrigatória | Descrição |
|---|---|---|
SURVEY_BASE_URL | Não | URL base para links de pesquisa. Padrão: https://galdix.com.br |
SURVEY_SECRET | Sim | Secret HMAC para assinar tokens de pesquisa de satisfação |
BACKEND_URL | Não | URL pública do backend. Padrão: https://apicrm.galdix.com.br |
Frontend (variáveis NEXT_PUBLIC_*)
Essas variáveis são injetadas no build da imagem Docker — não em runtime. Mudar exige rebuild.
| Variável | Descrição |
|---|---|
NEXT_PUBLIC_API_BASE_URL | URL pública do backend (ex: https://apicrm.galdix.com.br) |
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY | Chave pública do Clerk — injetada em build via Azure Key Vault |
NEXT_PUBLIC_META_APP_ID | ID do App Meta para o flow de onboarding WhatsApp |
NEXT_PUBLIC_META_CONFIG_ID | Config ID Meta para embedded signup |
Por que algumas vars do frontend exigem rebuild?
Variáveis NEXT_PUBLIC_* são embutidas no bundle JavaScript durante o next build. O deploy.sh busca o CLERK_PUBLISHABLE_KEY do Azure Key Vault antes de buildar para garantir o valor correto. Usar docker compose manual ignora essa etapa → Clerk quebra.