AdGuard Home

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

Build status Code Coverage Go Report Card GolangCI Latest release



AdGuard Home is a network-wide software for blocking ads & 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](https://adguard.com/en/adguard-dns/overview.html) servers -- both share a lot of common code. * [Getting Started](#getting-started) * [Comparing AdGuard Home to other solutions](#comparison) * [How is this different from public AdGuard DNS servers?](#comparison-adguard-dns) * [How does AdGuard Home compare to Pi-Hole](#comparison-pi-hole) * [How does AdGuard Home compare to traditional ad blockers](#comparison-adblock) * [How to build from source](#how-to-build) * [Contributing](#contributing) * [Test unstable versions](#test-unstable-versions) * [Reporting issues](#reporting-issues) * [Help with translations](#translate) * [Acknowledgments](#acknowledgments) ## Getting Started Please read the [Getting Started](https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started) article on our Wiki to learn how to install AdGuard Home, and how to configure your devices to use it. Alternatively, you can use our [official Docker image](https://hub.docker.com/r/adguard/adguardhome). ### Guides * [Configuration](https://github.com/AdguardTeam/AdGuardHome/wiki/Configuration) * [AdGuard Home as a DNS-over-HTTPS or DNS-over-TLS server](https://github.com/AdguardTeam/AdGuardHome/wiki/Encryption) * [How to install and run AdGuard Home on Raspberry Pi](https://github.com/AdguardTeam/AdGuardHome/wiki/Raspberry-Pi) * [How to install and run AdGuard Home on a Virtual Private Server](https://github.com/AdguardTeam/AdGuardHome/wiki/VPS) ### API If you want to integrate with AdGuard Home, you can use our [REST API](https://github.com/AdguardTeam/AdGuardHome/tree/master/openapi). Alternatively, you can use this [python client](https://pypi.org/project/adguardhome/), which is used to build the [AdGuard Home Hass.io Add-on](https://community.home-assistant.io/t/community-hass-io-add-on-adguard-home). ## 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 will the server block or not block. * Monitor your network activity. * Add your own custom filtering rules. * **Most importantly, this is 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 "DNS sinkholing" method, and both allow customizing what's blocked. > 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. > Disclaimer: 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 lighthttp | | 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 | ✅ | ❌ | | Parental control (blocking adult domains) | ✅ | ❌ | | Force Safe search on search engines | ✅ | ❌ | | Per-client (device) configuration | ✅ | ❌ | | Access settings (choose who can use AGH DNS) | ✅ | ❌ | ### How does AdGuard Home compare to traditional ad blockers It depends. "DNS sinkholing" is capable of blocking a big percentage of ads, but it lacks flexibility and power of traditional ad blockers. You can get a good impression about the difference between these methods by reading [this article](https://adguard.com/en/blog/adguard-vs-adaway-dns66/). It compares AdGuard for Android (a traditional ad blocker) to hosts-level ad blockers (which are almost identical to DNS-based blockers in their capabilities). However, this level of protection is enough for some users. ## How to build from source ### Prerequisites You will need: * [go](https://golang.org/dl/) v1.12 or later. * [node.js](https://nodejs.org/en/download/) v10 or later. You can either install it via the provided links or use [brew.sh](https://brew.sh/) if you're on Mac: ```bash brew install go node ``` ### Building Open Terminal and execute these commands: ```bash git clone https://github.com/AdguardTeam/AdGuardHome cd AdGuardHome make ``` #### (For devs) Upload translations ``` node upload.js ``` #### (For devs) Download translations ``` node download.js ``` ## Contributing You are welcome to fork this repository, make your changes and submit a pull request — https://github.com/AdguardTeam/AdGuardHome/pulls ### Test unstable versions There are two options how you can install an unstable version. You can either install a beta version of AdGuard Home which we update periodically, or you can use the Docker image from the `edge` tag, which is synced with the repo master branch. * [Docker Hub](https://hub.docker.com/r/adguard/adguardhome) * Beta builds * [Rapsberry Pi (32-bit ARM)](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_arm.tar.gz) * [MacOS](https://static.adguard.com/adguardhome/beta/AdGuardHome_MacOS.zip) * [Windows 64-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_Windows_amd64.zip) * [Windows 32-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_Windows_386.zip) * [Linux 64-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_amd64.tar.gz) * [Linux 32-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_386.tar.gz) * [FreeBSD 64-bit](https://static.adguard.com/adguardhome/beta/AdGuardHome_freebsd_amd64.tar.gz) * [64-bit ARM](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_arm64.tar.gz) * [MIPS](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_mips.tar.gz) * [MIPSLE](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_mipsle.tar.gz) ### Report issues If you run into any problem or have a suggestion, head to [this page](https://github.com/AdguardTeam/AdGuardHome/issues) and click on the `New issue` button. ### Help with translations If you want to help with AdGuard Home translations, please learn more about translating AdGuard products here: https://kb.adguard.com/en/general/adguard-translations Here is a direct link to AdGuard Home project: http://translate.adguard.com/collaboration/project?id=153384 Before updating translations you need to install dependencies: ``` cd scripts/translations npm install ``` Create file `oneskyapp.json` in `scripts/translations` folder. Example of `oneskyapp.json` ``` { "url": "https://platform.api.onesky.io/1/projects/", "projectId": , "apiKey": , "secretKey": } ``` ## Acknowledgments This software wouldn't have been possible without: * [Go](https://golang.org/dl/) and it's libraries: * [packr](https://github.com/gobuffalo/packr) * [gcache](https://github.com/bluele/gcache) * [miekg's dns](https://github.com/miekg/dns) * [go-yaml](https://github.com/go-yaml/yaml) * [service](https://godoc.org/github.com/kardianos/service) * [dnsproxy](https://github.com/AdguardTeam/dnsproxy) * [urlfilter](https://github.com/AdguardTeam/urlfilter) * [Node.js](https://nodejs.org/) and it's libraries: * [React.js](https://reactjs.org) * [Tabler](https://github.com/tabler/tabler) * And many more node.js packages. * [whotracks.me data](https://github.com/cliqz-oss/whotracks.me) You might have seen that [CoreDNS](https://coredns.io) was mentioned here before — we've stopped using it in AdGuardHome. While we still use it on our servers for [AdGuard DNS](https://adguard.com/adguard-dns/overview.html) service, it seemed like an overkill for Home as it impeded with Home features that we plan to implement. For a full list of all node.js packages in use, please take a look at [client/package.json](https://github.com/AdguardTeam/AdGuardHome/blob/master/client/package.json) file.