Como configurar o Pihole em um Contêiner Docker

Talvez você seja incomodado por anúncios pop-up sempre que lê um artigo em um site. Com todos esses anúncios, como bloqueá-los? Instale o Pi-hole no Docker e use o Pi-hole como um bloqueador de anúncios em toda a rede e melhore o desempenho da sua rede.

Neste tutorial, você aprenderá como configurar e executar o Pi-hole em um contêiner Docker para bloquear anúncios e sites. Parece emocionante? Continue lendo para saber mais!

Pré-requisitos

Este tutorial será uma demonstração prática. Se você quiser acompanhar, certifique-se de ter o seguinte:

  • O Docker instalado no Windows 10 (mas qualquer sistema operacional compatível funcionará).
  • A Windows 10 PC – This tutorial uses Windows 10 OS Build 19042.1165.

Criando Dois Volumes Docker Persistentes

Ao configurar o Pi-hole em um contêiner Docker, você primeiro precisará criar um volume Docker para armazenar o aplicativo Pi-hole e a configuração DNS.

Abra o PowerShell como administrador, em seguida, execute os comandos abaixo para o Docker criar dois volumes (`volume create`) chamados `pihole_app` e `dns_config`. Você também pode alterar os nomes de acordo com sua preferência.

docker volume create pihole_app
docker volume create dns_config

Em seguida, verifique se os volumes do Docker foram criados com sucesso executando o seguinte comando que lista todos os volumes do Docker disponíveis em sua máquina.

docker volume ls

Abaixo, você vê dois volumes recém-criados chamados `pihole_app` e `dns_config`.

Creating two Docker Volumes for the Pi-hole Configurations.

Executando Pi-hole em um Contêiner Docker com Variáveis de Ambiente

Agora que você tem dois volumes persistentes disponíveis, está pronto para executar um contêiner Docker usando a imagem base do Pi-hole Docker. Mas primeiro, você precisará anotar seu endereço IP local.

Execute o comando abaixo para obter seu endereço IP local. Seu endereço IP local é necessário para executar corretamente o comando único do Docker.

ipconfig /all

Em seguida, execute o comando abaixo para baixar a imagem base do `pihole/pihole` do Docker hub. Substitua os valores conforme necessário usando a tabela abaixo como referência. A tabela abaixo explica o propósito de cada sinalizador do comando.

docker run --name=pihole -e TZ=Asia/Manila -e WEBPASSWORD=password -e SERVERIP=YourIPAddressHere -v pihole_app:/etc/pihole -v dns_config:/etc/dnsmasq.d -p 81:80 -p 53:53/tcp -p 53:53/udp --restart=unless-stopped pihole/pihole

Flags do Comando Docker do Pi-hole

Command Flags Definition
—name=pihole Names a Docker container as pihole. There will be an error if a container with the same name already exists on your machine
-e TZ=Asia/Manila Environment variable for time zone. Asia/Manila was used for this tutorial, but you can input anything that has the same format listed in on a GitHub gist.
-e WEBPASSWORD=password Sets a password for the Pi-hole interface.
-e SERVERIP=YourIPAddressHere Set your IP address for the Docker container. You will use this again later for making Pi-hole work.
-v pihole_app:/etc/pihole Mounts the volume pihole_app and use subdirectory /etc/pihole for storing the Pi-hole files
-v dns_config:/etc/dnsmasq.d Mounts the volume dns_config and use subdirectory /etc/dnsmasq.d for storing DNS configurations as required.
p 81:80 -p 53:53/tcp -p 53:53/udp Maps the ports of host machine to the ports of the Docker container (port 81 in host machine maps to port 80 of Docker container)
—restart=unless-stopped Sets a restart policy so the Docker container always restarts unless it is manually stopped by the user.
pihole/pihole Tells the docker run command to use the official pihole/pihole base image from Docker hub.

Abaixo, você pode ver o comando que faz o download da imagem base pihole/pihole do Docker Hub. Uma vez que a imagem pihole/pihole é baixada em sua máquina, o comando continua automaticamente e segue os parâmetros que você definiu no comando.

Downloading pihole/pihole image.

Após baixar a imagem base pihole/pihole, você verá uma saída como a abaixo, o que indica que você já pode executar o painel Pi-hole a partir do container.

Seeing the Pi-hole Docker Container Running Properly.

