Entrar ou criar conta

Laboratório em bancada

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.

Metabase do zero ao BI corporativo
Ligado ao treinamento Metabase do zero ao BI corporativo
Duração estimada
120 min
Passos
12
Validações
4
Objetivo

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.

┌────────────┐        ┌─────────────┐n│  Usuário   │ <───> │   Metabase  │n│(192.168.56.1)│      │(192.168.56.10:3000)│n└────────────┘        │   │n                      │   │n                ┌─────▼─────┐n                │ PostgreSQL │n                │(Docker net)│n                └────────────┘

Equipamentos e software

ItemRequisito, licença ou versão
VM Linux (Ubuntu 22.04 ou Debian 12)2 vCPU, 4GB RAM, 10GB disco, acesso root, porta 3000 liberada
MetabaseAGPL v3 · a versão estável atual
PostgreSQLPostgreSQL License · a versão estável atual
DockerApache 2.0 · a versão estável atual
Docker ComposeApache 2.0 · a versão estável atual

Roteiro

  1. Preparar a VM Linux

    Atualize os pacotes da VM para garantir segurança e compatibilidade.

    sudo apt update && sudo apt upgrade -y

    O que você deve ver: Sistema atualizado sem erros.

  2. 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 -y

    O que você deve ver: Comando 'docker --version' e 'docker-compose --version' retornam versões instaladas.

  3. 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_datanmkdir -p ~/metabase_lab/metabase_data

    O que você deve ver: Diretórios criados em ~/metabase_lab.

  4. 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 <<EOFnversion: '3.8'nservices:n  db:n    image: postgres:15n    container_name: metabase-postgresn    restart: unless-stoppedn    environment:n      POSTGRES_DB: metabasen      POSTGRES_USER: metabasen      POSTGRES_PASSWORD: m3t4b453_pwdn    volumes:n      - ./postgres_data:/var/lib/postgresql/datan    networks:n      - metanetn  metabase:n    image: metabase/metabase:latestn    container_name: metabase-appn    restart: unless-stoppedn    environment:n      MB_DB_TYPE: postgresn      MB_DB_DBNAME: metabasen      MB_DB_PORT: 5432n      MB_DB_USER: metabasen      MB_DB_PASS: m3t4b453_pwdn      MB_DB_HOST: dbn    ports:n      - 3000:3000n    volumes:n      - ./metabase_data:/metabase-datan    networks:n      - metanetnnetworks:n  metanet:n    driver: bridgenEOF

    O que você deve ver: Arquivo docker-compose.yml criado em ~/metabase_lab.

  5. Iniciar os containers

    Suba os containers em modo destacado. O Metabase irá inicializar e conectar ao PostgreSQL automaticamente.

    cd ~/metabase_labndocker-compose up -d

    O que você deve ver: Containers 'metabase-postgres' e 'metabase-app' em execução.

  6. Verificar logs de inicialização

    Acompanhe os logs do Metabase para garantir que subiu sem erros e conectou ao banco.

    docker logs -f metabase-app

    O que você deve ver: Mensagens de inicialização do Metabase e confirmação de conexão ao PostgreSQL.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.

  12. Testar persistência dos dados

    Reinicie os containers e verifique se as configurações e dashboards permanecem.

    docker-compose downndocker-compose up -d

    O que você deve ver: Ambiente volta ao ar com dados preservados.

Como saber que funcionou

TesteComandoCritério
Acessar http://<IP-da-VM>:3000 de outro dispositivo na redeTela de login do Metabase aparece
Executar 'docker ps' na VMdocker psContainers 'metabase-app' e 'metabase-postgres' em estado 'Up'
Criar e visualizar uma pergunta no MetabaseResultado da consulta exibido sem erro
Reiniciar containers e acessar novamentedocker-compose down && docker-compose up -dDashboards e configurações permanecem após reinício

Troubleshooting

SintomaCausa provávelCorreção
Acesso negado ao Metabase na porta 3000Firewall bloqueando a portaLiberar porta 3000/tcp no firewall da VM
Erro de conexão ao banco no log do MetabaseVariáveis de ambiente do banco incorretasVerificar usuário, senha e nome do serviço no docker-compose.yml
Dados e dashboards somem após reinícioVolumes não persistentesConferir se os volumes estão mapeados corretamente no docker-compose.yml
Containers não sobemPorta 5432 ou 3000 já em usoParar 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

  1. Documentação oficial do Metabase: Deploy with Docker
  2. Documentação oficial do PostgreSQL
  3. Documentação oficial do Docker Compose
  4. Repositório oficial do Metabase no GitHub