Cómo instalar Pi-hole en Docker - Bloqueador de anuncios y DNS autohospedado (release 2026.10.0)

Pi-hole | DNS | Docker | Adblock | Self-hosted | Release 2026.10.0

Pi-hole 6.5 en Docker: bloqueador de anuncios y DNS autohospedado, con las novedades de la release 2026.10.0

Pi-hole es un servidor DNS que bloquea anuncios, rastreadores y dominios no deseados para toda tu red local. Te explico cómo desplegarlo con Docker Compose usando la imagen oficial y qué trae la última release de la imagen Docker, que corrige 17 avisos de seguridad en FTL, Web y Core.

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Pi-hole en Docker en el canal GENBYTE:

¿Qué es Pi-hole en Docker?

Pi-hole actúa como servidor DNS para toda tu red local. Cuando un dispositivo pide resolver un dominio de publicidad o de rastreo, Pi-hole responde con una dirección vacía y la conexión nunca llega a salir de casa. Funciona en cualquier dispositivo que use tu red, sin instalar nada en cada móvil, televisor o portátil.

La versión 6 de Pi-hole incorpora una interfaz web renovada, una API documentada y el motor DNS FTL. La imagen oficial pihole/pihole empaqueta todo para ejecutarse en un contenedor, y su configuración se gestiona con variables de entorno FTLCONF_ y carpetas persistentes.

Idea clave: Pi-hole no sustituye a tu router ni a tu firewall. Es el DNS que tus dispositivos consultan, y decide qué dominios se resuelven y cuáles se bloquean.

Novedades de la release 2026.10.0

La release 2026.10.0 de la imagen Docker se publicó el 17 de octubre. Incluye las siguientes versiones de componentes: Pi-hole FTL v6.8 (el motor DNS), Pi-hole Web v6.6.1 (la interfaz) y Pi-hole Core v6.5 (los scripts de gestión).

Seguridad: 17 avisos corregidos

La release cubre 17 avisos de seguridad repartidos entre FTL, Web y Core. Varios son de severidad alta.

Escalada de privilegios

Se corrigen escaladas de privilegios de usuario pihole a root en Core, incluida una derivada de un fix anterior (CVE-2026-41489).

Descargas fail closed

Las descargas de FTL y de releases de GitHub ahora fallan de forma segura: si no se pueden verificar, el proceso se detiene en vez de continuar.

Contraseña web protegida

La contraseña web de los secrets de Docker ya no se imprime en el modo de depuración de bash (xtrace).

Repositorios de confianza

Ajuste en la confianza de los repositorios de Core y Web para el usuario pihole, relacionado con el aviso GHSA-xch2-4qxw-g5vj.

Base Alpine actualizada

La imagen base pasa de Alpine 3.24.1 a 3.24.2, actualización automatizada con Dependabot.

Avisos de seguridad más relevantes

  • Severidad alta: lectura de archivos autenticada en FTL, escalada de privilegios de pihole a root (con bypass del fix de CVE-2026-41489), escalada mediante la capability CAP_CHOWN de pihole-FTL, y un chown arbitrario de directorios desde gravity.sh.
  • Severidad media: denegación de servicio en DNS mediante consultas CHAOS/TXT sin autenticar, y lectura de secretos de autenticación del administrador desde sesiones de app-password y CLI.
  • Severidad baja: XSS almacenado en varias páginas de la interfaz web, un caso de CORS abierto con CSRF y DNS rebinding que permite cambiar una Pi-hole v6 desde el navegador de un usuario de la LAN, y varios use-after-free y double free que pueden tumbar el resolver.
Recomendación: si tienes Pi-hole 6.x desplegado, actualiza a la 2026.10.0 cuanto antes. Dedica especial atención a la interfaz web: no la expongas a Internet, y si la usas desde fuera de casa, ponla detrás de un VPN o de un proxy con autenticación.

Requisitos del sistema

  • Docker y Docker Compose (en sistemas antiguos, el comando puede ser docker-compose)
  • Un host Linux con IP fija en tu red local (recomendado para que los dispositivos siempre encuentren el DNS)
  • Puertos libres: 53 TCP/UDP (DNS), 80 TCP (interfaz web) y 443 TCP (HTTPS, con certificado autofirmado generado por FTL)
  • Opcional: puerto 67 UDP si usas Pi-hole como servidor DHCP, y 123 UDP si lo usas como servidor NTP
Aviso con Ubuntu: systemd-resolved suele ocupar el puerto 53 en el host. Si el contenedor no arranca por conflicto de puerto, revisa qué proceso lo usa con sudo ss -lntup | grep :53 antes de tocar nada.

Instalación con Docker Compose

Paso 1: docker-compose.yml

