Quick start
One command, on a box that can run Docker. Ten minutes including the pull.
One command on any Linux box that can run Docker. It installs AdGuard Home as well if you do not already run one, wires the two together, and hands back two URLs.It points at the Pi-hole you already run, verifies it can read the query log, and hands back a URL.
Install#
curl -fsSL https://dns.elele.dev/install.sh | sudo bashPiping a URL into a root shell deserves a second’s hesitation every time. The script is 600 commented lines and does nothing clever; read it first, or download it, read it and run it yourself:
curl -fsSL https://dns.elele.dev/install.sh -o install.sh
less install.sh
sudo bash install.shWhat it asks you#
- 01
Whether to install Docker
Only if it is missing. Uses the official get.docker.com script. - 02
Where your resolver is
Whether to install AdGuard Home, skipped entirely if it finds one already running on this machine or if you passed--agh-url.Nothing to install: pass--pihole-urland it takes that as given. It does check the version, because v5 will fail later rather than here. - 03
Whether to free port 53
Only on systems where is holding . See Troubleshooting for what that change actually does. Skipped when pointing at an existing Pi-hole, which is already bound to it. - 04
Your credentials
The AdGuard Home admin username and password.Pi-hole’s password — no username; v6 exchanges the password alone for a session. Prefer an application password from Settings → Web interface / API: it can be revoked on its own and it works with 2FA. Verified against the API before anything is written to disk, so a typo fails here rather than in a container that restarts forever.
Then point your router at it#
This is the step no installer can do for you, and the one people forget. Until your router hands out the box’s address as the network’s DNS server, nothing is being filtered and both dashboards stay empty.
Your devices
ask whatever DHCP told them
Router
DNS → your ISP
AdGuard HomePi-hole
installed, idle
nothing is filtered · both dashboards stay empty
In your router’s settings, set the primary DNS server to the machine you just installed on. Remove any secondary: a second resolver is a way for devices to quietly bypass the first.
What happens next#
The dashboard starts immediately: it walks the resolver’s buffer backwards until it runs out, which usually takes a few minutes and yields a few hours of history. From then on it polls every five seconds. The first hour explains what the numbers are doing while that happens.