AdGuard Home vs. PiHole – Best adblocker?
There are two popular solutions to getting rid of ads in the home network, AdGuard Home and PiHole. Which one is best? What are the pros and cons of each?
Table of contents
- What is Adguard?
- Adguard has many solutions
- AdGuard Home Features
- AdGuard Home Admin Web Interface
- AdGuard Home DNS
- AdGuard Home Hardware Requirements
- AdGuard Home Setup
- AdGuard Home installation
- Install Adguard Home with Docker Compose
- Adguard setup options
- Configuring clients to point to Adguard Home
- Adguard Home cons
- What is Pi-Hole?
- Pi-Hole Setup Options
- Web Interface
- Install Pi-Hole with Docker Compose
- Pi-Hole Cons
- Clients Configuration
- Lack of โofficiallyโ supported encryption
- Quickly Block Well-Known Services
- Resource Usage
- Encrypted DNS upstream servers
- AdGuard Home vs PiHole
- Differences Between AdGuard and Pi-Hole
- Comparing the differences
- Wrapping up
What is Adguard?
AdGuard provides network-wide ad-blocking and content-filtering. It uses DNS filtering to intercept block ads, trackers, and malicious sites for admins before these sites and resources even load on the end-user client.
DNS resolver
DNS is like the “phone book” for your network. Since AdGuard acts like the phonebook, it can “hang up” on any calls out to resources that you don’t want found in your blocklists like ads and trackers.
Adguard has many solutions
Adguard is not just a single solution company. They actually offer many different products. These include browser extension, mobile apps, and the self-hosted solution that is the subject of this blog post – AdGuard Home solution.
The commercial products include:
Android app
Browser extension
IOS app
Windows App
macOS App
In addition, they offer an Adguard VPN and DNS server solution.
AdGuard Home Features
Note the variety of features, including:
Network-wide ad blocking: Blocks ads and trackers for all devices connected to your network.
Custom filtering rules: Add specific rules to block or whitelist certain domains.
Parental control: Force safe search on search engines and block adult content.
Encrypted DNS: Support for DNS over HTTPS and DNS over TLS to encrypt DNS queries.
DHCP server: Built-in DHCP server for easier network configuration.
AdGuard Home Admin Web Interface
I like the AdGuard Home interface. It is not too busy and has the information you want to see at your fingertips. You can manage settings, monitor blocks and DNS queries easy enough and you can create custom filtering rules.
Note the Adguard Home Dashboard below.
AdGuard Home DNS
Like Pi-Hole AdGuard Home is a DNS server that sinkholes DNS queries to unwanted ads and trackers. It can be configured as an upstream DNS server and supports encrypted DNS as well.
AdGuard Home Hardware Requirements
The DNS server can run on various devices, including Raspberry Pi, virtual machines, and dedicated hardware. It has relatively low hardware requirements:
CPU: A 1GHz or faster processor is recommended.
RAM: 512MB or more is recommended.
Disk space: At least 100MB of free disk space is required for installation and operation.
AdGuard Home Setup
After installing AdGuard Home DNS server, access the web interface to complete the initial setup. During this process, you’ll configure upstream DNS servers, enable encrypted DNS (if desired), and set up any additional options, such as custom filtering rules or parental control settings.
AdGuard Home installation
There are several ways to install AdGuard Home edition as you can install it on a full operating system, or run it as a Docker container. You can run the container using either the Docker run command or using Docker compose code.
Setting up AdGuard Home DNS server is a simple process:
Download the installation script or package for your platform.
Run the installation script or package, following the prompts to complete the installation.
Access the web interface to configure settings like upstream DNS servers and encrypted DNS.
Install Adguard Home with Docker Compose
You can also use Docker Compose to install Adguard.
adguard:
image: adguard/adguardhome
restart: always
ports:
- 53:53/tcp
- 53:53/udp
- 67:67/udp
- 853:853/tcp
- 853:853/udp
- 3000:3000/tcp
- 5443:5443/tcp
- 5443:5443/udp
- 8853:8853/udp
networks:
traefik:
ipv4_address: 172.19.0.53
volumes:
- '~/homelabservices/adguard/work:/opt/adguardhome/work'
- '~/homelabservices/adguard/conf:/opt/adguardhome/conf'
container_name: adguard
Adguard setup options
During setup, you’ll have the option to configure various settings, such as:
Upstream DNS server: Choose the upstream DNS servers that AdGuard Home should use to resolve non-blocked DNS queries.
Encrypted DNS upstream servers: Enable DNS over HTTPS (DoH) or DNS over TLS (DoT) to encrypt your DNS queries.
DHCP server: Enable the built-in DHCP server if needed, or configure your existing DHCP server to use AdGuard Home as the DNS resolver.
Configuring clients to point to Adguard Home
How do you configure your clients? It is a simple matter of changing client DNS server settings to point to the IP address of the Adguard Home server as the primary DNS server.
After pointing your first client to the Adguard Home server, you should start seeing the DNS queries in Adguard. It also provides a quick and easy way to disable protection, which is a nice feature.
Adguard Home cons
Note the following cons of AdGuard Home server:
Compatibility: Some routers or network devices may not be compatible with AdGuard Home
Performance: As it operates at the DNS level, it might lead to slightly increased latency in DNS queries
False Positives: The filtering can sometimes lead to false positives, where legitimate websites or content may be blocked due to overzealous filtering rules
Regular Updates: To maintain optimal performance and security, it requires regular updates, which may include changes to the filtering rules, software improvements, and bug fixes
No Conditional forwarding – While you can configure the upstream DNS server, there is no conditional forwarding
What is Pi-Hole?
Pi-Hole is another very popular ad blocking solution for use at home . It functions as a DNS sinkhole ad blocker that intercepts DNS requests and then it drops the DNS request for the ad URL or tracking url
By doing this, it can protect all the devices connected to your home or office network. This includes not only devices like computers and laptops, but also smartphones, tablets, and even IoT devices.
Friendly web interface
Pi-Hole has a very intuitive web interface that most like. The interface is informative and gives you the information you are looking for, but at the same time it is not too busy.
Pi-Hole has a lot of great features and the ad-blocking and malware protection of the solution with the blocklists is something that most find to be just what they were looking for in the home environment.
Pi-Hole Setup Options
Pi-Hole installs are simple and easy and involve the following steps:
Download the Pi-Hole installation script from the official website or GitHub repository.
Run the script in the command line and follow the prompts to complete the installation.
Configure your devices or router to use Pi-Hole as the DNS server.
Alternatively, without running the script, you can download the Docker container for Pi-Hole
Note the following steps with the installation script deploying Pi-Hole on an Ubuntu Server.
Web Interface
Both AdGuard Home and Pi-Hole offer user-friendly web interfaces for administration and configuration. These interfaces allow users to manage settings, view statistics on blocked DNS queries, and add custom filtering rules or specific domains to block or whitelist.
Install Pi-Hole with Docker Compose
You can use the following Docker Compose code to deploy Pi-Hole using Docker Compose.
pihole:
image: pihole/pihole:latest
container_name: pihole
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp
dns:
- 127.0.0.1
- 1.1.1.1
environment:
TZ: 'America/Chicago'
WEBPASSWORD: 'password'
PIHOLE_DNS_: 1.1.1.1;9.9.9.9
DNSSEC: 'false'
VIRTUAL_HOST: piholetest.cloud.local # Same as port traefik config
WEBTHEME: default-dark
PIHOLE_DOMAIN: lan
volumes:
- '~/homelabservices/pihole/pihole:/etc/pihole/'
- '~/homelabservices/pihole/dnsmasq.d:/etc/dnsmasq.d/'
restart: always
networks:
traefik:
ipv4_address: 172.19.0.13
Pi-Hole Cons
While Pi-Hole is an excellent DNS ad blocker, there are some downsides:
Lack of “officially” supported encryption: Pi-Hole doesn’t natively support DNS over HTTPS or DNS over TLS
Limited parental control features: Pi-Hole lacks advanced parental control options, like forcing safe search
Resource usage: I have seen reports that Pi-Hole might consume more resources on your device than AdGuard
Clients Configuration
To start using AdGuard or Pi-Hole, you must configure your devices to use them as DNS servers. This can be done on individual devices or at the router level, depending on your network setup.
Router configuration: Update your router’s DNS settings to point to the IP address of your AdGuard or Pi-Hole installation.
Device configuration: If you prefer to configure specific devices, update the DNS settings on each device to use the IP address of your AdGuard Home or Pi-Hole installation.
Lack of โofficiallyโ supported encryption
Pi-Hole does not officially support encrypted DNS protocols like DNS over HTTPS or DNS over TLS out-of-the-box. However, it is possible to configure Pi-Hole with additional software, such as a third-party DoH or DoT proxy, to encrypt DNS queries.
Quickly Block Well-Known Services
Both AdGuard Home and Pi-Hole offer built-in block lists that help users quickly block well-known services, such as social media trackers, analytics platforms, and popular ad networks. Users can enable or disable specific blocklists based on their preferences and add custom lists as needed.
Resource Usage
AdGuard Home and Pi-Hole have different resource usage profiles. AdGuard Home tends to be lighter on system resources than Pi-Hole, making it a more suitable choice for devices like the Raspberry Pi. However, both solutions can run efficiently on most hardware, including virtual machines and dedicated servers.
Encrypted DNS upstream servers
DNS over HTTPS (DoH), DNS over TLS (DoT), and DNS over QUIC (DoQ) are encrypted DNS protocols that provide additional security and privacy by preventing eavesdropping and tampering of DNS queries. AdGuard Home supports both DoH and DoT out-of-the-box, while Pi-Hole requires additional configuration or software to enable encrypted DNS.
DoH: Encrypts DNS queries using the HTTPS protocol, which is widely supported and can bypass network restrictions.
DoT: Encrypts DNS queries using the TLS protocol, providing similar security benefits to DoH but with less compatibility and potential for bypassing restrictions.
DoQ: A newer protocol that encrypts DNS queries using the QUIC protocol, offering improved performance and security compared to DoH and DoT but with more limited support and adoption.
AdGuard Home vs PiHole
AdGuard Home and Pi-Hole are excellent network-wide ad-blocking solutions offering similar functionality, but with slight differences in how they operate. Some key differences include the following:
Encryption: AdGuard Home natively supports DNS over HTTPS and DNS over TLS, while Pi-Hole requires additional configuration or software for encrypted DNS.
Parental control: AdGuard Home offers more advanced parental control features than Pi-Hole.
Resource usage: AdGuard Home is generally lighter on system resources than Pi-Hole, making it a better choice for devices like the Raspberry Pi.
Ultimately, the choice between AdGuard Home and Pi-Hole depends on your specific requirements, preferences, and hardware constraints.
Differences Between AdGuard and Pi-Hole
While Pi-hole and Adguard share many similarities, there are some key differences:
Encryption support: AdGuard Home supports encrypted DNS out-of-the-box, while Pi-Hole requires additional configuration or software.
Parental control features: AdGuard Home offers more robust parental control options compared to Pi-Hole.
Resource usage: AdGuard Home is generally more resource-efficient than Pi-Hole, making it a better choice for devices with limited resources.
Comparing the differences
Feature/Aspect | AdGuard | Pi-hole |
---|---|---|
Installation | Easy to install on multiple platforms, including Docker | Straightforward installation on Raspberry Pi, Linux, Docker |
User Interface | Modern, user-friendly web interface | Simple, clean web interface |
Blocking Capabilities | Blocks ads, trackers, and malware at the DNS level | Blocks ads and trackers at the DNS level |
Customization | Highly customizable with advanced settings | Customizable with various blocklists and settings |
Performance | Generally lightweight, but can use more resources | Lightweight, designed for low-resource environments |
Privacy Features | Includes DNS over HTTPS/TLS, DNSCrypt | Supports DNS over HTTPS/TLS via additional configuration |
Community Support | Active community with frequent updates | Strong community support with frequent updates |
Integration | Integrates with other AdGuard products | Integrates with various open-source projects |
Logging | Detailed logging with analysis tools | Comprehensive logging features |
Cost | Free with premium options for additional features | Completely free, open-source |
Wrapping up
Both of these solutions are great for doing what you want them to do, block ads, and other unwanted types of traffic. I think Pi-Hole has the edge overall in terms of interface, ease of use, and just overall popularity of the solution which tells you something about how it works and what others think about it. However, don’t count out AdGuard. It also has great features. I think for most it is one of those things that you will want to stand up both in your environment and try them out to see which one you like the best.
I believe ADGuard home does have conditional forwarding and you can send dns requests back to your router by configuring it in the upstream providers like thisโฆ
Enter [//]192.168.1.1 to have all unqualified names forwarded to 192.168.1.1 or
Pihole is less resource heavy. Right now Adguard is using 3 time more RAM than Pihole on the same machine (both running in Docker container) with the same block list while every request goes to Pihole and none to Adguard, so Pihole is working and Adguard is idle.