Blog Logo

13 May 2025 ~ 15 min read

Bloquea TODOS los Anuncios de tu Red (¡Incluso sin Raspberry Pi!) | Tutorial AdGuard


A ver, seamos sinceros, ¿quién no está hasta las narices de los anuncios? Abres una web de noticias: anuncios. Vas a buscar esa receta de jamones al vapor: anuncios. Sales de la ducha y… ¡Antonio Lobato! ¿Quieres saber cuánto vale tu coche?

Internet se ha vuelto un campo de minas publicitario.

Por eso, muchos tiramos de bloqueadores en el navegador, que nos salvan un poco el día. (Aunque en YouTube lo quitamos para apoyar a los creadores, ¿verdad? ¿VERDAD?). Pero claro, tienes que instalarlo en el PC, en el móvil, en la tablet… y a veces es un rollo o directamente imposible ejem, Smart TV.

Pero, ¿y si te dijera que puedes hacer que TODOS los cacharros conectados a tu WiFi bloqueen automáticamente esa plaga de anuncios y rastreadores? Y no solo eso, sino también páginas maliciosas, contenido para adultos (ideal si tienes peques o una empresa), y esas cookies que hacen que te persiga la lavadora que miraste hace tres semanas para comprar Y AHORA NO DEJAN DE SALIRTE LAVADORAS.

Pues sí, hay solución y se llama AdGuard Home. Quizás te suene más Pi-hole, que es parecido, pero a mí, personalmente, AdGuard me mola un poquito más.

En este post te voy a contar:

  1. Cómo funcionan estos bloqueadores a nivel de red.
  2. Las diferencias clave entre AdGuard Home y Pi-hole (y por qué me quedo con AdGuard).
  3. Lo más importante: Cómo instalar AdGuard Home GRATIS en tu propio servidor.

¡Vamos al lío!


¿Qué narices es AdGuard Home? Entendiendo los DNS

Vale, empecemos por el principio. AdGuard Home es, en esencia, un servidor DNS. “¿Un qué?”, te preguntarás. Tranqui, que te lo explico fácil.

Imagina que tu móvil tiene una agenda de contactos. Si quieres llamar a alguien, no necesitas saberte su número de memoria, buscas el nombre y llamas. Pues un DNS (Domain Name System) hace lo mismo pero con las páginas web.

Las webs viven en direcciones raras hechas de números (las IPs), como 172.217.160.142 (que es de Google, por ejemplo). Como nadie se aprende eso, los DNS actúan como la agenda: tú escribes google.com, el DNS busca la IP correspondiente y te conecta. ¡Magia!

dns-explain.webp

El “peligro” de los DNS de tu compañía

Normalmente, tu router usa los DNS de tu proveedor de Internet (Movistar, Vodafone, etc.). Esto significa que saben todas las webs que visitas. No ven el contenido gracias a HTTPS, pero sí tu historial de navegación. Y sí, usan esos datos para estadísticas… o para venderlos y mostrarte anuncios “personalizados” como los de la dichosa lavadora.

Por eso, una buena idea es cambiar de DNS. Puedes usar opciones públicas como las de Cloudflare (1.1.1.1), que además te ayudan a saltarte bloqueos absurdos, como los de LaLiga en España, ¡guiño, guiño!. De hecho, tengo un vídeo donde explico cómo hacerlo.


¿Cómo bloquea AdGuard Home los anuncios?

AdGuard Home es un servidor DNS, sí, pero uno supervitaminado y configurable. Cuando lo instalas y configuras en tu red (tranqui, ahora vamos a eso), esto es lo que pasa cada vez que intentas entrar a una web, por ejemplo, edunavajas.com:

  1. Tu dispositivo pregunta a AdGuard Home: “Oye, ¿cuál es la IP de edunavajas.com?“.
  2. AdGuard Home mira sus listas negras:
    • ¿Es una dirección conocida por meter anuncios? ¡Bloqueada! No devuelve nada.
    • ¿Es un rastreador o una web maliciosa? ¡Bloqueada!
    • ¿Es una página normal y maja como la mía? ¡Adelante! Te da la IP.
  3. Si la página carga contenido de otras direcciones (anuncios, scripts de seguimiento…), AdGuard repite el proceso para cada una. Las que están en listas negras, se bloquean y ni siquiera se descargan.

