Instalación de AdGuardHome en un contenedor

Hola, como validación para mi migración de HA a Gladys, he comenzado a instalar una plataforma de prueba.

He instalado en un mini PC una Ubuntu Server (ya tengo un servidor de archivos con Ubuntu-server). He instalado Docker y Gladys según lo indicado en: Installation avec Docker | Gladys Assistant He notado que podría ser pertinente señalar en esta documentación que es deseable, para el particionamiento del sistema operativo base, crear una partición separada para /var si es posible generosa, en cambio la partición /home no necesita ser tan grande como un NAS. He podido conectarme a Gladys y crear mi cuenta local, ¡gracias a la documentación!

Luego instalé AdGuardHome siguiendo de nuevo las indicaciones de: adguard/adguardhome - Docker Image Todo parece haber ido bien, pero no del todo en realidad.

Al consultar Docker:

moi@mamachine:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d9a23ec27f14 adguard/adguardhome "/opt/adguardhome/Ad…" 40 seconds ago Up 3 seconds adguardhome
b21791a177ff gladysassistant/gladys:v5 "docker-entrypoint.s…" 18 hours ago Up 3 minutes gladys

Todo parece ir bien, pero no puedo conectarme a http://mi_ip_local:3000 (el navegador no lo logra).

Al mirar más de cerca los registros de instalación, encuentro:

moi@mamachine:~$ sudo docker run --name adguardhome
--restart unless-stopped
-v /my/own/workdir:/opt/adguardhome/work
-v /my/own/confdir:/opt/adguardhome/conf
-p 53:53/tcp -p 53:53/udp
-p 67:67/udp -p 68:68/udp
-p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000: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
d9a23ec27f14785f589c5e9e0ade5aa3c3f08bda22189492597d7857bedcc78a
docker: Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint adguardhome (6ba91471a3e357a25892af051cc5b96d43c30a1decaa09c0ca72bda48f6ce2f6): failed to bind host port 0.0.0.0:53/tcp: address already in use

Run 'docker run --help' for more information

Hay un mensaje de error que parece indicar que el puerto 53 ya está en uso. ¿Un problema de redirección de puertos?

De antemano, gracias por sus luces.

No soy un experto, así que le encargué esto a alguien más hábil que yo y aquí está la respuesta:

No es un problema de redirección de puerto. El puerto 53 ya está ocupado en la máquina misma, y al corregirlo te encontrarás con un segundo conflicto, mejor resolverlos juntos.

1. El puerto 53: systemd-resolved

En Ubuntu Server, systemd-resolved ejecuta un pequeño servidor DNS local en 127.0.0.53:53. Docker no puede reservar 0.0.0.0:53 para AdGuard. Para verificar:

sudo ss -lntup | grep ':53 '

Deberías ver systemd-resolve. La solución, documentada por AdGuard, es desactivar este servidor local sin desactivar resolved:

sudo mkdir -p /etc/systemd/resolved.conf.d
sudo tee /etc/systemd/resolved.conf.d/adguardhome.conf <<EOF
[Resolve]
DNS=127.0.0.1
DNSStubListener=no
EOF
sudo mv /etc/resolv.conf /etc/resolv.conf.backup
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl reload-or-restart systemd-resolved

A saber: con DNS=127.0.0.1, la máquina usa AdGuard para resolver nombres. Si el contenedor AdGuard se detiene, ya no tiene DNS, y un docker pull falla, por ejemplo. Si quieres una red de seguridad, agrega una línea FallbackDNS=1.1.1.1 en el mismo archivo.

2. El puerto 80: es Gladys

Gladys se ejecuta con --network=host y SERVER_PORT=80. Por lo tanto, ya ocupa el puerto 80 de la máquina, y por eso la columna PORTS está vacía para él en tu docker ps. Una vez liberado el puerto 53, tu docker run fallará de la misma manera en 0.0.0.0:80. Por lo tanto, debes eliminar -p 80:80/tcp del comando.

Otro punto importante: al primer lanzamiento, el asistente de configuración de AdGuard (en el puerto 3000) te pregunta en qué puerto colocar la interfaz de administración, y propone 80 por defecto. Elige 3000: la interfaz permanecerá así en http://ip:3000 y no interferirá con Gladys.

3. Los otros puertos, innecesarios para un uso en el hogar

