github AdguardTeam/AdGuardHome v0.103.1
AdGuard Home v0.103.1

Unless you've been following our beta releases (and you should, it's really fun 😬), we surely made you wait this time. I really hope we will be able to repeat the tremendous success of the previous stable release, and we won't need to need to push any urgent hotfixes.

Hope you'll find the new version worth the wait, as we have prepared some yummy🍩 new features.

Completely redesigned query log: #1421

Bet you spend a lot of time here. You just can't resist, can you? 😉 I surely can't. The more important it's for the query log to look slick, and even more important to be super informative. Luckily, the updated query log ticks all the boxes ✅


$client modifier support: #1761

One of the advantages of adblock-style syntax (and the reason we prefer it to 'hosts' files) is extensibility. Let us demonstrate👩‍🏫 it once again by extending the syntax with a new modifier. Now you can narrow rules scope to a specific client(s).

A couple of examples:

  • @@||*^$client= — unblock everything for localhost;
  • ||^$client='Frank\'s laptop' — block for the client named Frank's laptop only. Sorry Frank, no for you today🤷‍♂️ Note that the name must be enclosed in quotes and the quote character must be escaped.

Here you can find more examples.

'Edge' update channel

This new update channel is for you if you really like living on the edge want to use the LATEST version of AdGuard. It is updated daily and this is the closest thing to the master branch you can get. And if even that's not enough for you... check out our job listings, I guess👷‍♀️

Here you can learn how to install it.

Multi-arch Docker images

Instead of a multitude of arch-specific tags, we now publish multi-arch images to Docker Hub. So if you were using some arm64-latest tag, don't do that anymore and simply switch to latest.

Other changes

Added or improved

  • Move "Blocked services" to a separate page under "Filters" menu: #1744
  • Do not require root for the first startup: #1699
  • Add support for PTR/rDNS for DHCP hostnames: #1682
  • "Drill down" to activity reports: #1625
  • Expose cache size and TTL settings: #1587
  • Rolling log files: #1573
  • Reduce the ARP scanning period: #1398
  • Choosing filter lists for AdGuard Home: #1325
  • Add an option to disable writing query log to file: #876
  • GL-Inet integration: #1853


  • Autohosts module crash: #1814
  • Hosts file parsed improperly: #1807
  • Unable to add local lists: #1792
  • Adding two DNS rewrites for a domain, null IP for AAAA and CNAME causes Adguard to use CNAME for both A & AAAA records: #1764
  • "DNS rewrites" - An error is prompted when adding a new rewrite rule, but the actual addition is successful.: #1754
  • In "Setup guide - Router - 4th line", the hyperlink "DHCP server" is not available.: #1740
  • Rules Special characters "^" not working as expected: #1732
  • DNS rewrites cause panic logging stats: #1724
  • panic in dnsforward.(*Server).updateStats: #1712
  • Do not reply to DNS responses: #1710
  • Block for tag not work in website: #1707
  • Trailing 0 in last IP octet is ignored when specifying disallowed client: #1687
  • AdGuard Home expects valid TLS config even when allow_unencrypted_doh is configured: #1677


  • Show a link to the FAQ article about Ubuntu when port 53 is in use: #1889
  • Fixing FreeBSD install: #1871
  • Use the same tooltip style everywhere: #1866
  • Only loopback interface during first installation: #1856
  • Make language tag in HTML same as setting language in AdGuard Home: #1797
  • Statistics reset after reboot: #1785
  • Skype file transfer issue: #1782
  • error handling UDP packet: dns: buffer size too small: #1777
  • Wrong 24 hour time format DNS blocklists page: #1766
  • mDNS/Bonjour requests may be spamming the logfile: #1742
  • When anonymize IPs is enabled, trim IPs to /16: #1741
  • Log spam after upgrade to v0.102.0: #1735
  • Don't hide version string when built-in auto-update is disabled: #1726
  • v0.102.0 crashes when rewriting any internal CNAME: #1704
  • syslog error message - unexpected HTTP status code 400 from ' #1697
  • Incorrect rules count: #1694
  • Add more info about DNS names from etc/hosts to "Clients (runtime)": #1686
  • Allow Fastest IP address and Parallel requests to toggle each other on and off: #1678
  • Use of monospace font in selected textareas of the web UI: #1650
  • Make reloading log list work better: #1642
  • Support for disabling DNS caching: #1591
  • Add another /querylog API call with offset/limit params: #1559
  • DNS Rewrites: support wildcard domain name exceptions: #1547
  • Internal DNS queries for whois.* domains bypass AGH: #1535
  • Improve logs page - clear input field when switching from/to logs page: #1523
  • Document the DNS blocking limitations and issues: #1433
  • http: TLS handshake error: #1167

API changes

Please read the changelog to learn about API changes:

Please note, that starting with this version we now strip "v" prefix from the version name in beta and release builds, but it is still there in "edge" builds.

Big thanks to all the contributors! 🙏

  • Thanks to everyone who helps to translate AdGuard Home!
  • We'd like to thank those who contributed to AdGuard Home codebase:
    • @DannyHinshaw for adding rolling log files support.
    • @crazy-max for contributing a lot of time and work and reworking AdGuard Home CI.
    • @tejaskokje for fixing AdGuard Home service installation on FreeBSD.
  • Huge thanks to @mHatsune for keeping this repo clean and tidy.
  • Also, thanks to all the wonderful people who contribute with making small improvements to the code or blocklists, or simply testing AdGuard Home.

If anyone wants to help us with AdGuard Home development, please read here.

How to install AdGuard Home

latest releases: v0.104.0-beta2, v0.104.0-beta1, v0.103.3...
2 months ago