Índice do diárioDockup / nota de campo
Note / self-host-metabase

Como hospedar o Metabase por conta própria em 2026: banco de dados da aplicação, TLS e backups

Um guia prático para hospedar o Metabase por conta própria, abrangendo Docker, portas, dados persistentes, TLS, segurança, backups e as falhas que impedem o uso em produção. Com verificações.

Se você já tentou hospedar o Metabase por conta própria, provavelmente conhece bem esta situação frustrante: a interface aparece, mas o banco de dados da aplicação está ausente, mesmo que os bancos de dados de origem dos dashboards continuem disponíveis. Recriar o container raramente resolve um desacordo entre URLs, estado e dependências.

Este passo a passo usa um único critério concreto de conclusão: conectar um banco de dados de exemplo somente leitura, salvar uma pergunta, criar um dashboard e entregar uma assinatura pelo canal de e-mail configurado. Cada escolha de configuração é avaliada com base nesse critério, e não apenas em um indicador verde do container.

Credenciais, funções e superfícies expostas

Faça o threat modeling da ação executada pelo Metabase, não apenas do formulário de login. Neste caso, o erro de maior risco é usar o banco de dados H2 integrado como única cópia de produção. Implemente este limite: conceda ao Metabase funções de banco de dados somente leitura sempre que possível e mantenha as permissões das coleções separadas das credenciais dos bancos de dados.

Gere MB_ENCRYPTION_SECRET_KEY uma única vez, mantenha-o fora do Git e preserve-o junto ao manifesto de recuperação, pois alterá-lo pode invalidar o estado criptografado ou assinado da aplicação. Não resolva um erro de permissão executando o container como root ou montando o host de forma ampla. Os limites de recursos também fazem parte do design de segurança quando o heap da JVM, as consultas simultâneas, o cache de resultados e a carga transferida para cada fonte de dados analíticos podem ser acionados pelos usuários.

Separe o Metabase das dependências

A menor topologia responsável para o Metabase contém um listener privado na porta 3000, uma rota de ingresso e um limite de estado documentado. O contrato de rede do Metabase exige um banco de dados de aplicação dedicado em Postgres, separado das fontes de dados analíticos. Mantenha os endpoints privados no DNS interno, permita apenas as chamadas de saída necessárias e forneça ao Metabase uma credencial de serviço com escopo limitado.

Valide a topologia solicitando que um cliente limpo conecte um banco de dados de exemplo somente leitura, salve uma pergunta, crie um dashboard e entregue uma assinatura pelo canal de e-mail configurado. Monitore o heap da JVM, as consultas simultâneas, o cache de resultados e a carga transferida para cada fonte de dados analíticos durante a execução. O resultado mostra se a próxima melhoria deve ser feita em memória, armazenamento, rede ou em um worker separado, em vez de incentivar o dimensionamento arbitrário do container.

Uma configuração básica do Metabase com Docker

O comando a seguir torna o limite do container visível sem fingir que provisiona todos os serviços externos.

docker run -d \
  --name metabase \
  --restart unless-stopped \
  -p 127.0.0.1:3000:3000 \
  -v metabase-data:/metabase-data \
  -e MB_ENCRYPTION_SECRET_KEY=replace-with-a-long-random-value \
  -e MB_DB_TYPE=h2 \
  -e MB_DB_FILE=/metabase-data/metabase.db \
  metabase/metabase:latest

Antes de abrir o ingresso, inspecione o ambiente resolvido, os mounts e o listener. Adicione as configurações de conexão revisadas para um banco de dados de aplicação dedicado em Postgres, separado das fontes de dados analíticos; use nomes privados para serviços privados. Uma inicialização bem-sucedida termina quando você consegue conectar um banco de dados de exemplo somente leitura, salvar uma pergunta, criar um dashboard e entregar uma assinatura pelo canal de e-mail configurado — não quando docker ps exibe Up.

Comprove a implantação do Metabase de ponta a ponta

Um critério de produção para o Metabase deve poder ser executado por alguém que não participou da criação da implantação. Forneça a essa pessoa a versão fixada, uma conta de teste sem dados sensíveis e esta tarefa: conectar um banco de dados de exemplo somente leitura, salvar uma pergunta, criar um dashboard e entregar uma assinatura pelo canal de e-mail configurado. Se as instruções exigirem acesso não documentado ao shell, o serviço ainda não está pronto do ponto de vista operacional.

Repita o critério substituindo apenas o container. Em seguida, restaure o banco de dados da aplicação do Metabase — e não apenas as fontes de dados consultadas — em uma infraestrutura vazia e comprove que usuários, coleções, perguntas, filtros de dashboard e assinaturas reaparecem e são executados usando os metadados de conexão restaurados. Meça o heap da JVM, as consultas simultâneas, o cache de resultados e a carga transferida para cada fonte de dados analíticos durante as duas execuções bem-sucedidas; diferenças inesperadas frequentemente revelam um cache, índice, worker ou mount de dados ausente.

Adicione um exercício de falha: negue temporariamente à identidade de teste o acesso a um banco de dados de aplicação dedicado em Postgres, separado das fontes de dados analíticos. O Metabase deve emitir um erro útil, preservar o estado existente e se recuperar quando a condição válida retornar. Salve os timestamps e as linhas de log relevantes, ocultando os secrets. Essas evidências se tornam a referência para a próxima alteração de imagem ou configuração.

