O projeto utiliza @nestjs/config e Joi para validação de variáveis de ambiente.
O arquivo .env deve estar na raiz do projeto.
NODE_ENV:development,productionoutest. Padrão:developmentPORT: Porta do servidor. Padrão:3000APP_NAME: Nome da aplicação (opcional)API_PREFIX: Prefixo global das rotas. Padrão:api— todas as rotas ficam em/api/*(ex.:/api/auth/login). Swagger UI:/api/docs
DB_HOST,DB_PORT,DB_USERNAME,DB_PASSWORD,DB_DATABASEDB_SSL:truepara TLS (obrigatório em produção)DB_LOGGING:truepara logs SQL (opcional)DB_SYNCHRONIZE:truepara auto-sync (apenas dev)DB_POOL_MAX: Máximo do pool de conexões. Padrão:20
Em produção, synchronize é sempre false; use migrations.
PRIVATE_KEY: Chave privada RSA em formato PEM (assina tokens)PUBLIC_KEY: Chave pública RSA em formato PEM (verifica tokens)
Gerar chaves:
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -pubout -out public.pemNo .env, cole o conteúdo PEM em uma linha, substituindo quebras por \n. Ambas obrigatórias em produção.
ALLOWED_ORIGINS: URLs separadas por vírgula (ex:https://admin.example.com). Obrigatório em produção.
REDIS_HOST,REDIS_PORT(padrão: 6379)REDIS_PASSWORD: Opcional; quando definida, habilita AUTH no Redis e é repassada ao Keyv
Sem REDIS_HOST, o cache RBAC e a denylist JWT usam fallback in-memory (por processo). Defina REDIS_HOST em todo deploy com múltiplas réplicas.
Com Redis habilitado, o cache usa dois níveis: L1 em processo (KeyvCacheableMemory) mais Redis L2 para invalidação compartilhada entre réplicas.
RESEND_API_KEY,RESEND_FROM_EMAIL,RESEND_FROM_NAME(opcional)
O schema Joi em src/config/validation.schema.ts:
- Falha cedo na inicialização com todos os erros de validação
- Exige
PRIVATE_KEYePUBLIC_KEYquandoNODE_ENV=production - Exige
DB_SSL=trueem produção - Exige
ALLOWED_ORIGINSem produção (formato de URLs)