Resultado: Navegas más rápido, consumes menos datos y, lo mejor de todo, adiós anuncios y rastreadores Y todo esto, a la misma velocidad que un DNS normal, ni te enteras.

Además, puedes personalizarlo un montón:

  • Usar listas de bloqueo específicas (las de uBlock Origin, por ejemplo).
  • Bloquear servicios concretos (TikTok, Facebook, webs de apuestas…).
  • Establecer horarios de bloqueo (ideal para controlar el acceso de los niños).
  • Bloquear categorías enteras (adultos, redes sociales…).

panel-adguard.webp


AdGuard Home vs. Pi-hole: ¿Por qué me quedo con AdGuard?

Ambos son geniales y de código abierto, punto para los dos, pero para mí, AdGuard tiene varias ventajas actualmente:

  • Interfaz más moderna y sencilla: Es más agradable a la vista y fácil de usar, especialmente para configurar HTTPS.
  • Más funciones “de serie”:
    • DNS cifrado (DNS-over-HTTPS, DNS-over-TLS).
    • Servidor DHCP integrado (Pi-hole necesita configuración extra).
    • Bloqueo de phishing y malware integrado.
    • Control parental y Búsqueda Segura más fáciles de activar.
    • Todo esto sin instalar software adicional ni editar archivos raros.
  • Escrito en Go: Pi-hole usa PHP. Para los programadores, Go suele ser sinónimo de mejor rendimiento, menos dependencias y más mantenibilidad.
  • Instalación y fluidez: En general, AdGuard se siente más rápido y pulido.

Ojo, Pi-hole sigue siendo una opción fantástica y hay miles de tutoriales. Pero si te apatece cambiar un poco, con algo completo de serie y fácil de poner en marcha, AdGuard es mi recomendación.


¿Qué necesitas para montar AdGuard Home?

AdGuard es un servidor, así que necesitas… ¡un servidor! Pero no te asustes, no tienes que gastar un pastizal. Tienes varias opciones:

  1. Una Raspberry Pi: La opción clásica. Si tienes una por casa, genial, aunque la mía ya está pidiendo la jubilación de tanta tralla que le he dado.
  2. Un PC viejo: Cualquier ordenador que tengas cogiendo polvo puede servir, da igual si usa Windows o Linux, usaremos Docker.
  3. Un servidor VPS (¡Gratis!): Mi opción favorita si no tienes hardware disponible. Puedes conseguir un servidor GRATUITO en Oracle Cloud que va de maravilla. Tengo un tutorial completo aquí donde te explico paso a paso cómo conseguirlo (¡4 núcleos y 24GB de RAM gratis!). Este es el que usaré en este tutorial.

Requisito indispensable: El dispositivo que elijas debe estar encendido 24/7, ya que será el que gestione las peticiones DNS de tu red.


Instalación Paso a Paso (¡Servidor VPS y Raspberry Pi!)

Vamos a ver cómo instalar AdGuard usando Docker, que lo hace todo mucho más fácil. Los pasos son casi idénticos para un VPS o una Raspberry Pi, pero hay una pequeña diferencia inicial.

Paso 0: Preparación (Solo Raspberry Pi)

Si usas una Raspberry Pi:

  1. Instala Raspberry Pi OS: Si no lo tienes, usa la herramienta Raspberry Pi Imager para instalarlo en una tarjeta microSD. Es súper fácil.

  2. Conéctate por SSH: Una vez instalado y conectado a tu red, conéctate a la Raspberry por SSH. Necesitarás su IP local y tu usuario/contraseña.

  3. ¡IMPORTANTE! Asigna una IP Fija: Como la Raspberry estará en tu red local, su IP puede cambiar si se reinicia. Necesitamos que sea fija. Edita el archivo de configuración de red:

    sudo nano /etc/dhcpcd.conf
    

    Añade estas líneas al final, adaptando las IPs a tu red local (la IP que le asignas, la IP de tu router y la IP de tu router como DNS):

    interface eth0 # o wlan0 si usas WiFi
    static ip_address=192.168.1.104/24 # Elige una IP libre en tu red
    static routers=192.168.1.1 # La IP de tu router (puerta de enlace)
    static domain_name_servers=192.168.1.1 # La IP de tu router
    

    Guarda (Ctrl+O), sal (Ctrl+X) y reinicia (sudo reboot). A partir de ahora, esa será la IP fija de tu Raspberry Pi. ¡Apúntala!

