Cómo configurar Pihole en un contenedor Docker

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.

docker volume create pihole_app
docker volume create dns_config

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.

docker volume ls

A continuación, verás dos volúmenes recién creados llamados `pihole_app` y `dns_config`.

Creating two Docker Volumes for the Pi-hole Configurations.

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.

ipconfig /all

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.

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

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.

Downloading pihole/pihole image.

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.

Seeing the Pi-hole Docker Container Running Properly.

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).

Accessing the Pi-hole dashboard.

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.

Viewing Pi-hole dashboard Default Page.

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.

Accessing Network & Internet Settings

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.

Accessing Network Adapter Properties.

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.

Accessing IPv4 Properties.

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.
Configuring IPv4 Properties

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.

Configuring DNS server on smartphone

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.

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

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.

Manually setting a router DNS settings.

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.

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

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á.

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

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.

docker exec -it pihole_app /bin/bash

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.

pihole -g

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 ManagementAdlists en el panel izquierdo, luego haz clic en Add para elegir la lista de URLs que deseas agregar en Pi-hole.

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

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?

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