Installation von AdGuard Home in einem Container

Hallo, als Validierung für meine Migration von HA zu Gladys habe ich begonnen, eine Testplattform zu installieren.

Ich habe auf einem Mini-PC eine Ubuntu-Server-Installation durchgeführt (ich habe bereits einen Dateiserver mit Ubuntu-Server). Ich habe Docker und Gladys installiert, wie in der Anleitung beschrieben: Installation avec Docker | Gladys Assistant Ich habe festgestellt, dass es sinnvoll wäre, in dieser Dokumentation darauf hinzuweisen, dass es wünschenswert ist, beim Partitionieren des Basissystems eine separate Partition für /var zu erstellen, wenn möglich großzügig, die Partition /home jedoch nicht so groß wie ein NAS sein muss. Ich konnte mich bei Gladys anmelden und mein lokales Konto erstellen, danke der Dokumentation!

Anschließend habe ich AdGuardHome installiert, wieder nach den Anweisungen von: adguard/adguardhome - Docker Image Alles scheint gut gelaufen zu sein, aber nicht ganz.

Bei der Abfrage von 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

Alles scheint gut zu laufen, aber ich kann mich nicht auf http://meine_lokale_ip:3000 verbinden (der Browser schafft es nicht).

Bei genauerer Betrachtung der Installationsprotokolle finde ich:

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

Es gibt eine Fehlermeldung, die besagt, dass Port 53 bereits verwendet wird. Ein Problem mit der Portweiterleitung?

Vielen Dank im Voraus für Ihre Hilfe.

Ich bin kein Experte, also habe ich das jemandem überlassen, der besser ist als ich, und hier ist die Antwort:

Es handelt sich nicht um ein Portweiterleitungsproblem. Der Port 53 ist bereits auf der Maschine selbst belegt, und wenn du das korrigierst, wirst du auf einen zweiten Konflikt stoßen, also lass uns sie gemeinsam beheben.

1. Der Port 53: systemd-resolved

Auf Ubuntu Server läuft systemd-resolved einen kleinen lokalen DNS-Server auf 127.0.0.53:53. Docker kann daher 0.0.0.0:53 nicht für AdGuard reservieren. Um das zu überprüfen:

sudo ss -lntup | grep ':53 '

Dort solltest du systemd-resolve sehen. Die Lösung, die auch von AdGuard dokumentiert wird, besteht darin, diesen lokalen Server zu deaktivieren, ohne resolved zu deaktivieren:

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

Wichtig: Mit DNS=127.0.0.1 verwendet die Maschine selbst AdGuard zur Namensauflösung. Wenn der AdGuard-Container gestoppt wird, hat sie keinen DNS mehr, und ein docker pull schlägt beispielsweise fehl. Wenn du eine Sicherheitsnetz haben möchtest, füge eine Zeile FallbackDNS=1.1.1.1 in dieselbe Datei ein.

2. Der Port 80: Das ist Gladys

Gladys wird mit --network=host und SERVER_PORT=80 gestartet. Es belegt also bereits den Port 80 der Maschine, und das ist der Grund, warum die Spalte PORTS für ihn in deinem docker ps leer ist. Sobald der Port 53 freigegeben ist, wird dein docker run auf die gleiche Weise bei 0.0.0.0:80 scheitern. Du musst also -p 80:80/tcp aus dem Befehl entfernen.

Ein weiterer wichtiger Punkt: Beim ersten Start fragt der AdGuard-Konfigurationsassistent (auf Port 3000), auf welchem Port die Verwaltungsschnittstelle platziert werden soll, und schlägt standardmäßig 80 vor. Wähle 3000: Die Schnittstelle bleibt dann auf http://ip:3000 und stört Gladys nicht.

3. Die anderen Ports, unnötig für den Heimgebrauch

Der Befehl von der Docker Hub-Seite veröffentlicht alles, was AdGuard kann. Für einen einfachen DNS-Blocker im lokalen Netzwerk:

  • 67/68 werden für DHCP verwendet. Entferne sie, es sei denn, du möchtest, dass AdGuard den DHCP deiner Box ersetzt, was ohnehin nicht gut mit einem Container im Bridge-Modus funktioniert.
  • 443, 853, 784, 8853 und 5443 werden für verschlüsselten DNS (DoH, DoT, DoQ, DNSCrypt) verwendet. Sie sind unnötig, solange du deinen DNS nicht im Internet exponierst.

