AdGuard Home — Self-Hosted Network DNS Filter with DoH/DoT
AdGuard Home is a single-binary Go DNS server that blocks ads and trackers network-wide with encrypted upstreams, parental controls, and a slick admin UI out of the box.
What it is
AdGuard Home is a single-binary Go DNS server that blocks ads and trackers across your entire network. It supports encrypted DNS upstreams (DNS-over-HTTPS, DNS-over-TLS), parental controls, and ships with a web-based admin UI for configuration and statistics.
It is designed for home network administrators and privacy-conscious users who want ad blocking without installing browser extensions on every device. Any device that uses your network DNS gets protection automatically.
How it saves time or tokens
Instead of configuring ad blockers per device and per browser, AdGuard Home provides a single deployment point. One DNS server protects phones, tablets, smart TVs, and IoT devices. The filter lists update automatically, and the dashboard shows query statistics without manual log parsing.
How to use
- Download the AdGuard Home binary or use the official Docker image.
- Run the initial setup wizard at
http://your-server:3000. - Configure your router or devices to use the AdGuard Home IP as the DNS server.
- Add filter lists and configure upstream DNS providers.
# Install AdGuard Home via Docker
docker run -d --name adguardhome \
-p 53:53/tcp -p 53:53/udp \
-p 3000:3000/tcp \
-v adguard-work:/opt/adguardhome/work \
-v adguard-conf:/opt/adguardhome/conf \
adguard/adguardhome
Example
Once running, the admin panel at port 3000 shows a dashboard with total queries, blocked queries percentage, and top queried domains. You can add custom filtering rules using AdBlock-style syntax or hosts-file format.
# Example AdGuard Home upstream DNS config
upstream_dns:
- https://dns.cloudflare.com/dns-query
- tls://dns.google
Related on TokRepo
- Self-hosted tools — More privacy-focused self-hosted applications
- Security tools — Network security and protection tools
Common pitfalls
- Running DNS on port 53 requires root or elevated privileges. Docker simplifies this.
- Aggressive filter lists can break legitimate services. Start with default lists and add gradually.
- If your router does not support custom DNS settings, configure individual devices instead.
Frequently Asked Questions
Both are DNS-based ad blockers. AdGuard Home includes built-in DNS-over-HTTPS and DNS-over-TLS support, a more modern web UI, and parental controls. Pi-hole relies on dnsmasq and requires separate setup for encrypted DNS.
Yes. Any device using your network DNS will have ads blocked at the DNS level. For mobile devices outside your network, you can configure AdGuard Home as a public DNS server with authentication or use a VPN back to your home network.
Yes. AdGuard Home supports DNS-over-HTTPS (DoH), DNS-over-TLS (DoT), DNS-over-QUIC (DoQ), and DNSCrypt for both upstream queries and client connections.
AdGuard Home is a single Go binary with minimal resource requirements. It runs comfortably on a Raspberry Pi or any low-power device with 128MB RAM and minimal CPU.
Yes. You can configure your VPN server to push AdGuard Home as the DNS server for connected clients. This provides ad blocking for remote devices tunneling through your network.
Citations (3)
- AdGuard Home GitHub— AdGuard Home is a single-binary Go DNS server with DoH/DoT support
- AdGuard Home Wiki— Supports DNS-over-HTTPS, DNS-over-TLS, DNS-over-QUIC, and DNSCrypt
- AdGuard Home Documentation— Network-wide ad blocking without per-device configuration
Related on TokRepo
Discussion
Related Assets
NAPI-RS — Build Node.js Native Addons in Rust
Write high-performance Node.js native modules in Rust with automatic TypeScript type generation and cross-platform prebuilt binaries.
Mamba — Fast Cross-Platform Package Manager
A drop-in conda replacement written in C++ that resolves environments in seconds instead of minutes.
Plasmo — The Browser Extension Framework
Build, test, and publish browser extensions for Chrome, Firefox, and Edge using React or Vue with hot-reload and automatic manifest generation.