Paso 1: Conexión SSH al Servidor (VPS o Raspberry Pi)

Conéctate a tu servidor (VPS o la Raspberry Pi con su nueva IP fija) usando SSH. Si usas el VPS de Oracle, necesitarás la IP pública y la clave SSH que descargaste al crearlo.

# Para VPS (ejemplo Oracle Cloud con usuario ubuntu)
ssh -i /ruta/a/tu/clave.key ubuntu@<IP_PUBLICA_VPS>

# Para Raspberry Pi (ejemplo con usuario pi)
ssh pi@<IP_FIJA_RASPBERRY>

(Opcional: Yo uso la terminal Warp, Está muy completa. échale un ojo si quieres).

Paso 2: Instalar Docker y Docker Compose

Si no tienes Docker instalado, ejecuta estos comandos:

# Actualiza el sistema
sudo apt update && sudo apt upgrade -y

# Instala dependencias
sudo apt install -y ca-certificates curl gnupg lsb-release

# Añade la clave GPG oficial de Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Configura el repositorio de Docker
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Instala Docker Engine, CLI, Containerd y Docker Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Paso 3: Preparar la Configuración de AdGuard Home

Vamos a crear la estructura de carpetas y el archivo de configuración de Docker Compose:

# Crea la carpeta principal para AdGuard
mkdir adguard-home
cd adguard-home

# Crea las carpetas para los datos y la configuración
mkdir adguard
mkdir adguard/work 
mdkri adguard/conf

# Crea el archivo docker-compose.yml
nano docker-compose.yml

Pega el siguiente contenido en el editor nano. ¡Ojo! He puesto el puerto 8181 para la interfaz web. Puedes dejar el 80 por defecto si no lo tienes ocupado, cambiando a 80:80/tcp.

services:
  adguardhome:
    image: adguard/adguardhome:latest
    container_name: adguardhome
    restart: unless-stopped
    ports:
      - "53:53/tcp"
      - "53:53/udp"     
      - "67:67/udp"     
      - "8181:8181/tcp" 
      - "443:443/tcp"   
      - "3000:3000/tcp" 
    volumes:
      - ./adguard/work:/opt/adguardhome/work
      - ./adguard/conf:/opt/adguardhome/conf

Guarda el archivo (Ctrl+O) y sal (Ctrl+X).

Paso 4: ¡Liberar el Puerto 53! (Importante en VPS/Ubuntu)

En muchas instalaciones de Ubuntu/Debian (especialmente en VPS), un servicio llamado systemd-resolved ya está usando el puerto 53, que necesitamos para nuestro DNS. ¡Hay que echarlo!

  1. Comprueba si el puerto 53 está ocupado:

    sudo lsof -i :53
    

    Si ves algo escuchando (LISTEN) en el puerto 53 (probablemente systemd-resolve), sigue los siguientes pasos. Si no sale nada, ¡perfecto!, puedes saltar al Paso 5.

  2. Detén y deshabilita systemd-resolved:

    sudo systemctl disable systemd-resolved.service
    sudo systemctl stop systemd-resolved.service
    
  3. Desvincula el archivo resolv.conf gestionado por systemd:

    sudo unlink /etc/resolv.conf
    
  4. Crea un nuevo resolv.conf estático (usaremos Cloudflare como ejemplo):

    echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf
    
  5. Verifica de nuevo que el puerto 53 está libre:

    sudo lsof -i :53
    

    Ahora no debería aparecer nada escuchando.

Paso 5: Abrir Puertos en el Firewall del Servidor (UFW)

Si tienes ufw (Uncomplicated Firewall) activado, necesitas abrir los puertos que usará AdGuard:

# Permite los puertos necesarios (adapta el 8181 si lo cambiaste)
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
sudo ufw allow 67/udp
sudo ufw allow 68/tcp
sudo ufw allow 68/udp
sudo ufw allow 8181/tcp # Puerto de la interfaz web
sudo ufw allow 443/tcp
sudo ufw allow 443/udp
sudo ufw allow 853/tcp # Puerto DoT
sudo ufw allow 3000/tcp # Puerto de configuración inicial

# Recarga UFW para aplicar las reglas
sudo ufw reload

# (Opcional) Verifica el estado
sudo ufw status verbose

Paso 6: Abrir Puertos en el Proveedor Cloud (Ejemplo Oracle Cloud)