Mantenha as URLs internas e externas corretas

O navegador, o cliente de API e o Metabase devem concordar com uma única origem. Para garantir isso, defina MB_SITE_URL como a origem HTTPS pública. Preserve o host e o protocolo originais, mantendo a porta 3000 indisponível como um endereço público concorrente.

O guia de solução de problemas de sites indisponíveis ajuda a distinguir uma rota inacessível de uma aplicação que está respondendo. Essa distinção é importante aqui: o banco de dados da aplicação está ausente, mesmo que os bancos de dados de origem dos dashboards continuem disponíveis. Apenas o primeiro problema é corrigido por alterações no ingresso; o segundo exige a inspeção dos logs, do estado ou da carga de trabalho do Metabase.

Opere o Metabase em torno do seu gargalo real

No Metabase, monitore uma transação, e não apenas um processo: conectar um banco de dados de exemplo somente leitura, salvar uma pergunta, criar um dashboard e entregar uma assinatura pelo canal de e-mail configurado. Combine a latência e a taxa de erros com o heap da JVM, as consultas simultâneas, o cache de resultados e a carga transferida para cada fonte de dados analíticos, para que um alerta identifique o componente sob restrição.

O ensaio de upgrade deve considerar que o banco de dados da aplicação do Metabase e as versões dos plugins precisam ser migrados em conjunto; os bancos de dados empresariais consultados não substituem esse estado. Restaure, migre e execute a transação antes da substituição em produção. Se o banco de dados da aplicação estiver ausente, mesmo que os bancos de dados de origem dos dashboards continuem disponíveis, não apague dados para deixar a inicialização verde; compare versão, variáveis, mounts e acessibilidade das dependências, nessa ordem.

Os volumes são apenas a primeira camada de recuperação

Proteja o estado do Metabase antes de otimizar o container. O conjunto necessário é o banco de dados da aplicação do Metabase, e não apenas as fontes de dados consultadas. Monte /metabase-data antes do bootstrap, grave dados de exemplo inofensivos e substitua o container para comprovar que esse caminho é realmente persistente. Se vários armazenamentos precisarem permanecer consistentes, documente a ordem em que as gravações são pausadas e os backups são realizados.

Mantenha cópias fora do servidor de implantação e criptografe o material que contenha credenciais ou conteúdo privado. A recuperação é bem-sucedida quando usuários, coleções, perguntas, filtros de dashboard e assinaturas reaparecem e são executados usando os metadados de conexão restaurados. A distinção entre um mount persistente e uma cópia independente é abordada em armazenamento persistente e snapshots.

Implante o Metabase no Dockup sem perder seus limites

Um template do Dockup deve codificar a imagem, a porta 3000, os mounts, o tempo de health check, o domínio, o TLS e a entrega de secrets. O Dockup deve manter as partes privadas de um banco de dados de aplicação dedicado em Postgres separadas das fontes de dados analíticos na rede interna e não expor nenhuma porta pública adicional. A mesma implantação pode usar servidores do Dockup ou capacidade conectada pelo cliente.

Depois que a rota estiver ativa, aplique a configuração pública e tente conectar um banco de dados de exemplo somente leitura, salvar uma pergunta, criar um dashboard e entregar uma assinatura pelo canal de e-mail configurado. Faça backup do banco de dados da aplicação do Metabase, e não apenas das fontes de dados consultadas, e mantenha o exercício de restauração no plano operacional; essas são responsabilidades do Metabase que continuam visíveis após o provisionamento da infraestrutura.

Perguntas frequentes

O que o Metabase precisa para uma implantação em produção?

Encaminhe o container do Metabase na porta 3000 por meio de uma única origem HTTPS. O requisito de rede de suporte é um banco de dados de aplicação dedicado em Postgres, separado das fontes de dados analíticos. Não considere o Metabase pronto até conseguir conectar um banco de dados de exemplo somente leitura, salvar uma pergunta, criar um dashboard e entregar uma assinatura pelo canal de e-mail configurado.

Quais dados do Metabase devem fazer parte de um backup?

Torne /metabase-data persistente e inclua o banco de dados da aplicação do Metabase — e não apenas as fontes de dados consultadas — no mesmo manifesto de recuperação. Uma restauração limpa do Metabase só é bem-sucedida quando usuários, coleções, perguntas, filtros de dashboard e assinaturas reaparecem e são executados usando os metadados de conexão restaurados.

O Metabase precisa de HTTPS atrás de um reverse proxy?

Use HTTPS para a origem pública do Metabase e mantenha a porta 3000 na rota interna. Aplique corretamente a configuração do Metabase: defina MB_SITE_URL como a origem HTTPS pública. No Metabase, o HTTPS protege credenciais ou conteúdo de usuários durante o tráfego e mantém consistente o comportamento do cliente sensível à origem.

Como um upgrade do Metabase deve ser testado?

Restaure o estado atual do Metabase em uma implantação isolada, aplique a versão candidata e repita sua transação de aceitação. Preste atenção especial, pois o banco de dados da aplicação do Metabase e as versões dos plugins precisam ser migrados em conjunto; os bancos de dados empresariais consultados não substituem esse estado. Mantenha a imagem anterior do Metabase até entender os limites da migração de dados e do rollback.