O Pi-hole é uma ferramenta que atua como um servidor DNS com bloqueio de anúncios e rastreadores, protegendo sua rede contra propagandas indesejadas e melhorando a performance de navegação.
Ele funciona como um filtro de DNS, impedindo que domínios maliciosos ou de publicidade sejam resolvidos.
Você pode usar o Pi-hole como o DNS principal da sua rede, apontando seus dispositivos ou o roteador/firewall para ele.
Pré-requisitos
Antes de começar, você precisa:
Ter o Docker e Docker Compose instalados.
Um diretório dedicado para o Pi-hole no seu servidor.
Uma porta disponível para o DNS (53) e para o painel web (80/443).
Um IP fixo para o container dentro da rede Docker.
Estrutura de Pastas
Crie uma pasta para o projeto:
mkdir -p ~/homelab/pihole
cd ~/homelab/pihole
Crie as subpastas que serão mapeadas:
mkdir etc-pihole etc-dnsmasq.d
Crie o arquivo docker-compose.yml com o conteúdo abaixo (ajustado se necessário):
docker-compose.yml
services:
pihole:
container_name: homelab_pihole
image: pihole/pihole:latest
hostname: homelab_pihole
environment:
TZ: America/Sao_Paulo
FTLCONF_webserver_api_password: "sua_senha_forte"
volumes:
- ./etc-pihole:/etc/pihole
- ./etc-dnsmasq.d:/etc/dnsmasq.d
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80"
- "443:443"
restart: always
cap_add:
- NET_ADMIN
networks:
default:
ipv4_address: 192.168.1.250 # ajuste conforme necessário
networks:
default:
driver: bridge
ipam:
config:
- subnet: 192.168.1.0/24 # ajuste se necessário
🔐 Dica de segurança: substitua "sua_senha_forte"
por uma senha real e segura.
ℹ️ Observação técnica – cap_add: NET_ADMIN
No docker-compose.yml
, incluímos a diretiva cap_add: - NET_ADMIN
. Isso permite que o container do Pi-hole tenha permissões extras relacionadas à rede, como escutar na porta 53 (DNS), manipular regras internas e configurar serviços como o dnsmasq
.
Essa capacidade é necessária para o funcionamento correto do Pi-hole em containers, especialmente ao usar IP fixo ou quando você precisa de controle mais refinado sobre o tráfego DNS.
Apesar de poderosa, essa permissão é segura desde que usada com imagens confiáveis — como é o caso da imagem oficial do Pi-hole (pihole/pihole
).
Criar a rede Docker (se ainda não existir)
O Docker vai criar a rede automaticamente com base no docker-compose.yml, mas se quiser criar manualmente:
docker network create \
--subnet=192.168.1.0/24 \
--driver=bridge \
homelab_net
E no docker-compose.yml, mude o nome da rede de default para homelab_net.
Subir o container do Pi-hole
Agora, com tudo pronto, execute:
docker compose up -d
Verifique se o container está rodando:
docker ps
Você deve ver o homelab_pihole
em execução.
Acessar a interface do Pi-hole
Abra o navegador e acesse:
http://<IP_DO_SERVIDOR>:80
Exemplo: http://192.168.1.250 (ou o IP do host se você estiver usando o modo bridge com redirecionamento de porta)
A interface de login aparecerá. Use a senha que você definiu em WEBPASSWORD.
Configurar o Pi-hole como seu DNS
Depois de acessar a interface:
Vá em Settings > DNS.
Configure os servidores DNS upstream (Google, Cloudflare, etc).
Ative as listas de bloqueio padrão.
Aponte seu roteador, OPNsense ou clientes individuais para usar o IP do Pi-hole como servidor DNS primário.
Verificando funcionamento
Rode este comando em uma máquina que esteja usando o Pi-hole como DNS:
nslookup doubleclick.net <IP_DO_PIHOLE>
Se ele bloquear, o Pi-hole está funcionando!
Observações importantes
O Pi-hole usa as portas 53 (DNS), 80 e 443 (painel web), então certifique-se de que não há conflitos.
Se estiver usando o OPNsense como seu firewall, você pode redirecionar o tráfego DNS para o Pi-hole.
Lembre-se de fazer backup dos volumes ./etc-pihole e ./etc-dnsmasq.d.
🚀 Conclusão
Agora você já sabe como instalar o Pi-hole no Docker de forma organizada e eficiente. Com isso, você consegue bloquear anúncios em toda a sua rede local, melhorar o desempenho da navegação e ainda ter mais controle sobre os domínios acessados pelos seus dispositivos.
Deixe sua opinião nos comentários! Se tiver dúvidas ou sugestões, ficarei feliz em ajudar. E, claro, compartilhe com seus amigos se achar que esse conteúdo pode ser útil para eles.
Obrigado por acompanhar este guia! 🚀
Até a próxima!