Este paso es CRUCIAL si usas un VPS. Tienes que abrir los mismos puertos en el firewall de tu proveedor cloud. En Oracle Cloud:

  1. Ve a la consola de Oracle Cloud.
  2. Navega a Compute -> Instances y selecciona tu instancia.
  3. Baja hasta Attached VNICs, haz clic en la VNIC (Virtual Network Interface Card).
  4. Haz clic en la Subnet.
  5. Haz clic en la Security List (normalmente llamada “Default Security List for …”).
  6. Haz clic en Add Ingress Rules.
  7. Ahora, IMPORTANTE: Por seguridad, NO abras los puertos a todo internet (0.0.0.0/0). Abre los puertos SOLO para tu IP pública actual. Búscala en Google (“cuál es mi IP”).
  8. Añade una regla PARA CADA PUERTO que necesites (53 TCP, 53 UDP, 67 UDP, 68 TCP, 68 UDP, 8181 TCP, 443 TCP, 443 UDP, 853 TCP, 3000 TCP):
    • Source Type: CIDR
    • Source CIDR: <TU_IP_PUBLICA>/32 (¡El /32 es importante!)
    • IP Protocol: TCP o UDP según corresponda.
    • Source Port Range: All
    • Destination Port Range: El puerto específico (ej: 53, 8181, 3000).
    • Añade una descripción si quieres (ej: “AdGuard DNS UDP”).
  9. Haz clic en Add Ingress Rules abajo del todo para guardar.

setup-ports.webp

(Nota: Si tu IP pública cambia a menudo, tendrás que actualizar estas reglas. Para DNS público o acceso desde fuera de casa, necesitarías abrir el puerto 53 (y quizás 853/443 para DoT/DoH) a 0.0.0.0/0, pero ¡cuidado con la seguridad! Asegúrate de configurar bien los “Clientes Permitidos” en AdGuard).

Paso 7: ¡Arrancar AdGuard Home!

Ahora sí, el momento de la verdad

# Desde la carpeta adguard-home
sudo docker compose up -d

El -d lo ejecuta en segundo plano. Para ver si ha arrancado bien:

sudo docker compose logs -f

Deberías ver mensajes indicando que AdGuard Home se ha iniciado y está escuchando en los puertos, especialmente algo como [info] AdGuard Home is available at http://127.0.0.1:3000. ¡Perfecto!

logs-adguard.webp

Configuración Inicial de AdGuard Home

¡Ya casi estamos! Ahora toca configurar AdGuard desde su interfaz web.

  1. Abre tu navegador y ve a http://<IP_DEL_SERVIDOR>:3000 (usa la IP pública del VPS o la IP fija de la Raspberry Pi).
  2. Te dará la bienvenida. Haz clic en ¡Empezar!.
  3. Interfaz de Administración: Te preguntará en qué puerto quieres la interfaz web principal. Por defecto es el 80. Como en el docker-compose.yml mapeamos el 8181 al 80 interno, deja el puerto 80 aquí.
  4. Servidor DNS: Te preguntará en qué puerto escuchar las peticiones DNS. Déjalo en el 53, que es el estándar.
  5. Siguiente.
  6. Crear cuenta de administrador: Pon un nombre de usuario y una contraseña SEGURA. ¡Esta es la llave de tu AdGuard!
  7. Siguiente.
  8. Configurar dispositivos: Te dará instrucciones genéricas. De momento, haz clic en Siguiente.
  9. ¡Hecho! Haz clic en Abrir panel de control. Te redirigirá a http://<IP_DEL_SERVIDOR>:8181 (o el puerto que hayas elegido).
  10. Inicia sesión con el usuario y contraseña que acabas de crear.

setup-adguard.webp

¡Bienvenido al panel de AdGuard Home! Verás estadísticas (aún vacías) y opciones.

login-adguard.webp

Configuraciones Recomendadas en AdGuard Home

