Quizás te molestan los anuncios emergentes cada vez que lees un artículo en un sitio web. Con todos esos anuncios, ¿cómo bloquearlos? Instala Pi-hole en Docker y utiliza Pi-hole como un bloqueador de anuncios en toda la red para mejorar el rendimiento de tu red.
En este tutorial, aprenderás cómo configurar y ejecutar Pi-hole en un contenedor Docker para bloquear anuncios y sitios web. ¿Suena emocionante? ¡Sigue leyendo para aprender más!
Prerrequisitos
Este tutorial será una demostración práctica. Si deseas seguirlo, asegúrate de tener lo siguiente:
- Docker instalado en Windows 10 (pero cualquier sistema operativo compatible funcionará).
- A Windows 10 PC – This tutorial uses Windows 10 OS Build 19042.1165.
Creando dos volúmenes Docker persistentes
Cuando configures Pi-hole en un contenedor Docker, primero necesitarás crear un volumen Docker para almacenar la aplicación Pi-hole y la configuración DNS.
Abre PowerShell como administrador, luego ejecuta los siguientes comandos para que Docker cree dos volúmenes (`volume create`) llamados `pihole_app` y `dns_config`. También puedes cambiar los nombres según tu preferencia.
A continuación, verifica que los volúmenes de Docker se hayan creado correctamente ejecutando el siguiente comando que lista todos los volúmenes de Docker disponibles en tu máquina.
A continuación, verás dos volúmenes recién creados llamados `pihole_app` y `dns_config`.

Ejecutar Pi-hole en un contenedor de Docker con variables de entorno
Ahora que tienes dos volúmenes persistentes disponibles, estás listo para ejecutar un contenedor de Docker usando la imagen base de Pi-hole. Pero primero, necesitarás tomar nota de tu dirección IP local.
Ejecuta el siguiente comando para obtener tu dirección IP local. Tu dirección IP local es necesaria para ejecutar correctamente el único comando de Docker.
A continuación, ejecuta el comando siguiente para descargar la imagen base de `pihole/pihole` desde Docker Hub. Reemplaza los valores según corresponda utilizando la tabla a continuación como referencia. La tabla explica el propósito de cada bandera del comando.
Bandera del Comando Docker de 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. |
A continuación, puedes ver el comando que extrae la imagen base de pihole/pihole
desde Docker Hub. Una vez que la imagen pihole/pihole
se descarga en tu máquina, el comando continúa automáticamente y sigue los parámetros que has establecido en el comando.

Después de extraer la imagen base de pihole/pihole
, verás una salida como la siguiente, lo que indica que ya puedes ejecutar el panel de control de Pi-hole desde el contenedor.

Acceso a la interfaz web del panel de control de Pi-hole
Una vez que el contenedor Docker que creaste está en ejecución, ahora puedes acceder al panel de control de Pi-hole. El panel de control de Pi-hole es una interfaz gráfica que te permite configurar qué anuncios bloquear, ya sea a través de tu propia lista negra o listas negras mantenidas por la comunidad.
Navega a http://localhost:81 en tu navegador, ya que has mapeado previamente el puerto 81
de la máquina anfitriona al puerto 80
del contenedor Docker. Al hacerlo, tu navegador web redirige la página al panel de control de Pi-hole.
Si estableciste un puerto diferente al ejecutar el comando
docker
anterior, cambia el puerto para acceder al panel de control de Pi-hole. Por ejemplo, http://localhost:n donde ‘n’ representa el número de puerto.
Ahora, inicia sesión en el panel de control de Pi-hole con la contraseña que estableciste al ejecutar el comando docker
en la sección “Ejecución del contenedor Docker de Pi-hole con variables de entorno”. Para este tutorial, la contraseña es “password” (sin comillas).

Como se puede ver a continuación, el contenedor de Pi-hole no está bloqueando activamente los anuncios y está en modo de espera esperando lo que llama “consultas” o solicitudes de anuncios para evaluar.

Apuntando el servidor DNS del host a la dirección IP de Pi-hole
Con el servidor Pi-hole en funcionamiento, ¿cómo se empiezan a bloquear los anuncios en su sistema local? Necesita indicarle a su sistema local que enrutará todas las solicitudes a la dirección IP de Pi-hole y bloqueará cualquier anuncio coincidente. ¡Siga leyendo para aprender cómo hacerlo!
1. Haga clic con el botón derecho en el icono de configuración de red en la bandeja del sistema de Windows y elija Abrir Configuración de Red e Internet para ver la lista de todos los adaptadores de red en su máquina.

2. A continuación, haga clic con el botón derecho en su adaptador de red y elija Propiedades. Aparecerá la ventana de configuración de su adaptador de red.

3. Seleccione Versión de Protocolo de Internet 4 (TCP/IPv4) de la lista bajo la pestaña Red, luego haga clic en el botón Propiedades.

4. Configure las propiedades IPv4 con lo siguiente:
- Seleccione la opción Usar la siguiente dirección IP para establecer una dirección IP estática. La asignación de IP estática al equipo host permite que otros dispositivos se conecten y utilicen el bloqueador de anuncios. La puerta de enlace predeterminada para el enrutador difiere según la configuración del proveedor de servicios de Internet en su país.
- Seleccione la opción Usar las siguientes direcciones del servidor DNS para configurar su servidor DNS y agregue un servidor DNS en el campo Servidor DNS preferido. Ingrese la dirección IP del servidor Docker que configuró en el comando
docker
anterior en la sección “Ejecutar el contenedor de Pi-hole Docker con variables de entorno” - Agregue un servidor alternativo como el servidor de Google 8.8.8.8 en el campo Servidor DNS alternativo y haga clic en OK. El servidor DNS alternativo actúa como un servidor DNS en caso de que el contenedor Docker de Pi-hole falle por alguna razón. Puede darle otro valor al servidor DNS alternativo según su preferencia.

