Pi-hole es un sinkhole de DNS que protege los dispositivos de contenido no deseado, sin instalar ningún software del lado del cliente, usando las siguientes tecnologías:
dnsmasq
, un servidor DNS/DHCP ligerolighttpd
, un servidor web diseñado y optimizado para alto rendimiento
La instalación en Docker se realiza usando la imagen pihole/pihole
.
La forma más sencilla es usar un fichero docker-compose.yml
con el siguiente contenido:
version: "3"
services:
pihole:
image: pihole/pihole:latest
container_name: pihole
environment:
- TZ=Europe/Madrid
- FTLCONF_LOCAL_IPV4=192.168.1.80
volumes:
- /home/pi/volumes/pihole/etc:/etc/pihole
- /home/pi/volumes/pihole/dnsmasq.d:/etc/dnsmasq.d
ports:
- 53:53/tcp
- 53:53/udp
- 8080:80/tcp # Porque habitualmente el 80 estará ocupado por un dashboard o un proxy
restart: always
Nota: Si se utiliza Pi-hole como servidor DCHP hay que cambiar algunas cosas, como per ejemplo añadir la capability NET_ADMIN
.
Se puede usar docker-compose up -d
o usar el contenido del fichero en Portainer.
Configuración
Una vez en marcha, se puede acceder a Pi-hole a través del puerto 8080
(en este ejemplo http://192.168.1.180:8080) y comenzar la configuración.
La contraseña inicial se genera de forma aleatoria, por lo que es necesario mirar cuál es mediante el comando docker logs pihole | grep random
.
Lo primero y más importante es cambiar esa contraseña por otra que hayamos generado nosotros:
- Desde el host ejecutar:
docker exec -it pihole /bin/bash
- Desde el contenedor de Pi-hole ejecutar:
pihole -a -p
e introducir la nueva contraseña
A continuación hay que configurar el servidor de DNS upstream que se quire utilizar:
- Acceder al menú
Settings
- Acceder a la pestaña
DNS
- Marcar los dos servidores de
Quad9 (filtered, DNSSEC)
en IPv4- 9.9.9.9
- 149.112.112.112
Listas
Si en algún momento es necesario borras las blocklist se puede hacer desde terminal sqlite3 /etc/pihole/gravity.db "DELETE FROM adlist"
o accediendo a la opción Adlists
del menú lateral.
Para restaurar la lista por defecto únicamente hay agregar la siguiente URL:
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
Cada vez que se añaden o borran listas hay que actualizar Gravity (Tools
→ Update Gravity
) para que se genere la base de datos completa, sin errores ni duplicados.
Actualizar
Si ya se había instalado Pi-hole anteriormente, se puede actualizar de la siguiente manera:
docker stop pihole
docker rm pihole
docker rmi pihole/pihole
docker-compose up -d
Soporte
Algunos comandos para gestionar la configuración del contenedor:
# Acceder al shell mientras el contenedor está ejecutándose
docker exec -it pihole /bin/bash
# Monitorizar los logs del contenedor en tiempo real
docker logs -f pihole