Laboratório: Metabase em produção com PostgreSQL via Docker Compose
Você terá um ambiente Metabase funcional, conectado a um banco PostgreSQL, acessível via navegador, pronto para criar dashboards. O laboratório leva cerca de 2 horas.

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
- 12
- Validações
- 4
- Versões da documentação consultada
- Metabase a versão estável atual · PostgreSQL a versão estável atual · Docker a versão estável atual · Docker Compose a versão estável atual
Este laboratório ensina como implantar o Metabase open source em uma VM Linux, usando Docker Compose para orquestrar o Metabase e um banco PostgreSQL dedicado. Você aprenderá a configurar volumes persistentes, variáveis de ambiente seguras, criar o usuário inicial, conectar o Metabase ao banco e validar o acesso via web. O objetivo é entender o fluxo de implantação e os pontos críticos de operação segura.
Topologia
Uma VM Linux (exemplo: 192.168.56.10) roda dois containers: um com PostgreSQL, outro com Metabase. O Metabase conecta-se ao PostgreSQL pela rede interna do Docker. O acesso ao Metabase é feito via navegador em outro dispositivo na mesma rede, usando a porta 3000.
┌────────────┐ ┌─────────────┐
│ Usuário │ <───> │ Metabase │
│(192.168.56.1)│ │(192.168.56.10:3000)│
└────────────┘ │ │
│ │
┌─────▼─────┐
│ PostgreSQL │
│(Docker net)│
└────────────┘Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM Linux (Ubuntu 22.04 ou Debian 12) | 2 vCPU, 4GB RAM, 10GB disco, acesso root, porta 3000 liberada |
| Metabase | AGPL v3 · a versão estável atual |
| PostgreSQL | PostgreSQL License · a versão estável atual |
| Docker | Apache 2.0 · a versão estável atual |
| Docker Compose | Apache 2.0 · a versão estável atual |
Roteiro
- Preparar a VM Linux
Atualize os pacotes da VM para garantir segurança e compatibilidade.
sudo apt update && sudo apt upgrade -yO que você deve ver: Sistema atualizado sem erros.
- Instalar Docker e Docker Compose
O Metabase e o PostgreSQL serão executados em containers. Instale Docker e Docker Compose para facilitar o gerenciamento.
sudo apt install docker.io docker-compose -yO que você deve ver: Comando 'docker --version' e 'docker-compose --version' retornam versões instaladas.
- Criar diretórios de persistência
Crie pastas para persistir dados do PostgreSQL e do Metabase. Isso evita perda de dados ao reiniciar containers.
mkdir -p ~/metabase_lab/postgres_data mkdir -p ~/metabase_lab/metabase_dataO que você deve ver: Diretórios criados em ~/metabase_lab.
- Criar arquivo docker-compose.yml
Monte um arquivo docker-compose.yml para orquestrar os serviços Metabase e PostgreSQL, com volumes persistentes e variáveis de ambiente seguras.
cat > ~/metabase_lab/docker-compose.yml <<EOF version: '3.8' services: db: image: postgres:15 container_name: metabase-postgres restart: unless-stopped environment: POSTGRES_DB: metabase POSTGRES_USER: metabase POSTGRES_PASSWORD: m3t4b453_pwd volumes: - ./postgres_data:/var/lib/postgresql/data networks: - metanet metabase: image: metabase/metabase:latest container_name: metabase-app restart: unless-stopped environment: MB_DB_TYPE: postgres MB_DB_DBNAME: metabase MB_DB_PORT: 5432 MB_DB_USER: metabase MB_DB_PASS: m3t4b453_pwd MB_DB_HOST: db ports: - 3000:3000 volumes: - ./metabase_data:/metabase-data networks: - metanet networks: metanet: driver: bridge EOFO que você deve ver: Arquivo docker-compose.yml criado em ~/metabase_lab.
- Iniciar os containers
Suba os containers em modo destacado. O Metabase irá inicializar e conectar ao PostgreSQL automaticamente.
cd ~/metabase_lab docker-compose up -dO que você deve ver: Containers 'metabase-postgres' e 'metabase-app' em execução.
- Verificar logs de inicialização
Acompanhe os logs do Metabase para garantir que subiu sem erros e conectou ao banco.
docker logs -f metabase-appO que você deve ver: Mensagens de inicialização do Metabase e confirmação de conexão ao PostgreSQL.
- Acessar a interface web do Metabase
Abra o navegador e acesse http://<IP-da-VM>:3000 para iniciar o setup.
O que você deve ver: Tela de configuração inicial do Metabase.
- Configurar usuário administrador
Crie o usuário admin do Metabase. Isso define quem gerencia o ambiente.
O que você deve ver: Usuário criado e acesso ao painel principal do Metabase.
- Conectar uma base de dados de exemplo
Adicione uma fonte de dados (pode ser o próprio PostgreSQL criado). Isso permite criar perguntas e dashboards.
O que você deve ver: Base de dados conectada e disponível no Metabase.
- Criar uma pergunta simples
No Metabase, crie uma pergunta (query) simples para validar a conexão e visualizar dados.
O que você deve ver: Resultado da consulta exibido na interface.
- Criar um dashboard
Monte um dashboard básico adicionando a pergunta criada. Isso valida a funcionalidade de BI.
O que você deve ver: Dashboard criado e visualizável.
- Testar persistência dos dados
Reinicie os containers e verifique se as configurações e dashboards permanecem.
docker-compose down docker-compose up -dO que você deve ver: Ambiente volta ao ar com dados preservados.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Acessar http://<IP-da-VM>:3000 de outro dispositivo na rede | Tela de login do Metabase aparece | |
| Executar 'docker ps' na VM | docker ps | Containers 'metabase-app' e 'metabase-postgres' em estado 'Up' |
| Criar e visualizar uma pergunta no Metabase | Resultado da consulta exibido sem erro | |
| Reiniciar containers e acessar novamente | docker-compose down && docker-compose up -d | Dashboards e configurações permanecem após reinício |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Acesso negado ao Metabase na porta 3000 | Firewall bloqueando a porta | Liberar porta 3000/tcp no firewall da VM |
| Erro de conexão ao banco no log do Metabase | Variáveis de ambiente do banco incorretas | Verificar usuário, senha e nome do serviço no docker-compose.yml |
| Dados e dashboards somem após reinício | Volumes não persistentes | Conferir se os volumes estão mapeados corretamente no docker-compose.yml |
| Containers não sobem | Porta 5432 ou 3000 já em uso | Parar serviços conflitantes ou alterar mapeamento de portas |
Segurança e hardening
- Altere as senhas padrão do PostgreSQL e do Metabase.
- Não exponha a porta 3000 para a internet sem proxy reverso e autenticação forte.
- Restrinja o acesso aos volumes de dados.
- Mantenha Docker e containers sempre atualizados.
- Consulte a documentação do Metabase para variáveis de ambiente sensíveis.
Checklist final
Referências
- Documentação oficial do Metabase: Deploy with Docker · Metabase (metabase.com)
- Documentação oficial do PostgreSQL · PostgreSQL Global Development Group (postgresql.org)
- Documentação oficial do Docker Compose · Docker, Inc. (docs.docker.com)
- Repositório oficial do Metabase no GitHub · GitHub (repositório oficial do projeto) (github.com)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 4 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