Acessando a Interface Web do Painel Pi-hole

Uma vez que o container Docker que você criou está em execução, você agora pode acessar o painel Pi-hole. O painel Pi-hole é uma interface gráfica que permite configurar quais anúncios bloquear, seja através da sua própria lista negra ou de listas negras mantidas pela comunidade.

Acesse http://localhost:81 no seu navegador, já que você mapeou anteriormente a porta 81 da máquina host para a porta 80 do container Docker. Ao fazer isso, o seu navegador redireciona a página para o painel Pi-hole.

Se você configurou uma porta diferente ao executar o comando docker anterior, altere a porta para acessar o painel Pi-hole. Por exemplo, http://localhost:n onde ‘n’ representa o número da porta.

Agora, faça login no painel Pi-hole com a senha que você definiu ao executar o comando docker na seção “Executando o Container Docker Pi-hole com Variáveis de Ambiente”. Para este tutorial, a senha é “password” (sem aspas).

Accessing the Pi-hole dashboard.

Como você vê abaixo, o contêiner Pi-hole não está bloqueando ativamente os anúncios e está em modo de espera aguardando o que ele chama de “consultas” ou solicitações de anúncios para avaliar.

Viewing Pi-hole dashboard Default Page.

Apontando o Servidor DNS do Host para o Endereço IP do Pi-hole

Com o servidor Pi-hole em execução, como você começa a bloquear anúncios em seu sistema local? Você precisa dizer ao seu sistema local para direcionar todas as solicitações para o endereço IP do Pi-hole e bloquear quaisquer anúncios correspondentes. Continue lendo para aprender como fazer isso!

1. Clique com o botão direito no ícone de configurações de rede na bandeja do sistema Windows e escolha Abrir Configurações de Rede e Internet para ver a lista de todos os adaptadores de rede em sua máquina.

Accessing Network & Internet Settings

2. Em seguida, clique com o botão direito no seu adaptador de rede e escolha Propriedades. A janela de configurações do seu adaptador de rede será exibida.

Accessing Network Adapter Properties.

3. Selecione Versão 4 do Protocolo de Internet (TCP/IPv4) na lista sob a guia Rede, e clique no botão Propriedades.

Accessing IPv4 Properties.

4. Configure as propriedades do IPv4 da seguinte forma:

  • Selecione a opção Usar o seguinte endereço IP para definir um endereço IP estático. A atribuição de IP estático à máquina host permite que outros dispositivos se conectem e usem o bloqueador de anúncios. O gateway padrão para o roteador difere dependendo das configurações do provedor de serviços de Internet em seu país.
  • Selecione a opção Usar os seguintes endereços de servidor DNS para configurar seu servidor DNS e adicione um servidor DNS no campo Servidor DNS preferido. Insira o endereço IP do servidor Docker que você configurou no comando docker anteriormente na seção “Executando o Contêiner Docker Pi-hole com Variáveis de Ambiente”.
  • Adicione um servidor alternativo, como o servidor do Google 8.8.8.8, no campo Servidor DNS alternativo e clique em OK. O servidor DNS alternativo funciona como um servidor DNS caso o contêiner Docker Pi-hole fique indisponível por algum motivo. Você pode atribuir outro valor ao servidor DNS alternativo de sua preferência.
Configuring IPv4 Properties

Configurando o DNS de um Único Dispositivo

Supondo que você tenha um smartphone ou qualquer outro dispositivo conectado à mesma rede, você pode direcionar o servidor DNS desse dispositivo para coincidir com o endereço IP do host. Neste tutorial, um smartphone está conectado à mesma rede.

1. Nas configurações de rede sem fio do smartphone, toque em Manual e insira o endereço IP da máquina host. Você também pode adicionar endereços IP alternativos no caso de falha do Pi-hole.

A interface de configurações de rede sem fio em smartphones pode variar.

Configuring DNS server on smartphone

2. Agora visite alguns sites que contenham muitos anúncios no navegador da web do seu smartphone.

Para este exemplo, os sites do Daily Mail e do New York Times foram visitados repetidamente por 5-10 minutos. O administrador de navegador ao vivo no painel do Pi-hole mostra o número de anúncios bloqueados pelo dispositivo, como mostrado abaixo.

Os gráficos de barras são uma adição recente à versão mais recente do Pi-hole no momento da escrita. Algumas versões mais antigas têm gráficos de linha em vez disso.

