Adguard es una empresa que lucha contra la publicidad invasiva. Tienen desde extensiones de navegador y aplicaciones móviles, hasta servidores DNS propios que eliminan los dominios publicitarios.

Pero uno de sus productos más interesantes para nosotros como homelabbers, es su servicio de Adguard Home. Un producto que podemos desplegar en nuestra red, de forma que filtra y elimina la mayoría de la publicidad, además de contar con otras funcionalidades interesantes.

Está en el mismo ámbito que el ya conocido [Pi Hole] (https://blog.runesoft.net/installing-pihole-docker-or-kubernetes/), aunque últimamente le está ganando la carrera gracias a su simplicidad.

Requisitos

Para poder seguir los pasos de instalación indicados en este post, deberás contar con lo siguiente:

  • Un servidor, VM o contenedor LXC:
    • Con Docker instalado si eliges la opción contenerizada.
  • Acceso a la administración de tu router.
  • Conocimientos básicos sobre Docker
  • Un café a disposición (opcional).
⚠️
Si aún no manejas Docker o no lo tienes instalado, re recomiendo revisar estas dos guías:

Instalar Docker y Portainer
Serie Docker 101

Con todo ello preparado, ¡podemos empezar!

Instalación

Actualmente contamos con dos métodos al igual que en muchas otras aplicaciones: Binario y contenedor.

Te enseñare ambas maneras para que puedas elegir. Normalmente suele ser recomendable hacerlo mediante contenedores, pero si queremos contar con DHCP es más cómodo y sencillo tenerlo como servidor independiente en una VM o contenedor LXC con una IP estática.

Mediante Binario

Es el método más recomendado y bastante sencillo, tan solo tendremos que buscar dentro de este listado el archivo correspondiente al sistema operativo de nuestro servidor, máquina virtual o contenedor LXC: Lista de versiones y sistemas

Cuando la tengamos localizada, nos copiamos la ruta de descarga y la utilizamos para el siguiente comando. En mi caso al ser Ubuntu he utilizado la de Linux:

curl -L https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.77/AdGuardHome_linux_amd64.tar.gz | tar xzvf -

Con esto tendremos el binario descargado, tendremos que movernos dentro de la ruta descomprimida, y solo queda que ejecutemos el instalador. Para esto usaremos el siguiente comando:

cd AdGuardHome
sudo ./AdGuardHome -s install

Nos aparecerá un pequeño log indicando el proceso de instalación, y finalmente las rutas de conexión para realizar las configuraciones iniciales.

Y si realizamos clic sobre la que tiene la IP de nuestro servidor, podremos ver la pantalla para comenzar con la Configuración inicial.

Mediante Docker

Docker Run

Para este método, primero deberemos crear las carpetas base. Recuerda adaptar estas rutas según tus necesidades:

mkdir -p ~/adguard/{workdir,confdir}

Y ahora sí podremos proceder a ejecutar este comando.

docker run --name adguardhome\
    --restart unless-stopped\
    -v ~/adguard/workdir:/opt/adguardhome/work\
    -v ~/adguard/confdir:/opt/adguardhome/conf\
    -p '192.168.1.183:53:53/tcp' -p '192.168.1.183:53:53/udp'\
    -p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3010:3000/tcp\
    -p 853:853/tcp\
    -p 784:784/udp -p 853:853/udp -p 8853:8853/udp\
    -p 5443:5443/tcp -p 5443:5443/udp\
    -d adguard/adguardhome
⚠️
AdGuard también puede actuar como DHCP. En el comando proporcionado no vienen los puertos para ello, ya que en la máquina en la que se aloja se hace uso de ellos para el cliente DHCP. Si quieres disponer de ellos deberás utilizar una IP estática del servidor y deshabilitar el cliente DHCP.

Y con esto tendríamos ya nuestro contenedor funcionando, tan solo tendrás que ir a la sección de Configuración inicial si decides quedarte con este método de instalación.

Docker Compose

Lo primero será crear la carpeta para alojar todo lo relacionado con AdGuard, recuerda adaptar la ruta a tus necesidades:

mkdir -p ~/adguard

Tras esto, crearemos nuestro fichero (con el editor que deseemos):

nano ~/adguard/adguard-compose.yml

Y en este insertaremos el siguiente contenido:

services:
    adguardhome:
        container_name: adguardhome
        image: adguard/adguardhome
        ports:
            - '5443:5443/udp'
            - '5443:5443/tcp'
            - '8853:8853/udp'
            - '853:853/udp'
            - '784:784/udp'
            - '853:853/tcp'
            - '3000:3000/tcp'
            - '443:443/udp'
            - '443:443/tcp'
            - '80:80/tcp'
            - '53:53/udp'
            - '53:53/tcp'
        volumes:
            - type: bind
              source: '~/adguard/confdir'
              target: '/opt/adguardhome/conf'
              bind:
                create_host_path: true
            - type: bind
              source: '~/adguard/workdir'
              target: '/opt/adguardhome/work'
              bind:
                create_host_path: true
        restart: unless-stopped

Guardamos el archivo y lo ejecutamos haciendo uso del siguiente comando:

sudo docker compose -f ~/adguard/adguard-compose.yml up -d

Y veremos como al cabo de unos segundos se levanta sin problemas.

Configuración inicial

Lo primero que deberemos hacer es acceder a la URL de nuestro servidor de AdGuard al puerto que hayamos configurado, que por defecto es el 3000: http://ip.server.ad.guard:3000

Una vez ahí, nos aparecerá la pantalla de configuración inicial, le daremos a Comenzar.

En la siguiente página nos solicita qué interfaces de nuestro servidor vamos a utilizar para gestionar cada servicio que nos proporciona. Aquí deberemos elegir la interfaz que corresponda con la IP de nuestro servidor, que es la que habremos utilizado para acceder remotamente, en mi caso la 192.168.1.110. Los puertos los dejaremos como vienen.

Tras dicha configuración, le daremos a Siguiente.

Momento de crear nuestro usuario de administración. Nuevamente, cuando lo completemos, le daremos a Siguiente.

Este punto es importante, ya que nos avisa de configuraciones adicionales de nuestra red que tendremos que realizar fuera de nuestro servidor de AdGuard para que funcione correctamente.

  • Contar con una IP estática o reservada mediante DHCP para el servidor.
  • Configurar el router o servidor DHCP para que reparta la IP de nuestro servidor de AdGuard como nuevo servidor DNS.

Si cumples con estos puntos, podrás continuar haciendo clic en Siguiente.

Y por último nos notificará de que hemos completado la configuración inicial, llevándonos al login dándole a Abrir panel de control.

Aquí introduciremos los datos del usuario que hemos creado anteriormente.

Y podremos ver el panel general de AdGuard:

Herramientas y utilidades

A continuación vamos a ver algunas de las herramientas y utilidades que nos proporciona AdGuard Home desde su interfaz.

Panel de Control

Es el panel principal donde podremos ver las diferentes estadísticas a medida que se va haciendo uso del servidor DNS.

Adicionalmente, nos da la opción de parar el servicio, ya sea por un tiempo concreto o de forma indefinida hasta que lo activemos nuevamente. Para ello podemos hacer uso del botón de Deshabilitar protección de la parte superior izquierda:

Configuración

En esta sección contamos con diversas opciones de configuración, desde la general, hasta la del servidor DNS o DHCP. Aquí accederemos en función de lo que necesitemos:

Configuración DNS

Nos da opciones para gestionar el servidor DNS, como poder agregar los upstreams, definir el comportamiento entre Balanceo de carga, Consultar Paralelas o velocidad, y otras muchas más.

También tenemos la posibilidad de crear listas ACL para la resolución DNS, para evitar clientes no deseados.

Configuración de clientes

Este apartado está pensado principalmente para registrar los clientes de forma que sean más sencillos de inspeccionar en las estadísticas.

Filtros

Es el apartado más relevante dentro de las opciones que nos da, ya que es donde podremos definir de manera manual las diferentes listas de bloqueos o permitidos, además de poder bloquear por servicios de manera más cómoda.

Listas de bloqueo DNS

Aquí podremos agregar las listas de bloqueos DNS que nos interese. Viene con la lista de AdGuard por defecto activada.

Listas de permitido DNS

Al igual que las de bloqueo, pero a la inversa. Estas sobreescriben la de bloqueos, de forma que nos permite agregar un dominio que figure en una lista, para permitir acceder a él. Por defecto viene vacía.

Reescrituras DNS

Una sección muy relevante, porque es donde podremos dar de alta nuestros propios dominios internos para nuestros servidores. Por ejemplo agregar it-tools.runesoft.internal para que apunte a la IP correspondiente, dándole a Añadir reescritura DNS:

Lo rellenamos con los datos necesarios, y al darle a Guardar lo podremos ver en la lista.

Servicios bloqueados

Aquí nos aparecerá una larga lista de servicios que podremos seleccionar para bloquear según necesitemos. Están agrupados por tipo de servicio. También tenemos atajos para bloquear todo, desbloquear todo, y lo mismo a nivel de cada agrupación de servicios.

Conclusión

Ahora con AdGuard Home podremos gestionar mas cómodamente el bloqueo de los servicios y anuncios no deseados, junto con estadísticas de uso y configuraciones para tener nuestros nombres de dominio internos.

Esto lo hace uno de los servicios más habituales e ideales para un homelab, por su sencillez y utilidad.

Referencias

Vídeo

0:00
/1:35