4. Sauber neu starten

Dein docker ps zeigt den Container adguardhome als gestartet an, aber ohne veröffentlichte Ports. Das ist der Hinweis auf den fehlgeschlagenen Versuch, und das ist der Grund, warum der Port 3000 nicht antwortet. Du musst ihn löschen und dann neu erstellen:

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

Achte darauf: /my/own/workdir und /my/own/confdir im Docker Hub-Beispiel sind Pfade, die ersetzt werden müssen. So wie sie sind, erstellen sie einen Ordner /my an der Festplattenwurzel. Ich habe sie oben durch /opt/adguardhome/... ersetzt, aber jeder Pfad, der dir vertraut ist, tut es auch.

Öffne dann http://ip_des_mini_pcs:3000, folge dem Assistenten (Schnittstelle auf Port 3000, DNS auf Port 53) und gib die IP des Mini-PCs als DNS-Server im DHCP deiner Box an. Alle Geräte im Netzwerk werden dann über AdGuard laufen.

Zu deinem Hinweis zur Partitionierung: Du hast recht: Die Docker-Images leben in /var/lib/docker und die Gladys-Datenbank in /var/lib/gladysassistant. Ein zu kleines /var wird irgendwann voll.

Viel Glück bei der Migration!

@guim31 hat alles gesagt :clap:
Die offizielle Dokumentation FAQ · AdguardTeam/AdGuardHome Wiki · GitHub

Ich mache Fortschritte mit Docker (das heißt: Ich mache Fehler! :face_with_raised_eyebrow: ).

Zum Beispiel weiß ich, wie man aktive Container anzeigt, wie man einen stoppt und dann löscht…

Noch detaillierter:

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


Auf Port 3000 keine Pakete in Sicht! :face_with_bags_under_eyes: (d. h. nichts wird angezeigt)

Diese Sequenz: Löschen von adguardhome und dann Installation habe ich mehrmals gemacht… vergeblich.

Aber beim ersten Mal bin ich auf den Konfigurationsseiten von adguardhome gelandet. Nach der Eingabe der geforderten Informationen hat es nicht mehr funktioniert! :disappointed_face: So nah am Ziel!

Bravo :tada:

Wenn du auf dieser Seite gelandet bist, weil du Port 80 für die Web-Administrationsschnittstelle gewählt hast, wird das nicht funktionieren (da dieser bereits von Gladys verwendet wird). Du kannst einen anderen Port wie 81 wählen

Du kannst auch die Logs von AdGuard Home mit dem Befehl sudo docker logs adguardhome anzeigen.

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

Ich spreche noch nicht fließend „adguardhome“, aber es scheint zu sagen, dass es weiterhin Port 80 abhört, der bereits von Gladys belegt ist…

Ich sehe eine Lösung nach Art der Hunnen: Ich installiere Ubuntu Server neu und formatiere alle Partitionen, dann installiere ich Gladys und erstelle ein Disk-Image meiner /var-Partition (nicht selbstmörderisch, oder?), dann versuche ich es erneut mit Adguard, das beschlossen zu haben scheint, sich mit mir zu amüsieren…

Gibt es ein „Lästling“-Abzeichen?

Nein nein, du kannst einfach den Container adguardhome (wie du es oben gemacht hast) löschen und die Konfiguration in /opt/adguardhome/conf

Dann startest du adguardhome neu und es wird dir erneut den Konfigurationsassistenten anbieten (wähle den Port 81).

Port 81 scheint keine gute Idee zu sein… dasselbe Ergebnis. Ich bin völlig erschöpft, ich werde eine gute Nacht schlafen lassen, um es morgen mit anderen Ports noch einmal zu versuchen. Danke für die geduldige Hilfe.

Auch wenn meine Nacht nicht besonders gut war, konnte ich etwas Ordnung in meine Gedanken bringen.

Die Installation von Gladys: ok

Die Installation von Watchtower: ok

Die Installation von AdGuard auf Port 3000: ok!

Alles läuft ungewöhnlich gut! :astonished_face:

Ich habe mein neues AdGuard basierend auf dem alten, das in HA integriert war, konfiguriert.

Vielen Dank an alle.

:rofl::joy: stimmt, manchmal geht es mir genau gleich!