Running Docker Pi-hole in Action with a Smartphone Usage for 5-10 Minutes

Habilitando o Bloqueio em Rede Doméstica via Configurações do Roteador

Em vez de configurar um servidor DNS em um único dispositivo, tente configurar servidores DNS para todos os dispositivos nas configurações do roteador. Dependendo do seu roteador, pode ou não haver uma disposição para usar o endereço IP.

Neste demo, o roteador não permitiu o acesso à alteração de servidores DNS e DHCP. Portanto, a rede doméstica não foi explorada em detalhes completos neste tutorial devido a restrições do roteador.

Em uma visualização de administração de amostra, você pode codificar o IP do servidor DNS da mesma maneira que foi feito em um único dispositivo. Este demo usa um roteador Prolink PRS1841U-v2 bloqueado para o ISP.

A interface de configuração DNS difere de roteador para roteador, mas as configurações se parecem com a seguinte.

Manually setting a router DNS settings.

Você também pode desativar o servidor DHCP no roteador e, em seguida, ativar o servidor DHCP no Pi-hole. Uma discussão de exemplo na comunidade do Pi-hole mostra isso com mais detalhes.

Bloqueando Sites através do Painel do Pi-hole

A instalação padrão do Pi-hole bloqueia cerca de 92.725 sites por padrão, mas você também pode adicionar mais sites através de listas negras do criador do Pi-hole e outras listas compartilhadas por fãs do Pi-hole.

1. Salve os sites a serem bloqueados em um arquivo de texto com o nome desejado. Para este exemplo, o arquivo é chamado de blocklist.txt.

2. Execute o comando docker abaixo para copiar o arquivo blocklist.txt (cp blocklist.txt) para o volume do contêiner Docker em um arquivo chamado blacklist.txt. Mantenha o arquivo blacklist.txt no volume do Docker para que o Pi-hole o detecte automaticamente.

docker cp blocklist.txt d70:/etc/pihole/blacklist.txt

Finalmente, navegue novamente para o painel de administração do Pi-hole. Clique no menu Ferramentas no painel esquerdo e, em seguida, no link Atualizar Gravidade. Por fim, clique em Atualizar para obter uma lista atualizada de URLs para o Pi-hole bloquear.

Showing Update Gravity on Pi-hole UI after Copying Additional Website Blacklists on Text File

A successful update will look like the one below.

Showing Display of Update Gravity Success

Atualizando a Lista de Bloqueio de Sites via Console

Talvez você prefira executar comandos de console em vez de navegar no painel do Pi-hole. Se for o caso, você pode executar um comando docker no PowerShell para bloquear sites. Execute o comando docker exec abaixo para criar uma sessão de terminal interativa no contêiner Docker pihole_app, que permite a execução de comandos.

docker exec -it pihole_app /bin/bash

Uma vez que a sessão do terminal estiver aberta, execute o comando abaixo para atualizar a lista negra de URLs do Pi-hole.

pihole -g

Execute novamente pihole -g de tempos em tempos para que o seu bloqueador de anúncios fique atualizado.

Bloqueando Sites via Listas de URLs Mantidas pela Comunidade

Algumas URLs são dedicadas a serem atualizadas regularmente pelos seus contribuintes, e algumas não, portanto, fazer o upload de uma lista negra de uma lista antiga pode não refletir as últimas alterações.

Aproveite a funcionalidade de gerenciamento de grupos de listas de bloqueio de anúncios do Pi-hole. No painel do Pi-hole, clique em Gerenciamento de GruposListas de Anúncios no painel esquerdo, e então clique em Adicionar para escolher a lista de URLs que você deseja adicionar no Pi-hole.

Adding a Community-Maintained Blacklists of URLs for Pi-hole to Block

Conclusão

Em neste tutorial, você aprendeu como baixar uma imagem Pi-Hole Docker, testar uma interface web Pi-hole de escuta ativa, testar um dispositivo externo para se conectar ao Pi-hole. Você também aprendeu como bloquear anúncios e sites, viu o painel Pi-hole em ação ao bloqueá-los.

Com esse conhecimento, por que não usar qualquer máquina host para bloquear anúncios para outros dispositivos conectados na mesma rede?

Source:
https://adamtheautomator.com/pi-hole-in-docker/