Configuración del DNS de un solo dispositivo
Suponiendo que tiene un teléfono inteligente u otro dispositivo conectado a la misma red, puede apuntar el servidor DNS de ese dispositivo para que coincida con la dirección IP del host. En este tutorial, un teléfono inteligente está conectado a la misma red.
1. En la configuración de red inalámbrica del teléfono inteligente, toque Manual e ingrese la dirección IP de la máquina host. También puede agregar direcciones IP alternativas en caso de que Pi-hole falle.
La interfaz de configuración de la red inalámbrica en los teléfonos inteligentes puede variar.

2. Ahora visite algunos sitios web que tengan muchos anuncios en el navegador web de su teléfono inteligente.
Para este ejemplo, los sitios web de Daily Mail y el New York Times fueron visitados repetidamente durante 5-10 minutos. El administrador del navegador en vivo en el panel de Pi-hole muestra la cantidad de anuncios bloqueados desde el dispositivo, como se muestra a continuación.
Las gráficas de barras son una adición reciente a la última versión de Pi-hole en el momento de escribir esto. Algunas versiones antiguas tienen gráficas de líneas en su lugar.

Habilitar el Bloqueo en Toda la Red Doméstica a través de la Configuración del Enrutador
En lugar de configurar un servidor DNS en un solo dispositivo, intenta configurar servidores DNS para todos los dispositivos en la configuración de tu enrutador. Dependiendo de tu enrutador, puede o no haber una disposición para utilizar la dirección IP.
Para esta demostración, el enrutador no permitió el acceso para cambiar los servidores DNS y DHCP. Por lo tanto, la configuración completa de la red doméstica no se exploró completamente en este tutorial debido a las limitaciones del enrutador.
En una vista de administrador de muestra, es posible que puedas codificar la IP del servidor DNS de la misma manera que se hizo en un solo dispositivo. Esta demostración utiliza un enrutador Prolink PRS1841U-v2 bloqueado al ISP.
La interfaz de configuración de DNS varía de un enrutador a otro, pero la configuración se ve como la que se muestra a continuación.

Puede desactivar el servidor DHCP en el enrutador y luego habilitar el servidor DHCP en Pi-hole en su lugar. Una discusión de ejemplo en la comunidad de Pi-hole muestra esto con más detalle.
Bloqueo de Sitios Web a través del Panel de Control de Pi-hole
La instalación predeterminada de Pi-hole bloquea alrededor de 92,725 sitios web de forma predeterminada, pero también puede agregar más sitios web a través de listas negras del creador de Pi-hole y otras listas compartidas por los seguidores de Pi-hole.
1. Guarde los sitios web a bloquear en un archivo de texto con el nombre que prefiera. Para este ejemplo, el archivo se llama blocklist.txt.
2. Ejecute el comando docker
a continuación para copiar el archivo blocklist.txt (cp blocklist.txt
) al volumen del contenedor de Docker en un archivo llamado blacklist.txt. Mantenga el archivo blacklist.txt en el volumen de Docker para que Pi-hole lo detecte automáticamente.
3. Finalmente, navega de nuevo al panel de administración de Pi-hole. Haz clic en el menú Tools en el panel izquierdo y luego en el enlace Update Gravity. Por último, haz clic en Update para obtener una lista actualizada de URLs que Pi-hole bloqueará.

A successful update will look like the one below.

Actualizando la Lista de Bloqueo de Sitios Web a través de la Consola
Quizás prefieras ejecutar comandos de consola en lugar de navegar por el panel de Pi-hole. Si es así, puedes ejecutar el comando docker en PowerShell para bloquear sitios web. Ejecuta el comando docker exec
a continuación para crear una sesión interactiva en la terminal del contenedor Docker pihole_app
, que permite la ejecución de comandos.
Una vez que la sesión de la terminal esté abierta, ejecuta el comando a continuación para actualizar la lista negra de URLs de Pi-hole.
Vuelve a ejecutar
pihole -g
de vez en cuando para que tu bloqueador de anuncios se mantenga actualizado.
Bloqueo de Sitios Web a través de Listas Negras de URLs Mantenidas por la Comunidad
Algunas URLs están dedicadas a ser actualizadas regularmente por sus colaboradores y otras no, por lo que cargar una lista negra antigua puede no reflejar los últimos cambios.
Aprovecha la función de gestión de grupos de listas de bloqueo Adlist en Pi-hole. En el panel de Pi-hole, haz clic en el menú Group Management → Adlists en el panel izquierdo, luego haz clic en Add para elegir la lista de URLs que deseas agregar en Pi-hole.

Conclusión
En este tutorial, aprendiste cómo descargar una imagen Docker de Pi-Hole, probar una interfaz web de Pi-hole con escucha activa, y probar un dispositivo externo para conectarse a Pi-hole. También aprendiste cómo bloquear anuncios y sitios web, y viste el panel de control de Pi-hole en acción mientras los bloqueaba.
Con este conocimiento, ¿por qué no utilizar cualquier máquina host para bloquear anuncios en otros dispositivos conectados a la misma red?