Antes de configurar tus dispositivos, te recomiendo un par de ajustes:

  1. (Seguridad) Clientes Permitidos:
    • Ve a Configuración -> Configuración DNS.
    • Baja hasta la sección Clientes permitidos.
    • Añade la IP pública desde la que te conectas normalmente (la misma que pusiste en las reglas de Oracle/Firewall). Puedes añadir también rangos de tu red local si usas la Raspberry Pi (ej: 192.168.1.0/24).
    • Esto evita que cualquiera use tu servidor DNS. Guarda los cambios.
  2. (Opcional pero Recomendado) Habilitar Cifrado HTTPS: Para que el acceso al panel sea seguro (HTTPS en lugar de HTTP). Necesitarás un dominio o subdominio apuntando a la IP de tu servidor.
    • Opción A (Let’s Encrypt): Ve a Configuración -> Configuración de cifrado. Habilita el cifrado, introduce tu nombre de host (dominio/subdominio) y tu email. AdGuard intentará obtener un certificado automáticamente. Necesitarás tener los puertos 80 y 443 abiertos al público (0.0.0.0/0) en tu firewall (servidor y proveedor cloud) para que funcione la validación.
    • Opción B (Certificado Propio - ej. Cloudflare Origin): Si usas Cloudflare, puedes generar un “Origin Certificate” (SSL/TLS -> Origin Server) para tu dominio/subdominio. Descarga el archivo .pem (certificado) y .key (clave privada). Súbelos a tu servidor (ej. a una nueva carpeta adguard-home/certs). Modifica tu docker-compose.yml para añadir estos volúmenes:
      volumes:
        - ./work:/opt/adguardhome/work
        - ./conf:/opt/adguardhome/conf
        - ./certs/tu_certificado.pem:/opt/adguardhome/certificate.pem:ro
        - ./certs/tu_clave.key:/opt/adguardhome/private.key:ro
      
      Reinicia el contenedor (sudo docker compose down && sudo docker compose up -d). Luego, en AdGuard (Configuración -> Configuración de cifrado), habilita el cifrado, pon tu dominio, y especifica las rutas DENTRO del contenedor: /opt/adguardhome/certificate.pem y /opt/adguardhome/private.key. Guarda.
    • Una vez configurado HTTPS, accederás al panel a través de https://<TU_DOMINIO_O_IP>:443 (o el puerto que hayas mapeado al 443 interno si lo cambiaste).
  3. Explora los Filtros:
    • Ve a Filtros -> Filtros DNS. Verás las listas de bloqueo activas por defecto. Puedes añadir más desde “Añadir lista de bloqueo” -> “Elegir de la lista” o pegando URLs de listas conocidas.
    • En Filtros -> Bloqueo de Servicios, puedes bloquear fácilmente servicios populares (Facebook, TikTok, etc.) o incluso establecer horarios.

Paso Final: Configurar el Router

¡El último empujón! Para que todos los dispositivos de tu casa usen AdGuard Home automáticamente, tienes que decírselo a tu router.

login-router.webp

  1. Accede al panel de administración de tu router. Normalmente está en 192.168.1.1 o 192.168.0.1. La contraseña suele estar en una pegatina debajo del router. Si no, contacta a tu proveedor.
  2. Busca la sección de configuración LAN, Red Local o DHCP.
  3. Localiza los ajustes de Servidor DNS.
  4. Desactiva la opción de “Usar DNS del proveedor” o similar.
  5. Introduce la IP de tu servidor AdGuard Home (la IP pública del VPS o la IP fija de la Raspberry Pi) como DNS Primario.
  6. DNS Secundario (Opcional):
    • Puedes poner un DNS público como 1.1.1.1 (Cloudflare) o 8.8.8.8 (Google) como respaldo por si tu servidor AdGuard falla.
    • Si quieres ser estricto y que TODO pase por AdGuard, déjalo en blanco o pon 0.0.0.0.
    • Si tienes otro servidor AdGuard, puedes poner su IP aquí para redundancia.
  7. Guarda los cambios y aplica la configuración. El router podría reiniciarse.

config-router.webp

¡YA ESTÁ! Ahora, cualquier dispositivo que se conecte a tu WiFi usará automáticamente AdGuard Home. Es posible que tengas que desconectar y volver a conectar tus dispositivos del WiFi para que cojan la nueva configuración DNS.

Empieza a disfrutar de una red más limpia, rápida y segura. Verás cómo las estadísticas en el panel de AdGuard empiezan a llenarse de bloqueos.


¡Y eso es todo! Espero que este tutorial te haya sido útil. ! 😉


Edu Navajas Profile

Hola! soy Edu. Soy un desarrollador de software con más de 5 años de experiencia Puedes seguirme en Linkedin y ver mi trabajo en GitHub.

← Volver al blog