O Pi-hole é uma aplicação de software livre que tem como principal função proteger computadores, tablets e telefones ligados numa rede, de conteúdo indesejado (tipicamente anúncios) sem ser necessário instalar nenhuma aplicação nestes dispositivos. Esta protecção é conseguida através da filtragem dos pedidos de DNS, o serviço responsável por fazer corresponder nomes facilmente identificéveis (ansol.org) a endereços IP (35.185.44.232) bastante mais difíceis de memorizar.
O Pi-hole foi pensado para ser instalado num simples Raspberry Pi, mas pode também ser instalado numa máquina virtual, num container lxc/lxd. A sua versão Docker torna-o facilmente “instalável” em diversos sistemas, com por exemplo num NAS compatível com esta tecnologia.
Neste artigo vamos usar um Raspberry Pi e instalar nele o sistema operativo Ubuntu, com Docker e correr o container com o nosso Pi-hole.
Instalar o Ubuntu no Raspberry Pi
O Raspberry Pi, através da sua ferramenta imager, permite, de uma forma simples, instalar um elevado número de sistemas operativos e aplicações. Na lista de opções para ‘Operating System’ basta escolher: ‘Other general-purpose OS’ > ‘Ubuntu’ > ‘Ubuntu Server 22.04.3 LTS’. Na opção ‘Storage’ escolhe-se o cartão de memória a usar no Pi. Na roda dentada é, ainda, necessário activar o SSH, a autenticação com password ou chave pública e definir o nome de utilizador palavra passe do utilizador-administrador criado durante a instalação. Podemos ainda definir o ‘hostname’ que ajuda à identificação na lista de equipamentos da vossa rede: ‘pihole’ é uma excelente opção. Finalmente, faça ‘Save’ > ‘Write’. Depois, basta inserir o cartão no Raspberry Pi, ligá-lo ao à rede, à corrente e esperar que o sistema operativo termine o primeiro arranque.
Instalar o Docker no Ubuntu
Se tudo correu conforme planeado, é possível aceder via ssh ao Ubuntu usando o ‘Terminal’: ssh [email protected] e a palavra passe definida na instalação. Em vez de ‘pihole.local’, poderá ser necessário usar o IP do Raspberry Pi – para descobrir este dado, use o painel de administração do router ou uma app de análise de rede. O passo seguinte será instalar o Docker no Ubuntu e, para isso, basta correr estes comandos:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh
Instalar o Pi-hole
O passo final desta instalação é a instalação do Pi-hole; para isso, vamos criar uma pasta (sudo mkdir /opt/pihole) onde vamos colocar o ficheiro docker-compose.yml (sudo nano /opt/pihole/docker-compose.yml) com o seguinte conteúdo:
version: “3”
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
– “53:53/tcp”
– “53:53/udp”
– “80:80/tcp”
environment:
TZ: ‘Europe/Lisbon’
WEBPASSWORD: ‘UmaPalavraPasseMuitoSegura’
volumes:
– ‘./etc-pihole:/etc/pihole’
– ‘./etc-dnsmasq.d:/etc/dnsmasq.d’
restart: unless-stopped
Como estamos a usar o Ubuntu, precisamos de fazer alguns ajustes na forma como usa o seu DNS internamente:
sudo sed -r -i.orig ‘s/#?DNSStubListener=yes/DNSStubListener=no/g’ /etc/systemd/resolved.conf
sudo sh -c ‘rm /etc/resolv.conf && ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf’
sudo systemctl restart systemd-resolved
Para iniciar o Pi-hole, só falta entrar na pasta e executar o docker compose:
cd /opt/pihole/
sudo docker compose up -d
O serviço está pronto a ser usado e deverá funcionar sem mais configurações, mas, para consultar estatísticas ou configurações adicionais, podemos usar o painel web do Pi-hole em pihole.local/admin, com a password definida no docker-compose.yml. Mais uma vez, poderá ser necessário usar o IP do Raspberry Pi em vez de pihole.local.
Alterar o DNS da rede
O passo final será mudar a configuração do DNS da rede e, para isso, basta seguir as instruções que estão num artigo publicado no site da PCGuia – basta procurar por ‘Como alterar o DNS no router e no Windows’. Com o Pi-hole responsável pelo DNS da rede passa a ser possível filtrar o conteúdo indesejado, reduzir o trafego da rede e consultar estatísticas dos endereços bloqueados através do interface Web sem necessidade de ter qualquer aplicação instalada em computadores ou telefones.