El comando de la página Docker Hub publica todo lo que AdGuard sabe hacer. Para un simple bloqueador DNS en la red local:

  • 67/68 sirven para DHCP. Elimínalos, a menos que quieras que AdGuard reemplace el DHCP de tu router, lo cual de todos modos no funciona bien con un contenedor en modo bridge.
  • 443, 853, 784, 8853 y 5443 sirven para DNS cifrado (DoH, DoT, DoQ, DNSCrypt). Son innecesarios mientras no expongas tu DNS en Internet.

4. Reiniciar correctamente

Tu docker ps muestra el contenedor adguardhome como iniciado, pero sin ningún puerto publicado. Es el rastro del intento fallido, y por eso el puerto 3000 no responde. Debes eliminarlo y luego recrearlo:

sudo docker rm -f adguardhome
sudo mkdir -p /opt/adguardhome/work /opt/adguardhome/conf

sudo docker run -d --name adguardhome \
  --restart unless-stopped \
  -v /opt/adguardhome/work:/opt/adguardhome/work \
  -v /opt/adguardhome/conf:/opt/adguardhome/conf \
  -p 53:53/tcp -p 53:53/udp \
  -p 3000:3000/tcp \
  adguard/adguardhome

Atención: /my/own/workdir y /my/own/confdir en el ejemplo de Docker Hub son rutas a reemplazar. Tal cual, crean una carpeta /my en la raíz del disco. Los he reemplazado arriba con /opt/adguardhome/..., pero cualquier ruta que te hable servirá.

Luego, abre http://ip_del_mini_pc:3000, sigue el asistente (interfaz en el puerto 3000, DNS en el puerto 53), luego indica la IP del mini PC como servidor DNS en el DHCP de tu router. Todos los dispositivos de la red pasarán por AdGuard.

Para tu comentario sobre el particionamiento, tienes razón: las imágenes de Docker viven en /var/lib/docker y la base de datos de Gladys en /var/lib/gladysassistant. Un /var demasiado pequeño termina saturándose.

¡Buena suerte con la migración!

@guim31 lo ha dicho todo :clap:
La documentación oficial FAQ · AdguardTeam/AdGuardHome Wiki · GitHub

Estoy haciendo progresos con docker (es decir: estoy cometiendo errores!:face_with_raised_eyebrow: ).

Por ejemplo, sé cómo mostrar los contenedores activos, sé cómo detener uno y luego eliminarlo…

En más detalle:

moi@mamachine:~$ sudo docker rm -f adguardhome
adguardhome
moi@mamachine:~$ sudo docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED        STATUS          PORTS     NAMES
b21791a177ff   gladysassistant/gladys:v5   "docker-entrypoint.s…"   21 hours ago   Up 16 minutes             gladys
moi@mamachine:~$ sudo mkdir -p /opt/adguardhome/work /opt/adguardhome/conf
moi@mamachinbe:~$ sudo docker run -d --name adguardhome 
--restart unless-stopped 
-v /opt/adguardhome/work:/opt/adguardhome/work 
-v /opt/adguardhome/conf:/opt/adguardhome/conf 
-p 53:53/tcp -p 53:53/udp 
-p 3000:3000/tcp 
adguard/adguardhome
8de09fe571412fc7b2dcb38b80eb1ca4d43c7c0fec3a4bfb03e1175fd26c6fd9
moi@mamachine:~$ sudo docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS          PORTS                                                                                                                                                                                                                  NAMES
8de09fe57141   adguard/adguardhome         "/opt/adguardhome/Ad…"   11 seconds ago   Up 10 seconds   80/tcp, 67-68/udp, 443/tcp, 443/udp, 853/udp, 0.0.0.0:53->53/tcp, [::]:53->53/tcp, 853/tcp, 3000/udp, 5443/tcp, 0.0.0.0:3000->3000/tcp, 0.0.0.0:53->53/udp, [::]:3000->3000/tcp, [::]:53->53/udp, 5443/udp, 6060/tcp   adguardhome
b21791a177ff   gladysassistant/gladys:v5   "docker-entrypoint.s…"   21 hours ago     Up 19 minutes                                                                                                                                                                                                                          gladys


¡No hay tráficos en el puerto 3000! :face_with_bags_under_eyes: (es decir: no se muestra nada)

He realizado esta secuencia: eliminación de adguardhome y luego instalación varias veces… en vano.

