Pular para conteúdo

⚙️ Preparação do Ambiente e Variáveis

Antes de iniciar o deploy, é necessário configurar as variáveis de ambiente que regem o comportamento da aplicação. O e-SUS AF utiliza uma gama extensa de configurações para suportar alta disponibilidade e integrações governamentais.


1. Variáveis do Servidor (API) 🖥️

A API (NestJS) consome variáveis de ambiente para gerenciar a conexão com infraestrutura e serviços externos.

1.1 Infraestrutura de Banco de Dados

Variável Descrição Padrão
DB_DIALECT Dialeto do banco (mysql, mariadb, postgres, oracle) postgres
DB_HOST Host do servidor de banco de dados localhost
DB_PORT Porta do banco de dados 5432
DB_USERNAME Usuário de acesso ao banco postgres
DB_PASSWORD Senha de acesso ao banco -
DB_DATABASE Nome do banco de dados/instância esusaf
DB_SCHEMA Schema principal do banco dbesusaf
DB_POOL_MAX Limite máximo do pool de conexões (Prisma ORM) 20
DB_POOL_MIN Limite mínimo do pool de conexões (Prisma ORM) 5
DB_LOGGING Ativar log de queries no banco de dados (true / false) false
DB_SSL_CERTPATH Caminho para o certificado SSL do banco (se houver) -
DB_SSL_REJECT_UNAUTHORIZED Se deve rejeitar certificados não assinados true

1.2 Cache e Sessão (Redis)

Variável Descrição Padrão
REDIS_HOST Host do Redis localhost
REDIS_PORT Porta do Redis 6379
REDIS_PASSWORD Senha do Redis -
REDIS_TLS_ENABLED Ativar conexão via TLS/SSL false
REDIS_TLS_REJECT_UNAUTHORIZED Rejeitar certificados TLS não reconhecidos true
REDIS_CLUSTER_ENABLED Ativar suporte a Cluster Mode false
REDIS_CLUSTER_NODES Lista de nós (host:port,host:port) -
REDIS_CACHE_TIMEOUT_MS Timeout limite (ms) para operações de leitura/escrita no cache Redis 200
REDIS_CACHE_INVALIDATE_TIMEOUT_MS Timeout limite (ms) para invalidação de cache por prefixo SCAN/DEL 2000
ENABLE_STOCK_REPORT_CACHE Ativa cache-aside Redis para o relatório de posição de estoque (true/false) false
STOCK_REPORT_CACHE_TTL_SECONDS Tempo de vida (TTL em segundos) dos dados no cache do relatório de estoque 300

1.3 Segurança e Tokens (JWT)

Variável Descrição Exemplo/Padrão
SECRET_KEY Chave secreta global para hash e criptografia chave_longa_aleatoria
KEY_PATH Pasta das chaves assimétricas ES512 /app/chaves
JWT_EXPIRES_IN Tempo de expiração do Access Token 15m
JWT_REFRESH_EXPIRES_IN Tempo de expiração do Refresh Token 1h

1.4 E-mail (SMTP)

Variável Descrição Exemplo
MAIL_HOST Servidor SMTP de saída smtp.email.sa-saopaulo-1.oci.oraclecloud.com
MAIL_PORT Porta SMTP — 587 para STARTTLS, 465 para SSL implícito 587
MAIL_USER Usuário de autenticação no servidor SMTP ocid1.user.oc1...
MAIL_PASS Senha de autenticação no servidor SMTP -
MAIL_FROM Endereço de remetente exibido nas mensagens no-reply.esusaf@dominio.gov.br
MAIL_SECURE true força SSL implícito (porta 465); false usa STARTTLS false
MAIL_PREVIEW_MODE Quando true, loga o e-mail no console em vez de enviá-lo (útil em dev) false

1.5 Autenticação Gov.br

O e-SUS AF integra com o Login Único Gov.br via protocolo OIDC. O Gov.br disponibiliza dois ambientes — as credenciais (CLIENT_ID / CLIENT_SECRET) são emitidas separadamente para cada um pelo portal de gestão do Gov.br.

Variável Descrição Staging Produção
GOV_BR_PROVIDER Identificador do provedor OIDC govbr govbr
GOV_BR_SERVICE Nome do serviço cadastrado no painel Gov.br — —
GOV_BR_CLIENT_ID Client ID gerado no cadastro da aplicação — —
GOV_BR_CLIENT_SECRET Client Secret gerado no cadastro da aplicação — —
GOV_BR_SCOPE Escopos OIDC solicitados openid+email+profile openid+email+profile
GOV_BR_CALLBACK_URL URL de retorno após autenticação (deve ser registrada no painel Gov.br) https://[dominio]/auth/callback/govbr https://[dominio]/auth/callback/govbr
GOV_BR_LOGIN_ROUTE Rota interna que inicia o fluxo de redirecionamento /auth/login /auth/login
GOV_BR_SSO_LOGOUT_URL URL de logout do SSO Gov.br https://sso.staging.acesso.gov.br/logout https://sso.acesso.gov.br/logout

