Installation adguardhome dans un container

Bonjour, En guise de validation pour ma migration de HA vers Gladys, j’ai commencé à installer une plateforme de test.

J’ai installé dans un mini pc une ubuntu server (j’ai déjà un serveur de fichiers avec Ubuntu-server). J’ai installé docker et Gladys tel qu’indiqué dans : Installation avec Docker | Gladys Assistant J’ai noté qu’il pourrait être pertinent de signaler dans cette doc qu’il est souhaitable pour le partitionnement de l’OS de base de créer une partition séparée pour /var si possible copieuse, par contre la partition /home n’a pas besoin d’être aussi grande que un nas. J’ai pu me connecter à Gladys et y créer mon compte local, merci la doc!

J’ai ensuite installé adguardhome là encore en suivant les indiications de : adguard/adguardhome - Docker Image Tout semble s’être bien passé mais pas totalement en fait.

En interrogeant 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

Tout semble bien aller mais je ne peux me connecter sur http://mon_ip_locale:3000 (le navigateur n’y arrive pas).

En regardant de plus près les traces d’installation je trouve :

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

Il y a un message d’erreur qui semble dire que le port 53 est déjà utilisé. Un problème de redirection de port?

D’avance merci pour vos lumières.

Je ne suis pas un expert, donc j’ai confié ça à quelqu’un de plus doué que moi et voici la réponse :

Ce n’est pas un problème de redirection de port. Le port 53 est déjà pris sur la machine elle-même, et en le corrigeant tu tomberas sur un deuxième conflit, autant les régler ensemble.

1. Le port 53 : systemd-resolved

Sur Ubuntu Server, systemd-resolved fait tourner un petit serveur DNS local sur 127.0.0.53:53. Docker ne peut donc pas réserver 0.0.0.0:53 pour AdGuard. Pour vérifier :

sudo ss -lntup | grep ':53 '

Tu devrais y voir systemd-resolve. La solution, d’ailleurs documentée par AdGuard, consiste à désactiver ce serveur local sans désactiver 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

À savoir : avec DNS=127.0.0.1, la machine utilise elle-même AdGuard pour résoudre les noms. Si le container AdGuard est arrêté, elle n’a plus de DNS, et un docker pull échoue par exemple. Si tu veux un filet de sécurité, ajoute une ligne FallbackDNS=1.1.1.1 dans ce même fichier.

2. Le port 80 : c’est Gladys

Gladys est lancé avec --network=host et SERVER_PORT=80. Il occupe donc déjà le port 80 de la machine, et c’est pour ça que la colonne PORTS est vide pour lui dans ton docker ps. Une fois le port 53 libéré, ton docker run va échouer de la même manière sur 0.0.0.0:80. Il faut donc retirer -p 80:80/tcp de la commande.

Autre point important : au premier lancement, l’assistant de configuration d’AdGuard (sur le port 3000) te demande sur quel port placer l’interface d’administration, et il propose 80 par défaut. Choisis 3000 : l’interface restera ainsi sur http://ip:3000 et ne gênera pas Gladys.

3. Les autres ports, inutiles pour un usage à la maison

La commande de la page Docker Hub publie tout ce qu’AdGuard sait faire. Pour un simple bloqueur DNS sur le réseau local :

  • 67/68 servent au DHCP. Retire-les, sauf si tu veux qu’AdGuard remplace le DHCP de ta box, ce qui ne fonctionne de toute façon pas bien avec un container en mode bridge.
  • 443, 853, 784, 8853 et 5443 servent au DNS chiffré (DoH, DoT, DoQ, DNSCrypt). Ils sont inutiles tant que tu n’exposes pas ton DNS sur Internet.

4. Repartir proprement

Ton docker ps montre bien le container adguardhome comme démarré, mais sans aucun port publié. C’est la trace de la tentative ratée, et c’est pour ça que le port 3000 ne répond pas. Il faut le supprimer, puis le recréer :

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

Attention au passage : /my/own/workdir et /my/own/confdir dans l’exemple de Docker Hub sont des chemins à remplacer. Tels quels, ils créent un dossier /my à la racine du disque. Je les ai remplacés ci-dessus par /opt/adguardhome/..., mais n’importe quel chemin qui te parle fera l’affaire.

Ensuite, ouvre http://ip_du_mini_pc:3000, suis l’assistant (interface sur le port 3000, DNS sur le port 53), puis indique l’IP du mini PC comme serveur DNS dans le DHCP de ta box. Tous les appareils du réseau passeront alors par AdGuard.

Pour ta remarque sur le partitionnement, tu as raison : les images Docker vivent dans /var/lib/docker et la base de Gladys dans /var/lib/gladysassistant. Un /var trop petit finit par saturer.

Bon courage pour la migration !

@guim31 a tout dit :clap:
La doc officielle FAQ · AdguardTeam/AdGuardHome Wiki · GitHub

Je fais des progrès avec docker (c’est à dire : je fais des erreurs!:face_with_raised_eyebrow: ).

Par exemple je sais afficher les containers actifs, je sais en stopper un puis le supprimer…

En plus détaillé :

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


Sur le port 3000 pas de trames en vue! :face_with_bags_under_eyes: (c.à.d : rien ne s’affiche)

Cette séquence : suppression de adguardhome puis installation je l’ai fait plusieurs fois… en vain.

Mais à la première fois je suis arrivé sur des pages de configuration de adguardhome. Après saisies des informations demandées çà ne fonctionnait plus ! :disappointed_face: Si près du but !

Bravo :tada:

Quand tu es arrivé sur cette page, si tu as choisi le port 80 pour l’interface web d’administration, ça ne fonctionnera pas (car déjà utilisé par Gladys). Tu peux choisir un port différent comme 81

Tu peux aussi regarder les logs d’adguard home avec la commande 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

Je ne parle pas encore couramment le « adguardhome » mais çà semble dire qu’il persiste à écouter le port 80 qui est déjà pris par Gladys…

Je vois bien une solution façon Attila : je ré-installe Ubuntu server en formatant toutes les partitions puis j’installe Gladys puis je fais une image disque de ma partition /var (pas suicidaire quand même) puis je retente ma chance avec Adguard qui semble avoir décidé de s’amuser avec moi…

Est-ce qu’il existe un badge « casse-pieds » ?

Non non tu peux juste supprimer le container adguardhome (comme tu as fait plus haut) et la configuration dans ´/opt/adguardhome/conf’

Tu relances ensuite adguardhome et il va à nouveau te proposer l’assistant de configuration (choisis bien le port 81).

Le port 81 n’est pas une bonne idée il semble… même résultat. Je suis bien fatigué, je vais laisser passer une bonne nuit de sommeil, pour remettre çà demain avec d’autres ports. Merci pour l’aide patiente.