Laboratório: Metabase conectado a réplica PostgreSQL do TOTVS Protheus para BI de Varejo
Você terá um ambiente Metabase rodando em Docker, conectado a uma réplica PostgreSQL que simula dados extraídos do Protheus. Em cerca de 2 horas, será possível montar dashboards reais usando queries sobre tabelas-modelo baseadas em SL1, SL2, SL4, SF2, SD2, SB1 e SA1.

Roteiro para estudo em ambiente de laboratório ou de teste. Execute apenas em equipamentos, redes e contas que você tenha autorização para usar, com backup e homologação próprios. Comandos podem causar indisponibilidade ou perda de dados. Software e marcas citados pertencem aos seus titulares. Termos de Uso.
- Duração estimada
- 120 min
- Passos
- 11
- Validações
- 5
- Versões da documentação consultada
- PostgreSQL 16 · Metabase v0.48.7 · Docker a versão estável atual
O objetivo é demonstrar, de ponta a ponta, como construir um ambiente de BI seguro e reprodutível para análise de vendas de varejo, sem acesso direto ao banco de produção do Protheus. Você irá simular a extração dos dados para PostgreSQL, configurar o Metabase em Docker, importar o driver JDBC necessário e criar consultas reais sobre um esquema didático inspirado nas tabelas do Protheus. O laboratório enfatiza boas práticas de segurança, isolamento e uso de dados apenas em leitura.
Topologia
O Metabase (em Docker, IP 192.168.56.10) conecta-se a um PostgreSQL (IP 192.168.56.11) que contém uma réplica extraída do Protheus. O acesso é somente leitura. O usuário BI acessa o Metabase via navegador em http://192.168.56.10:3000. Não há conexão direta ao banco Protheus de produção.
+------------+ +---------------+ +----------------+
| Navegador | <--> | Metabase | <--> | PostgreSQL |
| (BI User) | | (Docker) | | (Replica) |
|192.168.56.1| |192.168.56.10 | |192.168.56.11 |
+------------+ +---------------+ +----------------+
Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM ou PC para PostgreSQL | 1 vCPU, 2GB RAM, porta 5432 aberta, Ubuntu 22.04 ou superior |
| VM ou PC para Metabase (Docker) | 1 vCPU, 2GB RAM, porta 3000 aberta, Ubuntu 22.04 ou superior |
| PostgreSQL | PostgreSQL License · 16 |
| Metabase | AGPLv3 · v0.48.7 |
| Docker | Apache 2.0 · a versão estável atual |
Roteiro
- Preparar a VM do PostgreSQL
Instale o PostgreSQL na VM dedicada. Isso isola a réplica e protege o ambiente de produção.
sudo apt update && sudo apt install postgresql-16O que você deve ver: Serviço postgresql ativo e escutando na porta 5432.
- Criar usuário e banco para BI
Crie um usuário de leitura e um banco chamado bi_varejo. Isso limita o acesso e separa o ambiente analítico.
sudo -u postgres psql -c "CREATE USER bi_readonly WITH PASSWORD 'SenhaForteAqui';" sudo -u postgres psql -c "CREATE DATABASE bi_varejo OWNER bi_readonly;"O que você deve ver: Usuário e banco criados sem erro.
- Importar esquema didático de simulação
Crie as tabelas-modelo inspiradas em SL1, SL2, SL4, SF2, SD2, SB1 e SA1. Use o esquema bi_varejo para simular a extração do Protheus.
psql -U bi_readonly -d bi_varejo -h localhostO que você deve ver: Prompt do psql conectado ao banco bi_varejo.
- Criar tabelas de simulação
Execute o SQL abaixo para criar as tabelas. Isso permite consultas reais sem expor o dicionário do fabricante.
CREATE SCHEMA IF NOT EXISTS bi_varejo; CREATE TABLE bi_varejo.fato_venda ( id SERIAL PRIMARY KEY, filial VARCHAR(4), num_venda VARCHAR(12), data_venda DATE, id_cliente INTEGER, valor_total NUMERIC(14,2), desconto NUMERIC(14,2) ); CREATE TABLE bi_varejo.fato_venda_item ( id SERIAL PRIMARY KEY, id_venda INTEGER REFERENCES bi_varejo.fato_venda(id), id_produto INTEGER, quantidade NUMERIC(10,2), valor_unitario NUMERIC(14,2), valor_item NUMERIC(14,2), desconto_item NUMERIC(14,2) ); CREATE TABLE bi_varejo.dim_produto ( id SERIAL PRIMARY KEY, codigo VARCHAR(20), descricao VARCHAR(100), categoria VARCHAR(50) ); CREATE TABLE bi_varejo.dim_cliente ( id SERIAL PRIMARY KEY, codigo VARCHAR(20), nome VARCHAR(100), segmento VARCHAR(50) ); CREATE TABLE bi_varejo.dim_loja ( id SERIAL PRIMARY KEY, codigo VARCHAR(10), nome VARCHAR(100), cidade VARCHAR(50) );O que você deve ver: Tabelas criadas sem erro no schema bi_varejo.
- Popular tabelas com dados de exemplo
Insira dados fictícios para simular vendas, produtos e clientes. Isso permite testar queries e dashboards.
INSERT INTO bi_varejo.dim_produto (codigo, descricao, categoria) VALUES ('PROD01','Arroz 5kg','Alimentos'),('PROD02','Feijão 1kg','Alimentos'); INSERT INTO bi_varejo.dim_cliente (codigo, nome, segmento) VALUES ('CLI01','Maria Silva','Varejo'),('CLI02','João Souza','Atacado'); INSERT INTO bi_varejo.fato_venda (filial,num_venda,data_venda,id_cliente,valor_total,desconto) VALUES ('01','00000001','2024-06-01',1,100.00,5.00); INSERT INTO bi_varejo.fato_venda_item (id_venda,id_produto,quantidade,valor_unitario,valor_item,desconto_item) VALUES (1,1,2,20.00,40.00,2.00),(1,2,1,60.00,60.00,3.00);O que você deve ver: Linhas inseridas nas tabelas de simulação.
- Configurar acesso remoto seguro ao PostgreSQL
Edite o pg_hba.conf para liberar acesso apenas do IP do Metabase. Isso reduz a superfície de ataque.
sudo nano /etc/postgresql/16/main/pg_hba.conf # Adicione: host bi_varejo bi_readonly 192.168.56.10/32 md5 sudo systemctl restart postgresqlO que você deve ver: Conexão do Metabase será permitida apenas pelo IP autorizado.
- Preparar a VM do Metabase com Docker
Instale Docker e crie um diretório para plugins. O Metabase será isolado em container.
sudo apt update && sudo apt install docker.io sudo mkdir -p /opt/metabase/pluginsO que você deve ver: Docker instalado e diretório plugins criado.
- Baixar e rodar o Metabase em Docker
Use a imagem oficial. Monte o diretório de plugins para drivers JDBC.
sudo docker run -d -p 3000:3000 \ -v /opt/metabase/plugins:/plugins \ --name metabase \ -e MB_PLUGINS_DIR=/plugins \ metabase/metabase:v0.48.7O que você deve ver: Container Metabase rodando e acessível na porta 3000.
- Conectar o Metabase ao PostgreSQL
No navegador, acesse o Metabase, crie o admin e adicione a fonte de dados PostgreSQL apontando para 192.168.56.11, banco bi_varejo, usuário bi_readonly. Isso permite explorar os dados simulados.
O que você deve ver: Fonte de dados conectada sem erro, tabelas bi_varejo visíveis no Metabase.
- Criar consulta SQL realista (curva ABC)
No Metabase, crie uma consulta SQL para curva ABC de produtos. Isso exemplifica análise de vendas de varejo.
SELECT p.descricao, SUM(i.valor_item) AS total_vendido FROM bi_varejo.fato_venda_item i JOIN bi_varejo.dim_produto p ON i.id_produto = p.id GROUP BY p.descricao ORDER BY total_vendido DESC;O que você deve ver: Tabela com produtos ordenados pelo total vendido.
- Montar dashboard de vendas
No Metabase, crie um dashboard e adicione a consulta criada. Isso entrega visualização pronta para o usuário de negócio.
O que você deve ver: Dashboard exibindo gráfico de vendas por produto.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar conexão do Metabase ao PostgreSQL | docker logs metabase | grep 'Successfully connected' | Mensagem de conexão bem-sucedida nos logs. |
| Listar tabelas no Metabase | Tabelas do schema bi_varejo aparecem na interface. | |
| Executar consulta SQL de curva ABC | Resultados coerentes com os dados inseridos. | |
| Acessar dashboard via navegador | Dashboard carrega sem erro e exibe gráficos. | |
| Testar usuário de leitura | psql -U bi_readonly -d bi_varejo -h 192.168.56.11 | Usuário conecta e não consegue executar comandos de escrita. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Metabase não conecta ao PostgreSQL | Firewall bloqueando porta 5432 ou pg_hba.conf não permite IP do Metabase | Verifique regras do firewall e configuração do pg_hba.conf. |
| Erro ao criar tabelas no PostgreSQL | Permissões insuficientes ou erro de sintaxe SQL | Confirme que está usando o usuário correto e revise o SQL. |
| Dashboard não exibe dados | Consulta SQL incorreta ou tabelas vazias | Revise a consulta e confirme se há dados nas tabelas. |
| Driver JDBC ausente para Oracle | Tentando conectar Metabase a Oracle sem ojdbc8.jar | Baixe o driver oficial e coloque em /opt/metabase/plugins, reinicie o container. |
| Usuário BI consegue alterar dados | Permissão de escrita concedida por engano | Revogue permissões de escrita do usuário bi_readonly. |
Segurança e hardening
- Nunca use usuário de produção para BI; sempre crie usuário restrito a leitura.
- Libere acesso ao PostgreSQL apenas para o IP do Metabase.
- Não exponha porta 3000 do Metabase para a internet sem autenticação forte.
- Use senha forte para o usuário bi_readonly.
- Mantenha Docker e PostgreSQL atualizados com patches de segurança.
- Não armazene dados reais de clientes sem consentimento e adequação à LGPD.
Checklist final
Referências
- PostgreSQL: Official Documentation · PostgreSQL Global Development Group (postgresql.org)
- TOTVS Protheus - Banco de dados homologados · Tdn.totvs (tdn.totvs.com)
- TOTVS Protheus - DBAccess - Banco de dados · Tdn.totvs (tdn.totvs.com)
- Publicado
- 11/09/2026
- Última revisão
- 14/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 3 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