1.6 Integrações de Saúde

Variáveis que controlam a comunicação com sistemas federais do Ministério da Saúde. Quando a integração não estiver habilitada no ambiente, os valores podem ser deixados como placeholders.

Variável Descrição Exemplo
BIAF_URL URL base da API BIAF (Banco de Dados de Insumos da AF) BIAF_URL
BIAF_CLIENT_ID Client ID para autenticação na API BIAF BIAF_CLIENT_ID
BIAF_APIKEY API Key de acesso à API BIAF BIAF_APIKEY
BIAF_STATUS Habilita (active) ou desabilita (inactive) a integração BIAF BIAF_STATUS
SI_BNAFAR_BASE_URL URL base do SiBnafar — serviço de transmissão ao Ministério da Saúde -
SI_BNAFAR_AUTH_URL URL de autenticação do SiBnafar -
SOAP_LOG_PAYLOAD Log do corpo de chamadas SOAP (CNS/SiBnafar), truncado em 2048 chars (1 para ativar; desativado por padrão) 1

1.7 Observabilidade (Telemetria)

Variável Descrição Exemplo / Padrão
ENABLE_TELEMETRY Ativar OpenTelemetry (OTEL) e métricas Prometheus (1 ativa) 1
METRICS_EXPORTER_PORT Porta para raspagem do endpoint /metrics do Prometheus 8081
SERVICE_NAME Nome do serviço para traces e métricas api_esusaf
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT Endpoint OTLP HTTP para exportação de traces http://localhost:4318/v1/traces
OTEL_EXPORTER_OTLP_ENDPOINT Endpoint de fallback OTLP do coletor OTEL http://otel:4317
TELEMETRY_COLLECTOR_URL URL alternativa do coletor de telemetria -
LOG_LEVEL Nível de log (error, warn, info, debug, silly) info
USE_JSON_LOGGER Formata logs como JSON estruturado (recomendado para coleta via OTEL) false

1.8 Variáveis Gerais

Variável Descrição Padrão
PORT Porta em que a API escuta 3001
NODE_ENV Ambiente de execução (production, development) production
API_URL URL pública da API (usada em links gerados pelo servidor) https://esusaf.dominio.gov.br/api
CLIENT_LOGIN_ROUTE URL do frontend para redirecionamento pós-autenticação https://esusaf.dominio.gov.br
DEFAULT_PASSWORD Senha padrão gerada para novos usuários -
DEFAULT_LANGUAGE Idioma padrão da aplicação pt-BR
I18N_FALLBACK_LANGUAGE Idioma de fallback para internacionalização pt-BR

2. Variáveis do Cliente (Web) 🌐

O frontend (Vite) utiliza placeholders injetados em tempo de execução no container Nginx. Para deploys em Docker/K8s, as variáveis devem seguir o prefixo VAR__.

Variável Runtime Variável Interna (VITE) Descrição Exemplo
VAR__API_URL VITE_APP_API_URL URL pública da API e-SUS AF https://esusaf.ifpb.edu.br
VAR__AMBIENTE_ESUS VITE_AMBIENTE_ESUS Identidade visual/rotas: pr (Produção), tr (Treino), hm (Homol), dv (Dev). Para desativar o módulo de oncologia, utilizar pr. pr
VAR__APP_STATUS VITE_APP_STATUS active, maintenance ou construction active
VAR__FORCE_PROD_MODE VITE_APP_FORCE_PROD_MODE Força comportamento de produção (true/false) false
VAR__CONTEXT - Caminho base da URL (ex: /portal) —
VAR__GOV_BR_LOGOUT_URL VITE_APP_GOV_BR_LOGOUT_URL URL de logout do SSO Gov.br — staging ou produção conforme o ambiente https://sso.staging.acesso.gov.br/logout
VAR__GOV_BR_LOGOUT_CALLBACK_ROUTE VITE_APP_GOV_BR_LOGOUT_CALLBACK_ROUTE URL completa de retorno após o logout Gov.br (deve ser registrada no painel Gov.br) https://esusaf.ifpb.edu.br/auth/callback/govbrlogout
VAR__TIMEOUT_CHECK_INTERVAL_MS VITE_TIMEOUT_CHECK_INTERVAL_MS Intervalo (ms) para verificação de timeout de sessão —

3. Criptografia Assimétrica e Réplicas 🔑

O e-SUS AF utiliza o algoritmo ES512 (Curva secp521r1) para assinar tokens JWT.

3.1 Compartilhamento entre Réplicas

Em ambientes com múltiplas instâncias da API, todas as réplicas devem obrigatoriamente ler as mesmas chaves.

  • Configuração: Defina a variável KEY_PATH e monte um volume compartilhado (PV/PVC ou Bind) contendo os arquivos private_key.pem e public_key.pem.

3.2 Geração Manual

# Gerar par de chaves ES512
openssl ecparam -name secp521r1 -genkey -noout -out private_key.pem
openssl ec -in private_key.pem -pubout -out public_key.pem