Filtragem de banco de dados Odoo e roteamento multidomínio
Mecanismo de filtragem de banco de dados do Odoo para selecionar o banco de dados associado ao nome de host da requisição HTTP recebida.
Desafio e problema
Em instâncias Odoo com múltiplos bancos de dados (multi-tenant ou multi-empresa), o comportamento nativo exige que o usuário selecione manualmente o banco na tela de login /web/database/selector. Em infraestruturas corporativas avançadas, isso expõe nomes de bancos internos e impede que domínios e subdomínios distintos (ex: clienteA.com e clienteB.com) sejam direcionados automaticamente para suas respectivas bases isoladas.
Solução aplicada
Desenvolvimento do módulo customizado odoo_dbfilter_header em Python para estender e sobrescrever a lógica de filtro de banco de dados (dbfilter) nativa do Odoo.
A solução trabalha em conjunto com o Traefik Proxy: o proxy reverso injeta um cabeçalho HTTP personalizado com o hostname original da requisição, e o módulo Odoo intercepta esse header no nível de WSGI/HTTP, isolando e conectando o usuário ao banco de dados correto sem intervenção manual.
Tecnologias e ferramentas
- Odoo 19 & Python: desenvolvimento de addon customizado e sobrescrita da lógica de roteamento de banco.
- Traefik Proxy: manipulação de requisições, injeção de headers customizados e roteamento SSL/TLS no Edge.
- Docker & Docker Compose: isolamento de rede e orquestração do ambiente multi-tenant.
- PostgreSQL: gerenciamento e segregação de múltiplos bancos de dados em uma única instância do cluster.
Resultados e valor entregue
- Experiência do Usuário (UX): redirecionamento transparente e imediato sem telas intermediárias de seleção.
- Segurança & Privacy: ocultação completa da lista de bancos de dados ativos no servidor.
- Escalabilidade Multidomínio: suporte para múltiplos domínios e marcas operando sob a mesma infraestrutura de contêineres.