
Por que uma stack pequena de contêineres vence uma grande
Ler “5 just-enough Docker containers I use on every PC” na XDA nos fez fazer uma revisão de nossas próprias stacks e eliminar dois terços do que estávamos executando. Um lab doméstico que ninguém toca porque leva uma hora para entender é um lab morto. Um conjunto pequeno e deliberado de contêineres cobrindo interface admin, uptime, segredos, bloqueio de anúncios e atualizações é a versão que continuamos usando anos depois, no Windows com Docker Desktop, no macOS com OrbStack e no Linux com Docker Engine puro.
Testamos oito contêineres em um ciclo de instalação limpa em cada um desses hosts, depois executamos a stack por uma semana de trabalho para verificar o uso de RAM, CPU ociosa e quantos bugs encontramos. Tudo aqui pode ser iniciado com docker compose up -d e funciona bem atrás de um firewall de rede doméstica.
O que procurar em uma stack minimalista de contêineres
- Executa a partir de um arquivo compose. O conjunto inteiro deve iniciar junto em um comando, não dezesseis painéis para clicar.
- Pegada de ociosidade baixa. Uma stack que você deixa em um mini PC deve ficar ociosa em percentuais baixos de RAM de dois dígitos, não mais.
- Interface web ou nada. Ferramentas somente de linha de comando pertencem ao host, não ao Docker. Cada contêiner aqui tem uma interface de navegador.
- História de backup. Qualquer coisa que armazene estado deve ser trivialmente backup-ável (um único volume montado ou bind mount).
- Consciente de atualização. Contêineres que nunca são atualizados são contêineres comprometidos. A stack deve incluir uma maneira de mantê-los frescos.
- Padrão de proxy reverso documentado. Implantações reais terminam atrás de Traefik, Caddy ou nginx, e a documentação de contêineres deve mostrar como.
Comparação rápida
| Aplicativo | Melhor para | Pegada ociosa | Interface web | Licença |
|---|---|---|---|---|
| Portainer | Gerenciar contêineres visualmente | Baixa | Sim | Community edition free |
| Uptime Kuma | Monitorar serviços e receber alertas | Muito baixa | Sim | MIT |
| Vaultwarden | Gerenciador de senhas auto-hospedado | Muito baixa | Sim | GPLv3 |
| Pi-hole | Bloqueio de anúncios e rastreadores em nível DNS | Muito baixa | Sim | EUPL |
| Watchtower | Atualização automática de contêineres | Muito baixa | Sem interface web | Apache 2.0 |
| Homepage | Painel pessoal para a stack | Muito baixa | Sim | GPLv3 |
| Traefik | Proxy reverso para o resto da stack | Baixa | Sim (painel) | MIT |
| Duplicati | Backup para host e volumes de contêineres | Baixa | Sim | LGPLv2.1 |
Os oito contêineres que executamos em cada host
1. Portainer, a interface admin que torna Docker legível
Portainer é o painel do navegador que transforma a linha de comando do Docker em um conjunto de telas. Iniciar e parar contêineres, fazer pull de imagens, inspecionar volumes, monitorar logs, exec em um contêiner, diagramas de rede, tudo. Para qualquer um que não queira manter os últimos trinta comandos docker em sua cabeça, Portainer é por onde o dia começa.
Onde fica aquém: A edição Business está atrás de uma licença; a edição Community cobre tudo que um lab doméstico de um único node precisa, mas alguns recursos corporativos (RBAC além de alguns accounts, armazenamento de segredos criptografado) são pagos.
Preço:
- Grátis: Community edition para uso pessoal e de pequenas equipes
- Pago: Business edition com preço por node
- vs docker CLI bruto: Mais rápido para navegar, mais lento para scripting
Funciona em: Windows Docker Desktop, macOS OrbStack, Docker Engine no Linux.
Baixar: portainer.io
Conclusão: O primeiro contêiner a instalar em um novo host, antes de instalar qualquer outra coisa.
2. Uptime Kuma, o monitor que te avisa antes da sua família
Uptime Kuma é uma página de status auto-hospedada e mecanismo de alertas. Faz ping em uma URL, porta TCP, banco de dados ou verificação de saúde de contêiner em um cronograma, depois pinta um painel de status e ativa alertas (Discord, Telegram, email, ntfy) quando algo quebra. Adicionar um novo serviço é um formulário de dois minutos.
Onde fica aquém: Não foi construído para centenas de serviços (é uma ferramenta de lab doméstico, não Datadog). Seus próprios restarts deixam uma lacuna na cronologia.
Preço:
- Grátis: Produto completo
- Pago: Nenhum
- vs monitoramento comercial: Mais simples, privado, sem faturamento por verificação
Funciona em: Docker no Windows, macOS, Linux.
Baixar: Uptime Kuma on GitHub
Conclusão: O contêiner que torna o resto da stack observável. Adicione como segundo.
3. Vaultwarden, o Bitwarden auto-hospedado compacto
Vaultwarden é uma reimplementação em Rust da API do servidor Bitwarden. Executa em uma fração da RAM que o contêiner oficial usa, fala o mesmo protocolo que os aplicativos Bitwarden oficiais e armazena tudo em um único arquivo SQLite trivialmente backup-ável.
Onde fica aquém: Projeto comunitário, não endossado por Bitwarden. Alguns recursos corporativos (provedores SSO, sincronização de diretório) estão bloqueados para planos pagos no Bitwarden hospedado.
Preço:
- Grátis: O contêiner é grátis; custos de armazenamento seja o que seu disco custa
- Pago: Nenhum
- vs Bitwarden hospedado: Controle total, seus próprios backups, uptime auto-gerenciado
Funciona em: Qualquer host Docker.
Baixar: Vaultwarden on GitHub
Conclusão: O contêiner que finalmente permite deixar um gerenciador de senhas hospedado sem perder sincronização entre dispositivos.
4. Pi-hole, o bloqueador de anúncios para cada dispositivo na rede
Pi-hole executa um servidor DNS que não retorna nada para domínios em suas listas de bloqueio. Aponte o DNS do seu roteador para o contêiner Pi-hole e cada dispositivo na rede (telefones, TVs, impressoras) de repente perde suas conexões de anúncios e rastreadores em nível DNS, sem necessidade de instalação por dispositivo.
Onde fica aquém: Alguns serviços dependem de domínios de rastreadores para que links funcionem; a memória muscular da lista branca leva uma semana para construir. Listas de bloqueio HTTPS-apenas ainda perdem anúncios servidos do mesmo domínio que o site.
Preço:
- Grátis: Produto completo
- Pago: Nenhum
- vs bloqueador de anúncios do navegador: Cobre telefones, TVs e IoT; não oculta anúncios em nível de elemento na página
Funciona em: Docker em qualquer host; mais feliz em uma máquina sempre ligada.
Baixar: pi-hole.net
Conclusão: O único contêiner que muda o que toda a casa vê, que é um bom retorno por dez minutos de compose.
5. Watchtower, o faxineiro que mantém os contêineres frescos
Watchtower observa seus outros contêineres, verifica imagens mais recentes e faz pull mais reinicia em um cronograma que você define. Envie com uma notificação Discord ou Slack e cada manhã você recebe um resumo do que atualizou durante a noite.
Onde fica aquém: Atualizações automáticas podem quebrar serviços em execução se uma imagem enviar uma versão ruim. Fixar tags específicas ou usar filtros de label é a mitigação.
Preço:
- Grátis: Produto completo
- Pago: Nenhum
- vs atualizações manuais: Automação com pequeno risco vs obsolescência consistente sem risco de surpresa
Funciona em: Qualquer host Docker.
Baixar: containrrr.dev/watchtower
Conclusão: O contêiner que impede o resto da stack de apodrecer.
6. Homepage, o painel que torna a stack encontrável
Homepage é um painel leve que lista seus serviços com ícones, verificações de saúde e integrações que mostram dados em tempo real (status Uptime Kuma, contagens Portainer, filas Sonarr se você executar uma). Marque-o em cada navegador e nunca mais perderá a URL de um contêiner.
Onde fica aquém: Configuração é YAML em disco; a parte boa é que vive no git, a parte ruim é que não é uma interface click-to-add.
Preço:
- Grátis: Totalmente open-source
- Pago: Nenhum
- vs barra de favoritos do navegador: Dados em tempo real, um local para a casa
Funciona em: Docker em qualquer host.
Baixar: Homepage on GitHub
Conclusão: O contêiner que transforma o resto da stack de “URLs que lembro” em uma verdadeira porta de entrada.
7. Traefik, o proxy reverso que o resto da stack fala através
Traefik é o proxy reverso que permite que cada outro contêiner responda em seu próprio subdomínio (portainer.home, kuma.home, vault.home) em vez de memorizar números de porta. Observa labels Docker e atualiza roteamento automaticamente, então adicionar um novo contêiner que recebe uma URL pública requer três linhas de label e uma aplicação de compose.
Onde fica aquém: A primeira implantação de Traefik tem mais botões que os outros; labels de roteador e configuração de resolvedor TLS requerem uma leitura cuidadosa dos documentos.
Preço:
- Grátis: Traefik Proxy é totalmente open-source
- Pago: Traefik Enterprise é um produto separado
- vs nginx: Configuração nativa de contêiner, menos clássica
Funciona em: Qualquer host Docker.
Baixar: traefik.io
Conclusão: O único contêiner que muda toda a stack de “IPs e portas” para “URLs legíveis para humanos.”
8. Duplicati, o backup que mantém volumes de contêineres seguros
Duplicati é o cliente de backup para o resto da stack. Aponte para seus volumes Docker e bind mounts, escolha um destino (local, SSH, S3, B2, WebDAV), configure um cronograma e cada noite os dados importantes recebem um backup criptografado e deduplicado fora do host.
Onde fica aquém: A interface web é funcional em vez de polida. Fluxos de restauração requerem um passo a passo na primeira vez.
Preço:
- Grátis: Produto completo
- Pago: Nenhum
- vs scripts manuais
docker run --rm -v: Realmente executa em cronograma, captura novos volumes
Funciona em: Docker em qualquer host.
Baixar: duplicati.com
Conclusão: O único contêiner que as pessoas pulam e depois se arrependem quando um disco morre. Adicione cedo.
Como escolher a stack minimalista certa
- Se este é seu primeiro host Docker: Portainer, Uptime Kuma e Vaultwarden são os três que se pagam na primeira semana.
- Se sua rede doméstica está cheia de anúncios: adicione Pi-hole e redirecione o DNS do seu roteador.
- Se você já tem uma stack crescente: adicione Watchtower e Homepage em seguida; ambos tornam o resto mais gerenciável.
- Se você planeja expor qualquer serviço em um subdomínio: Traefik entra antes da exposição, não depois.
- Se você se importa em não perder o que construiu: Duplicati é o contêiner que transforma sua stack compose em algo que você pode realmente recuperar.
FAQ
Esses contêineres funcionam em um PC Windows com Docker Desktop?
Sim. Cada um dos oito envia uma imagem multi-arch oficial (linux/amd64 e linux/arm64) que funciona de forma idêntica no Docker Desktop para Windows, OrbStack no macOS e Docker Engine no Linux.
Quanto de RAM essa stack usa quando ociosa?
Em um Raspberry Pi 5 com 4GB e em um pequeno mini PC com 8GB, os oito contêineres juntos ficam ociosos em centenas baixas de megabytes de RAM. Vaultwarden e Pi-hole são os mais leves; Traefik e Duplicati crescem brevemente durante o trabalho ativo.
É seguro deixar Watchtower em atualizações automáticas?
Principalmente. O padrão mais seguro é executar Watchtower com filtros de label para que ele só atualize contêineres que você marcou como “seguro para auto-update” e deixe o resto em atualizações manuais. Fixar tags de versão principal é outra mitigação comum.
Preciso de Portainer se já estou confortável na CLI do Docker?
Portainer é uma camada de conveniência. Se você está bem com a CLI e lê logs com docker compose logs -f, pode pular. A maioria das pessoas que adicionam isso para de desinstalar depois de uma semana.
Posso executar essa stack em um NAS Synology ou QNAP?
Sim. Ambos os fornecedores enviam interfaces de Container Manager que leem arquivos compose padrão e cada contêiner aqui é compatível. No Synology DSM 7, o Container Manager pode importar o arquivo compose diretamente.