# Basado en el template oficial de Pi-hole v6 services: pihole: container_name: pihole image: pihole/pihole:2026.10.0 ports: - "53:53/tcp" - "53:53/udp" - "80:80/tcp" - "443:443/tcp" # Descomenta si usas Pi-hole como servidor DHCP #- "67:67/udp" # Descomenta si usas Pi-hole como servidor NTP #- "123:123/udp" environment: TZ: 'Europe/Madrid' # Cambia esta contraseña por una propia y segura FTLCONF_webserver_api_password: 'cambia-esta-contrasena' # Con la red bridge por defecto, el DNS debe escuchar en ALL FTLCONF_dns_listeningMode: 'ALL' volumes: # Carpeta persistente con la configuración y las bases de datos - './etc-pihole:/etc/pihole' # Descomenta solo si tienes ficheros dnsmasq.d personalizados (ver nota) #- './etc-dnsmasq.d:/etc/dnsmasq.d' cap_add: # Necesario solo para DHCP - NET_ADMIN # Necesario solo si Pi-hole sincroniza la hora del host como cliente NTP - SYS_TIME # Opcional: da algo más de tiempo de CPU a Pi-hole - SYS_NICE restart: unless-stopped
Importante: la contraseña de ejemplo es solo un marcador. Si no defines FTLCONF_webserver_api_password, Pi-hole genera una aleatoria al arrancar. Pon una propia antes de levantar el contenedor.

Paso 2: Iniciar Pi-hole

docker compose up -d # Revisa los logs hasta que el arranque termine docker compose logs -f pihole

Paso 3: Probar el DNS

# Desde el propio host, consulta a Pi-hole dig @127.0.0.1 example.com # Un dominio de publicidad debería responder con 0.0.0.0 o con la IP de bloqueo dig @127.0.0.1 doubleclick.net

Acceder a la interfaz web

Interfaz web: http://localhost/admin
Desde otro dispositivo: http://IP_DEL_HOST/admin
Carpeta de configuración: ./etc-pihole

Primeros pasos

  1. Entra en la interfaz web con la contraseña que definiste en FTLCONF_webserver_api_password.
  2. En tu router, configura el DNS de la red para que apunte a la IP fija de tu host.
  3. Revisa las listas de bloqueo activas y añade las que necesites desde la sección de adlists.
  4. Consulta el panel de consultas para comprobar que los dominios bloqueados aparecen como tal.
Consejo: si la red usa la configuración bridge por defecto de Docker, Pi-hole recibe consultas desde la IP del contenedor y no ve las IPs reales de los clientes. Usar network_mode: host resuelve esto, pero en ese caso cambian los puertos y debes ajustar la configuración a tu entorno.

Casos de uso

  • Bloqueo de publicidad en toda la casa: televisores, móviles y consolas sin instalar extensiones.
  • Control de rastreadores: menos telemetría saliendo de tus dispositivos.
  • DNS propio para el laboratorio: resolver nombres de tus servicios autohospedados desde la misma instancia.
  • Servidor DHCP ligero: Pi-hole también puede repartir direcciones, si necesitas controlar la red desde un único punto.

Configuración avanzada

Pi-hole como servidor DHCP

# Descomenta el puerto 67 y el cap_add NET_ADMIN ya incluido ports: - "67:67/udp" # Aviso: si tu router también reparte DHCP, desactívalo antes para evitar conflictos

Persistir ficheros dnsmasq.d personalizados

# Añade a environment y descomenta el volumen correspondiente FTLCONF_misc_etc_dnsmasq_d: 'true' - './etc-dnsmasq.d:/etc/dnsmasq.d'

Comprobar la versión en ejecución

# Dentro del contenedor, muestra las versiones de Core, Web y FTL docker exec -it pihole pihole -v
Nota sobre migración desde v5: si vienes de Pi-hole v5 y ya usabas la carpeta etc-dnsmasq.d, mantenla montada durante el primer arranque de v6 para que la migración sea completa. Después puedes quitarla.

Gestión y mantenimiento

Ver estado

docker compose ps

Ver logs

docker compose logs -f pihole

Actualizar a la release 2026.10.0

# Cambia la etiqueta en docker-compose.yml o usa latest docker compose pull docker compose up -d
Etiquetas: puedes fijar la versión (pihole/pihole:2026.10.0) para actualizar de forma controlada, o usar latest para recibir siempre la última. Las notas de cada release detallan los componentes incluidos.

Detener Pi-hole

docker compose down

Stack técnico

  • Motor DNS: FTL (Faster Than Light), v6.8 en esta release
  • Interfaz web y API: Pi-hole Web v6.6.1
  • Scripts de gestión: Pi-hole Core v6.5
  • Imagen base: Alpine 3.24.2
  • Configuración: variables FTLCONF_ y carpeta persistente /etc/pihole
  • Licencia: consulta el repositorio oficial para los detalles de licencia de cada componente

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.