- Implementación de un filtrado de DNS a nivel de red para eliminar publicidad en todos los dispositivos conectados.
- Despliegue optimizado mediante contenedores Docker para facilitar la gestión, persistencia de datos y actualizaciones.
- Configuración de seguridad mediante la gestión de contraseñas y la elección de servidores DNS upstream confiables.
- Personalización avanzada a través de dominios locales y control de listas negras mediante comandos de terminal.
¿Harto de que la publicidad te invada cada vez que navegas por internet o usas alguna aplicación en el móvil? Pues mira, existe una solución fenomenal llamada Pi-hole, que básicamente actúa como un filtro inteligente de DNS. Lo mejor de todo es que no tienes que instalar nada en cada dispositivo de tu casa; el sistema trabaja desde el núcleo de tu red, interceptando y bloqueando el contenido no deseado antes incluso de que llegue a tu pantalla.
Para montar este sistema, la opción más inteligente hoy en día es utilizar Docker. Al meter Pi-hole en un contenedor, evitas ensuciar el sistema operativo de tu equipo, facilitas las actualizaciones a niveles absurdos y puedes aprovechar al máximo el hardware, ya sea una Raspberry Pi, un servidor antiguo o incluso una máquina virtual en Ubuntu o Debian, sin que los servicios choquen entre sí.
Requisitos previos y preparación del terreno
Antes de lanzarnos a la piscina, conviene saber que Pi-hole es extremadamente ligero. Para que vaya como un tiro, solo necesitas unos 512 MB de RAM y entre 2 y 4 GB de espacio en disco. En cuanto al sistema operativo, se lleva de maravilla con distribuciones que usen systemd o sysvinit, como Debian, Ubuntu, Fedora o Raspberry Pi OS.
Un punto crítico es la red. Para que el sistema sea estable, Pi-hole requiere una dirección IP estática. Si no quieres complicarte configurando el servidor manualmente, puedes hacer una reserva de IP en tu router para que siempre asigne la misma dirección al equipo donde resida el contenedor.
Despliegue de Pi-hole mediante Docker
La manera más cómoda de ponerlo en marcha es a través de un archivo docker-compose.yml. Este método permite definir toda la configuración de una sola vez. Es fundamental mapear los volúmenes (como /etc/pihole y /etc-dnsmasq.d) en carpetas locales de tu host para que, si actualizas la imagen del contenedor, no pierdas todas tus configuraciones ni tus listas negras.
En el archivo de configuración, debes prestar atención a los puertos. El puerto 53 es el corazón del DNS y debe estar libre. Si ves que el contenedor no arranca, es probable que systemd-resolved o dnsmasq estén ocupando ese puerto en el host. En esos casos, tendrás que desactivar el servicio conflictivo o configurar un puente para redirigir el tráfico.
Si decides usar Pi-hole también como servidor DHCP, recuerda que debes añadir la capacidad NET_ADMIN en la sección de cap_add del compose y, preferiblemente, utilizar el modo de red host (network_mode: host) para evitar líos de conectividad.
Configuración inicial y gestión del acceso
Una vez que ejecutas el comando docker-compose up -d, el sistema estará vivo. Para entrar en el panel de control, accede a la IP de tu servidor a través del puerto que hayas asignado (por defecto el 80, aunque puedes cambiarlo al 8080 o 89 para evitar conflictos con otros webservers). Si no definiste una contraseña en la variable de entorno WEBPASSWORD, el sistema generará una aleatoria que podrás encontrar revisando los logs con el comando docker logs pihole | grep random.
Para mayor seguridad, lo ideal es cambiar esa clave rápidamente. Puedes entrar en la terminal del contenedor mediante docker exec -it pihole /bin/bash y ejecutar el comando pihole -a -p para establecer una contraseña que sea fácil de recordar para ti pero difícil para los demás.
Optimización del filtrado y DNS Upstream
Para que Pi-hole sepa a quién preguntar cuando no conoce una dirección, debes configurar un servidor DNS ascendente. Una opción muy robusta es Quad9, marcando sus servidores filtrados (como el 9.9.9.9) en la pestaña de DNS de los ajustes. Esto añade una capa extra de seguridad y privacidad a tu navegación.
El alma de Pi-hole son las listas de bloqueo. Si quieres empezar con algo sólido, puedes añadir la lista de StevenBlack. Siempre que modifiques las listas, ya sea borrando entradas con SQLite3 o añadiendo nuevas URLs, es imprescindible ir a Tools y ejecutar el Update Gravity para que la base de datos se refresque y los cambios surtan efecto.
Trucos avanzados: Dominios locales y gestión
Si tienes varios servicios en casa, puedes crear nombres de dominio locales para no tener que memorizar IPs. Para ello, crea un archivo llamado local.list en el volumen montado de Pi-hole, definiendo el formato IP y dominio. Luego, crea un archivo de configuración para dnsmasq que haga referencia a esa lista y reinicia el contenedor.
Para gestionar el sistema sin entrar en la web, existen comandos muy útiles que puedes ejecutar desde el host. Por ejemplo, para añadir un dominio a la lista negra usa pihole -b midominio.com o para desactivar el filtrado temporalmente durante 10 minutos puedes usar pihole disable 10m, algo muy práctico cuando una web legítima se queda bloqueada por error.
Llevar el control de la publicidad en casa es totalmente viable combinando un hardware modesto con la flexibilidad de Docker, asegurando que el puerto 53 esté despejado y configurando correctamente los volúmenes para persistir los datos. Una vez ajustado el DNS en el router y optimizadas las listas de Gravity, disfrutarás de una red limpia y mucho más rápida en todos tus dispositivos.
