Como fazer self-host do Mealie em 2026: importação de receitas, usuários e backups
Um guia prático para fazer self-host do Mealie, cobrindo Docker, portas, dados persistentes, TLS, segurança, backups e falhas que impedem o uso em produção. Passo a passo.
A demonstração mais simples do Mealie comprova apenas que um processo está escutando na porta 9000. Em produção, é preciso ter evidências mais sólidas. O sistema deve passar por este cenário mesmo depois que o container for substituído: importar uma URL de receita, verificar a imagem, adicioná-la a um plano de refeições e gerar uma lista de compras a partir de várias receitas.
O Mealie é implantado com um objetivo claro: receitas, planos de refeições e listas de compras. A armadilha mais comum na implantação é o desaparecimento das imagens das receitas porque /app/data não é persistente. Por isso, o tratamento de URLs públicas e o estado durável precisam receber a mesma atenção que a inicialização da imagem.
Delimite a fronteira de runtime do Mealie
A topologia mínima responsável do Mealie contém um único listener privado na porta 9000, uma rota de ingress e uma fronteira de estado documentada. O contrato de rede do Mealie é Postgres para uma implantação de produção com vários usuários e SMTP para convites. Mantenha os endpoints privados no DNS interno, permita apenas as chamadas de saída necessárias e forneça ao Mealie uma credencial de serviço com escopo limitado.
Valide a topologia solicitando que um cliente limpo importe uma URL de receita, verifique a imagem, adicione a receita a um plano de refeições e gere uma lista de compras a partir de várias receitas. Observe as importações de receitas, o armazenamento de imagens, as consultas ao banco de dados, as tarefas em segundo plano e os usuários simultâneos da residência 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.
Verificações de capacidade e upgrade
Uma verificação de integridade em estado ocioso revela pouco sobre o Mealie. Observe as importações de receitas, o armazenamento de imagens, as consultas ao banco de dados, as tarefas em segundo plano e os usuários simultâneos da residência. Em seguida, gere alertas para o sintoma percebido pelos usuários: a falha da ação “importar uma URL de receita, verificar sua imagem, adicioná-la a um plano de refeições e gerar uma lista de compras a partir de várias receitas”. Mantenha o liveness local e barato; permita que o readiness informe migrações ou inicialização sem provocar uma sequência de reinicializações.
A área de upgrade mais arriscada é o fato de que as migrações do banco de dados e as alterações no parser de ingredientes podem afetar as receitas armazenadas. Por isso, teste as importações e os registros existentes. Leia as notas de release, crie um snapshot do estado, implante a versão de destino sobre uma cópia restaurada e repita a ação de aceitação. Se as imagens das receitas desaparecerem porque /app/data não é persistente, correlacione a solicitação do cliente com o primeiro log relevante da aplicação, em vez de excluir o estado ou adicionar redirects às cegas.
O release gate do Mealie
Um release candidate do Mealie conquista tráfego ao concluir um cenário fixo: importar uma URL de receita, verificar a imagem, adicioná-la a um plano de refeições e gerar uma lista de compras a partir de várias receitas. Registre o digest da imagem, a configuração efetiva sem secrets, a origem pública e os timestamps desse cenário. Os dados de teste devem ser descartáveis, mas realistas o suficiente para exercitar o mesmo caminho usado pelos usuários.
Execute o teste depois de substituir o runtime e, em seguida, reconstrua o serviço a partir do banco de dados, das imagens das receitas, dos assets e das configurações da aplicação. A recuperação será aprovada quando as receitas, imagens, usuários, planos de refeições e listas de compras retornarem e uma receita conhecida for renderizada corretamente. Compare as medições de recursos para importações de receitas, armazenamento de imagens, consultas ao banco de dados, tarefas em segundo plano e usuários simultâneos da residência com a versão anterior e investigue desvios relevantes antes da promoção.
Por fim, exercite esta falha controlada: negue temporariamente à identidade de teste o acesso ao Postgres para uma implantação de produção com vários usuários e ao SMTP para convites. Verifique se o Mealie explica a falha, não danifica o estado existente e retoma a operação quando a condição válida retornar. Salve um trecho de log com dados sensíveis removidos e o tempo de recuperação. Juntos, esses testes cobrem comportamento, durabilidade e operabilidade, em vez de apenas a disponibilidade do processo.
Crie um container substituível do Mealie
Mantenha a invocação inicial do Mealie reproduzível o suficiente para ser revisada em um pull request.
docker run -d \
--name mealie \
--restart unless-stopped \
-p 127.0.0.1:9000:9000 \
-v mealie-data:/app/data \
-e BASE_URL=https://app.example.com \
ghcr.io/mealie-recipes/mealie:latest
Não dependa de latest depois que existirem dados reais. Registre o digest usado, o usuário do container e as permissões do mount. Acompanhe o log da aplicação durante um teste completo — importar uma URL de receita, verificar a imagem, adicioná-la a um plano de refeições e gerar uma lista de compras a partir de várias receitas — e anote todas as migrações antes de colocar a rota atrás do tráfego de produção.
Encontre todos os bytes persistentes do Mealie
Faça um inventário de todos os artefatos duráveis: banco de dados, imagens de receitas, assets e configurações da aplicação. Monte /app/data antes do bootstrap, grave dados de exemplo inofensivos e substitua o container para comprovar que esse caminho é realmente persistente. Inclua as configurações que alteram a forma como os dados armazenados são interpretados, não apenas o maior diretório.
Defina a retenção, copie os backups para fora do host e execute uma restauração em um ambiente limpo. O teste de recuperação do Mealie estará concluído quando as receitas, imagens, usuários, planos de refeições e listas de compras retornarem e uma receita conhecida for renderizada corretamente. Se os snapshots fizerem parte do plano, use o guia sobre PITR versus snapshots para documentar o que cada mecanismo é capaz de recuperar.
Encaminhe o Mealie sem criar uma falsa impressão de HTTPS
Defina BASE_URL como a origem HTTPS externa. Encaminhe o hostname escolhido para a porta 9000 do container, repasse o host original e o scheme HTTPS e evite publicar uma segunda origem direta.
Teste o Mealie a partir de um cliente externo limpo. Separe uma falha de ingress da fronteira conhecida da aplicação — as imagens das receitas desaparecem porque /app/data não é persistente. Um erro de certificado, DNS ou 502 pertence ao roteamento; uma solicitação que chega ao Mealie e falha depois pertence ao estado da aplicação, à capacidade ou a um requisito de suporte. O guia de TLS para domínios personalizados aborda o primeiro grupo.
Reduza as permissões do Mealie
Depois do primeiro login, revise o que um visitante anônimo, um usuário comum e um administrador podem fazer. A falha a evitar no Mealie é deixar o cadastro aberto ou manter inalterada a senha inicial do administrador. A política pretendida é substituir a senha inicial do administrador, fechar o cadastro quando o período de inscrição terminar e proteger os dados privados da residência.
BASE_URL é uma configuração, não um secret; mantenha seu valor explícito e proteja as credenciais separadas usadas pelo Mealie. Mantenha as contas de dependências separadas das contas humanas, negue o egress não utilizado quando for viável e limite o trabalho influenciado por importações de receitas, armazenamento de imagens, consultas ao banco de dados, tarefas em segundo plano e usuários simultâneos da residência.
Uma implantação com o Dockup ainda precisa de um teste de aceitação do Mealie
Roteamento, certificados, substituição de serviços e armazenamento anexado são alvos razoáveis para automação. O Dockup cuida disso para o Mealie e pode provisionar o banco de dados gerenciado relacionado ou conectar-se a serviços no servidor do próprio cliente.
O que ele não deve inventar é a política de confiança do Mealie. Depois da implantação, defina BASE_URL como a origem HTTPS externa, imponha esta fronteira — substitua a senha inicial do administrador, feche o cadastro quando o período de inscrição terminar e proteja os dados privados da residência — e verifique o resultado deste cenário: importar uma URL de receita, verificar a imagem, adicioná-la a um plano de refeições e gerar uma lista de compras a partir de várias receitas. O resultado é uma infraestrutura de um clique com um teste de aceitação específico da aplicação.
Perguntas frequentes
O que o Mealie precisa para uma implantação de produção?
Encaminhe o container do Mealie na porta 9000 por meio de uma única origem HTTPS. O requisito de rede de suporte é Postgres para uma implantação de produção com vários usuários e SMTP para convites. Não considere o Mealie pronto até conseguir importar uma URL de receita, verificar a imagem, adicioná-la a um plano de refeições e gerar uma lista de compras a partir de várias receitas.
Quais dados do Mealie devem fazer parte de um backup?
Mantenha /app/data persistente e inclua o banco de dados, as imagens das receitas, os assets e as configurações da aplicação no mesmo manifesto de recuperação. Uma restauração limpa do Mealie só será aprovada quando as receitas, imagens, usuários, planos de refeições e listas de compras retornarem e uma receita conhecida for renderizada corretamente.
O Mealie precisa de HTTPS atrás de um reverse proxy?
Use HTTPS para a origem pública do Mealie e mantenha a porta 9000 na rota interna. Aplique corretamente a configuração do Mealie: defina BASE_URL como a origem HTTPS externa. No Mealie, o HTTPS protege credenciais ou conteúdo de usuários durante o trânsito e mantém consistente o comportamento do cliente sensível à origem.
Como testar um upgrade do Mealie?
Restaure o estado atual do Mealie em uma implantação isolada, aplique a versão candidata e repita sua transação de aceitação. Dê atenção especial ao fato de que as migrações do banco de dados e as alterações no parser de ingredientes podem afetar as receitas armazenadas. Por isso, teste as importações e os registros existentes. Mantenha a imagem anterior do Mealie até entender os limites da migração de dados e do rollback.
