AdGuardHome is a free, open source networking & connectivity project written in TypeScript and released under GPL-3.0. It has 36,970 GitHub stars, 2,520 forks and 1,253 open issues, and was last pushed 12 hours ago. On this registry it ranks #4 of 14 tracked projects in Networking & Connectivity, with 5 head-to-head comparisons available.

What is AdGuardHome?

AdGuard Home is a free and open-source, network-wide DNS server that blocks ads and trackers for every device on a network, aimed at self-hosters, homelab operators, and network administrators who want filtering without installing client-side software on each device.

What it is

AdGuard Home is a network-wide DNS server that re-routes tracking domains to a "black hole," preventing devices from ever connecting to those servers. Once it is set up, it covers all home devices, and no client-side software is required on any of them. It is based on the software used for the public AdGuard DNS servers, and the two share a lot of code. The registry records the project under the Infrastructure & Operations / Networking & Connectivity category, licensed GPL-3.0, with its language listed as TypeScript and golang appearing among its topics.

The concrete problem it solves is per-device ad blocking. Instead of installing an extension in every browser and an app on every phone and tablet, the filtering happens at the DNS layer, so every device on the network is covered the moment it points at the server. The README frames the alternative explicitly: running a personal instance is a different level from a public DNS server, because the operator chooses exactly what the server blocks and permits, monitors network activity, and adds custom filtering rules. The README states the point directly: it is your own server, and you are the only one in control.

Key capabilities

  • DNS sinkholing of ad and tracking domains, the same method described in the README's comparison with Pi-Hole.
  • Encrypted DNS transports drawn from the topic list: dns-over-https, dns-over-quic, dns-over-tls, and dnscrypt.
  • Custom filtering rules, letting the operator choose what the server blocks and permits.
  • Network activity monitoring for the traffic passing through the resolver.
  • A REST API, with the specification held in the repository's openapi/ directory for integrations.
  • A Python client published as adguardhome on PyPI, which can be used to build the AdGuard Home Assistant integration.
  • An automated installer at scripts/install.sh, runnable through curl, wget, or fetch, with the flags -c (channel), -r (reinstall), -u (uninstall), and -v (verbose); -r and -u are mutually exclusive.

Who uses it and how

  • Households that want every device covered at once, since no client-side software is needed after setup.
  • Self-hosters who want their own resolver rather than a public DNS service, because control over blocks, permits, and monitoring stays local.
  • Home Assistant users, through the integration built on the Python client.
  • Operators integrating programmatically, using the REST API described in the openapi/ directory.
  • Linux users who prefer a packaged install from the Snap Store, and Docker users who run the official adguard/adguardhome image.

Getting started

The documented automated install runs curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v, with wget and fetch variants given as alternatives. Other supported routes are the official adguard/adguardhome Docker image, the Snap Store, or manual installation following the Getting Started article on the project Wiki.

How it compares

Pi-Hole is the closest named alternative: the README says the two share a lot at this point, both using DNS sinkholing to block ads and trackers and both allowing customization of what is filtered. Against the public AdGuard DNS servers, a self-hosted instance is a different proposition entirely, because the operator picks the block and allow sets, monitors activity, writes custom rules, and holds sole control of the server.

When to use it — and when not to

A self-hoster must operate their own resolver on an always-on host and point the network's devices at it, which is the real cost of the approach. Anyone unwilling to run that host, or to redirect DNS for a whole network, should not pick it. The README excerpt's Pi-Hole comparison trails off mid-sentence, the tracker carries 1253 open issues, and the registry's TypeScript language field sits oddly beside the golang topic, so those are worth verifying before adoption.

project readme (upstream, from github) — read inline

 

Privacy protection center for you and your devices

Free and open source, powerful network-wide ads & trackers blocking DNS server.

AdGuard.com | Wiki | Reddit | Twitter | Telegram

Code Coverage Go Report Card Docker Pulls
Latest release adguard-home



AdGuard Home is a network-wide software for blocking ads and tracking. After you set it up, it'll cover ALL your home devices, and you don't need any client-side software for that.

It operates as a DNS server that re-routes tracking domains to a “black hole”, thus preventing your devices from connecting to those servers. It's based on software we use for our public AdGuard DNS servers, and both share a lot of code.

Getting Started

Automated install (Linux/Unix/MacOS/FreeBSD/OpenBSD)

To install with curl run the following command:

curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

To install with wget run the following command:

wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

To install with fetch run the following command:

fetch -o - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

The script also accepts some options:

  • -c to use specified channel;
  • -r to reinstall AdGuard Home;
  • -u to uninstall AdGuard Home;
  • -v for verbose output.

Note that options -r and -u are mutually exclusive.

Alternative methods

Manual installation

Please read the Getting Started article on our Wiki to learn how to install AdGuard Home manually, and how to configure your devices to use it.

Docker

You can use our official Docker image on Docker Hub.

Snap Store

If you're running Linux, there's a secure and easy way to install AdGuard Home: get it from the Snap Store.

Guides

See our Wiki.

API

If you want to integrate with AdGuard Home, you can use our REST API. Alternatively, you can use this python client, which can be used to build the AdGuard Home Assistant integration.

Comparing AdGuard Home to other solutions

How is this different from public AdGuard DNS servers?

Running your own AdGuard Home server allows you to do much more than using a public DNS server. It's a completely different level. See for yourself:

  • Choose what exactly the server blocks and permits.

  • Monitor your network activity.

  • Add your own custom filtering rules.

  • Most importantly, it's your own server, and you are the only one who's in control.

How does AdGuard Home compare to Pi-Hole

At this point, AdGuard Home has a lot in common with Pi-Hole. Both block ads and trackers using the so-called “DNS sinkholing” method and both allow customizing what's blocked.

[!NOTE] We're not going to stop here. DNS sinkholing is not a bad starting point, but this is just the beginning.

AdGuard Home provides a lot of features out-of-the-box with no need to install and configure additional software. We want it to be simple to the point when even casual users can set it up with minimal effort.

[!NOTE] Some of the listed features can be added to Pi-Hole by installing additional software or by manually using SSH terminal and reconfiguring one of the utilities Pi-Hole consists of. However, in our opinion, this cannot be legitimately counted as a Pi-Hole's feature.

Feature AdGuard Home Pi-Hole
Blocking ads and trackers
Customizing blocklists
Built-in DHCP server
HTTPS for the Admin interface Kind of, but you'll need to manually configure lighttpd
Encrypted DNS upstream servers (DNS-over-HTTPS, DNS-over-TLS, DNSCrypt) ❌ (requires additional software)
Cross-platform ❌ (not natively, only via Docker)
Running as a DNS-over-HTTPS or DNS-over-TLS server ❌ (requires additional software)
Blocking phishing and malware domains ❌ (requires non-default blocklists)
Parental control (blocking adult domains) ❌ (requires non-default blocklists)
Force Safe search on search engines

readme truncated — read the full docs on github

Frequently asked questions

Is AdGuardHome free to use?

AdGuardHome is open source under the GPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does AdGuardHome do?

Network-wide ads & trackers blocking DNS server

What is AdGuardHome written in?

AdGuardHome is primarily written in TypeScript. Its source is publicly available at https://github.com/AdguardTeam/AdGuardHome, and it has 36,970 GitHub stars.