Pero la primera vez llegué a las páginas de configuración de adguardhome. Después de ingresar la información solicitada, ¡ya no funcionaba! :disappointed_face: ¡Tan cerca del objetivo!

¡Bravo! :tada:

Cuando llegaste a esta página, si elegiste el puerto 80 para la interfaz web de administración, no funcionará (ya que Gladys lo está utilizando). Puedes elegir un puerto diferente como el 81

También puedes revisar los registros de AdGuard Home con el comando sudo docker logs adguardhome

moi@mamachine:~$ sudo docker logs adguardhome
2026/09/27 12:53:37.880219 [info] starting adguard home version="AdGuard Home, version v0.107.79"
2026/09/27 12:53:37.883114 [info] tls_manager: using default ciphers
2026/09/27 12:53:37.886108 [info] webapi: initializing
2026/09/27 12:53:37.906478 [info] dnsproxy: upstream mode is set mode=load_balance
2026/09/27 12:53:37.906506 [info] dnsproxy: cache enabled size=4096
2026/09/27 12:53:37.906520 [info] dnsproxy: max goroutines is set count=300
2026/09/27 12:53:37.906573 [info] dnsproxy: server will refuse requests of type any
2026/09/27 12:53:37.906582 [info] dnsproxy: upstream mode is set mode=load_balance
2026/09/27 12:53:37.906588 [info] dnsproxy: cache enabled size=4194304
2026/09/27 12:53:37.906595 [info] dnsproxy: max goroutines is set count=300
2026/09/27 12:53:37.907516 [info] permcheck: warning: found unexpected permissions type=directory path=/opt/adguardhome/work perm=0755 want=0700
2026/09/27 12:53:37.907585 [info] webapi: AdGuard Home is available at the following addresses:
2026/09/27 12:53:37.907619 [info] addrproc: processing addresses
2026/09/27 12:53:37.907758 [info] webapi: serving url=http://127.0.0.1:80
2026/09/27 12:53:37.907765 [info] webapi: serving url=http://[::1]:80
2026/09/27 12:53:37.907769 [info] webapi: serving url=http://172.17.0.2:80
2026/09/27 12:53:37.907790 [info] starting plain server server=plain addr=0.0.0.0:80
2026/09/27 12:53:38.130654 [info] dnsproxy: starting dns proxy server
2026/09/27 12:53:38.130675 [info] dnsproxy: creating udp server socket addr=0.0.0.0:53
2026/09/27 12:53:38.130787 [info] dnsproxy: listening to udp addr=[::]:53
2026/09/27 12:53:38.130795 [info] dnsproxy: creating tcp server socket addr=0.0.0.0:53
2026/09/27 12:53:38.130848 [info] dnsproxy: listening to tcp addr=[::]:53
2026/09/27 12:53:38.131021 [info] dnsproxy: entering udp listener loop addr=[::]:53
2026/09/27 12:53:38.131147 [info] dnsproxy: entering listener loop proto=tcp addr=[::]:53

No hablo « adguardhome » con fluidez, pero parece que sigue escuchando el puerto 80, que ya está ocupado por Gladys…

Veo una solución al estilo de Atilla: reinstalo Ubuntu Server formateando todas las particiones, luego instalo Gladys, luego hago una imagen del disco de mi partición /var (no es suicida, ¿verdad?) y luego vuelvo a intentarlo con Adguard, que parece haber decidido divertirse conmigo…

¿Existe una insignia de « pesado »?

No no, solo tienes que eliminar el contenedor adguardhome (como hiciste antes) y la configuración en ´/opt/adguardhome/conf’

Luego vuelves a ejecutar adguardhome y te volverá a proponer el asistente de configuración (elige bien el puerto 81).

El puerto 81 no parece ser una buena idea… mismo resultado. Estoy muy cansado, voy a dejar pasar una buena noche de sueño, para retomarlo mañana con otros puertos. Gracias por la ayuda paciente.

Aunque mi noche no fue excelente, pude poner un poco de orden en mis neuronas.

La instalación de gladys: ¡ok!

La instalación de watchtower: ¡ok!

La instalación de adguard en el puerto 3000: ¡ok!

¡Todo funciona anormalmente bien! :astonished_face:

Configuré mi nuevo adguard partiendo del antiguo integrado en HA.

¡Muchas gracias a todos!.

:rofl::joy: es cierto que a veces me pasa exactamente lo mismo.