Montar un servidor DNS bloqueador de publicidad mediante Pi-Hole en contenedor Docker. Preparamos un fichero compose.yaml para desplegar el contenedor de forma automática con una configuración preestablecida.
- Requisitos para montar servidor DNS bloqueador de publicidad Pi-Hole en Docker.
- Preparar fichero compose.yaml para Pi-Hole.
- Desplegar contenedor Docker con Pi-Hole.
- Acceso a la gestión de Pi-Hole y configuración DNS de algún equipo para que use el servidor Pi-Hole.
- Actualizar imagen de Pi-Hole en Docker.
Requisitos para montar servidor DNS bloqueador de publicidad Pi-Hole en Docker
Necesitaremos disponer de Docker Desktop. En el siguiente tutorial explicamos cómo instalar Docker Desktop en Windows:
O bien en Linux:
Preparar fichero compose.yaml para Pi-Hole
Crearemos una carpeta en el equipo, para ello, abriremos una ventana de MS-DOS (Símbolo de sistema) en Windows o bien un shell de comandos en Linux (ventana de terminal). Para crear una carpeta en Windows ejecutaremos el comando:
1 |
mkdir pi-hole |
En el caso de Linux, ejecutaremos el mismo comando:
1 |
mkdir pi-hole |
Accederemos a la carpeta creada con:
1 |
cd pi-hole |
Crearemos un fichero de texto, en Windows con:
1 |
notepad compose.yaml |
En Linux con:
1 |
nano compose.yaml |
Agregaremos el siguiente contenido al fichero compose.yaml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
version: "3" services: pihole: container_name: pihole image: pihole/pihole:latest ports: - "53:53/tcp" - "53:53/udp" - "67:67/udp" - "8080:80/tcp" environment: TZ: 'Europe/Madrid' WEBPASSWORD: 'MiContraseña' volumes: - './etc-pihole:/etc/pihole' - './etc-dnsmasq.d:/etc/dnsmasq.d' cap_add: - NET_ADMIN restart: unless-stopped |
En el caso del fichero anterior, el puerto que se usará para acceso a la administración de Pi-Hole será el 8080 (podremos cambiarlo) y la contraseña de acceso será «MiContraseña» (que por supuesto también podemos cambiar).
Guardaremos los cambios en el fichero compose.yaml.
Desplegar contenedor Docker con Pi-Hole
Una crea creado el fichero compose.yaml, desde la misma carpeta donde tengamos este fichero, ejecutaremos el siguiente comando (es el mismo tanto para Windows como para Linux):
1 |
docker compose up -d |
Acceso a la gestión de Pi-Hole y configuración DNS de algún equipo para que use el servidor Pi-Hole
Para acceder a la consola de gestión web de Pi-Hole, abriremos un navegador y accederemos a:
http://localhost:8080/admin
(En nuestro caso hemos usado el puerto 8080 en el despliegue del contenedor).
Desde «Settings», podremos configurar el servidor DNS, entre otras cosas, los propios DNS externos. Por defecto, Pi-Hole usa los DNS de Google:
Para probar nuestro servidor DNS con Pi-Hole en Docker, configuraremos las propiedades de red de alguno de los equipos de que dispongamos en nuestra organización. En equipos Windows, estableceremos el DNS con la dirección IP del equipo donde tengamos Docker desplegado con el contenedor de Pi-Hole, dado que será este equipo el que proporcione el servicio DNS.
Si la IP del equipo donde tenemos instalado Docker Desktop y desplegado el contendor con Pi-Hole tiene la IP: 192.168.1.10, a cualquier equipo de la red que queramos que use como servidor de DNS el Pi-Hole desplegado, le agregaremos como DNS primario la IP 192.168.1.10:
Conforme vayamos agregando clientes, desde la consola web de Pi-Hole, podremos ver las estadísticas en tiempo real:
- Número total de consultas DNS realizadas al servidor Pi-Hole.
- Consultas DNS bloqueadas.
- Número total de dominios en listas negras.
- Top 10 dominios permitidos con más consultas DNS.
- Top 10 dominios bloqueados con más consultas DNS.
- Top 10 clientes con más consultas DNS.
Actualizar imagen de Pi-Hole en Docker
Cuando Pi-Hole anuncie alguna actualización de alguno de sus módulos, para actualizar el servidor Pi-Hole en Docker, Seguiremos los siguientes pasos.
Accederemos a la carpeta donde hemos creado el fichero compose.yaml para el despliegue de Pi-Hole. Desde esta carpeta, ejecutaremos el siguiente comando para indicar a Docker que descargue la última versión disponible de Pi-Hole:
1 |
docker compose pull |
A continuación, indicaremos a Docker que inicie el archivo compose. Puesto que ya se está ejecutando, si hay una nueva imagen disponible, Docker detendrá el contenedor actual y lo volverá a iniciar con la nueva imagen:
1 |
docker compose up -d |