One DNS server covers the network, but same-domain ads get through
AdGuard Home blocks known advertising and tracking domains for every client that uses it as DNS. That reaches televisions, consoles, speakers, and appliances where a browser extension is impossible. The web interface adds query logs, custom allow and block rules, per-client policy, safe-search enforcement, local DNS rewrites, encrypted upstreams, and an optional DHCP server. A household can manage one policy instead of installing a separate blocker on every screen.
The scope is broad for a 14.3 MB checkout. Our lab counted 1,745 files and about 177,374 lines of source at commit 75e43ab, yet the product still presents the common controls through one dashboard. Per-client settings are especially useful: a child's tablet can receive stricter filtering while a work machine uses fewer lists. The REST API and Home Assistant integration give operators ways to inspect or automate the same service.
What happened when we ran it
Our run installed 250 packages in 101 seconds, then built AdGuard Home successfully in 76 seconds. We used a fresh Debian container based on golang:1.24-bookworm, with 3 CPUs, 8 GB of RAM, no secrets, and no elevated container privileges. That is a clean source-build result, not a test of the official prebuilt binary, Snap package, or published container image.
The Go test command finished in 62 seconds: 31 tests passed and 0 failed. Our harness found 3 CI workflow files, no Dockerfile, and no top-level tests directory in the measured snapshot. The absence of a tests directory does not mean there were no tests, since Go discovers tests beside package code. Likewise, the project can publish a container without keeping a conventional Dockerfile at the repository root.
Port 53 and client routing are the real setup costs
The successful 76-second build only gets you a binary. A working deployment needs a stable local address and TCP plus UDP port 53, then the router's DHCP settings or each client must point DNS traffic at that address. The official guide notes that some routers do not allow a custom DNS server; using AdGuard Home's DHCP service is one workaround. If clients keep another resolver, filtering coverage becomes inconsistent.
Container users have two extra choices that did not appear in our 101-second install measurement. Configuration and work directories need persistent mounts. The official Docker guide requires Linux host networking for the built-in DHCP server, and it warns that host networking is unavailable on Docker Desktop for macOS and Windows. On Linux, systemd-resolved may already listen on port 53, so its stub listener can conflict with the DNS service.
Source contributors face a different setup than appliance users. The current README asks for Go 1.25 or later, Node.js 24.10.0 or later, and npm 10.8 or later, then uses make init and make. It also warns that parallel Make jobs are unsupported. Our commit-pinned build used the golang:1.24-bookworm image, so that successful result should not be read as a promise that the current branch accepts older prerequisites.
DNS filtering cannot remove YouTube or Twitch ads
AdGuard Home cannot block an advertisement when the ad and wanted content use the same domain. The README names YouTube and Twitch ads, plus sponsored posts on major social networks, as examples. DNS also cannot remove empty page elements or apply cosmetic rules. A browser content blocker remains the right companion for web pages, while AdGuard Home handles devices and applications that cannot run one.
Large lists can create a more physical limit than DNS semantics. Issue #8491 describes a 1 GB OpenWrt router running v0.107.78 whose resident memory rose after a list of roughly 2.1 million rules updated, followed by loss of DNS and the web interface. The reporter explicitly says the update correlates with the increase and does not prove the root cause. Small-router owners should start with restrained lists and watch memory during updates.
v0.107.79 is actively maintained, with a DNSCrypt regression open
The repository was pushed on 2026-08-25, and release v0.107.79 arrived on 2026-08-18. That release updated Go for security fixes and added protection against DNS-over-QUIC resource exhaustion. GitHub reported 1,280 issues and pull requests combined, so the number is a work queue rather than a count of confirmed defects. Fresh issues were receiving maintainer labels and updates on 2026-08-25, which supports an active-maintenance judgment.
One current report matters to a narrow but serious group. Issue #8569 says v0.107.79 starts plain DNS but fails to create a configured DNSCrypt server; the issue remains open and marked in progress. Our 31 passing Go tests do not disprove that deployment report because our sandbox did not configure a live DNSCrypt listener. Operators using that protocol should hold their known-good version until the issue is resolved and verify the listener after upgrading.
AdGuard Home is the strongest fit for a self-hoster who wants readable controls, encrypted DNS options, and filtering across devices. The 250-package install and 31-test pass show that its source path worked cleanly in our sandbox. The operational price is ownership of a network dependency: keep configuration backups, preserve a fallback resolver, avoid indiscriminate mega-lists, and pair it with browser-level filtering where DNS cannot see enough to act.

