Network-wide ads & trackers blocking DNS server

Overview

 

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

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



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 servers -- both share a lot of common code.

Getting Started

Automated install (Linux and Mac)

Run the following command in your terminal:

curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh

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.

Snap Store

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

Guides

API

If you want to integrate with AdGuard Home, you can use our REST API. Alternatively, you can use this python client, which is used to build the AdGuard Home Hass.io Add-on.

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 lighthttpd
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)
Force Safe search on search engines
Per-client (device) configuration
Access settings (choose who can use AGH DNS)
Running without root privileges

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. 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. Additionally, using a DNS-based blocker can help to block ads, tracking and analytics requests on other types of devices, such as SmartTVs, smart speakers or other kinds of IoT devices (on which you can't install traditional ad blockers).

Known limitations

Here are some examples of what cannot be blocked by a DNS-level blocker:

  • YouTube, Twitch ads
  • Facebook, Twitter, Instagram sponsored posts

Essentially, any advertising that shares a domain with content cannot be blocked by a DNS-level blocker.

Is there a chance to handle this in the future? DNS will never be enough to do this. Our only option is to use a content blocking proxy like what we do in the standalone AdGuard applications. We're going to bring this feature support to AdGuard Home in the future. Unfortunately, even in this case, there still will be cases when this won't be enough or would require quite complicated configuration.

How to build from source

Prerequisites

Run make init to prepare the development environment.

You will need this to build AdGuard Home:

  • go v1.15 or later.
  • node.js v10.16.2 or later.
  • npm v6.14 or later (temporary requirement, TODO: remove when redesign is finished).
  • yarn v1.22.5 or later.

Building

Open Terminal and execute these commands:

git clone https://github.com/AdguardTeam/AdGuardHome
cd AdGuardHome
make

Please note, that the non-standard -j flag is currently not supported, so building with make -j 4 or setting your MAKEFLAGS to include, for example, -j 4 is likely to break the build. If you do have your MAKEFLAGS set to that, and you don't want to change it, you can override it by running make -j 1.

Check the Makefile to learn about other commands.

Building for a different platform. You can build AdGuard for any OS/ARCH just like any other Go project. In order to do this, specify GOOS and GOARCH env variables before running make.

For example:

env GOOS='linux' GOARCH='arm64' make

Or:

make GOOS='linux' GOARCH='arm64'

Preparing release

You'll need this to prepare a release build:

Commands:

make build-release CHANNEL='...' VERSION='...'

Docker image

  • Run make build-docker to build the Docker image locally (the one that we publish to DockerHub).

Please note, that we're using Docker Buildx to build our official image.

You may need to prepare before using these builds:

  • (Linux-only) Install Qemu: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes --credential yes
  • Prepare builder: docker buildx create --name buildx-builder --driver docker-container --use

Resources that we update periodically

  • scripts/translations
  • scripts/whotracksme

Contributing

You are welcome to fork this repository, make your changes and submit a pull request — https://github.com/AdguardTeam/AdGuardHome/pulls

Please note that we don't expect people to contribute to both UI and golang parts of the program simultaneously. Ideally, the golang part is implemented first, i.e. configuration, API, and the functionality itself. The UI part can be implemented later in a different pull request by a different person.

Test unstable versions

There are two update channels that you can use:

  • beta - beta version of AdGuard Home. More or less stable versions.
  • edge - the newest version of AdGuard Home. New updates are pushed to this channel daily and it is the closest to the master branch you can get.

There are three options how you can install an unstable version:

  1. Snap Store -- look for "beta" and "edge" channels there.
  2. Docker Hub -- look for "beta" and "edge" tags there.
  3. Standalone builds. Use the automated installation script or look for the available builds below.

Beta:

curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s beta

Edge:

curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s edge

Report issues

If you run into any problem or have a suggestion, head to this page 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 link to AdGuard Home project: https://crowdin.com/project/adguard-applications/en#/adguard-home

Other

Here's what you can also do to contribute:

  1. Look for issues marked as "help wanted".
  2. Actualize the list of Blocked services. It it can be found in dnsfilter/blocked.go.
  3. Actualize the list of known trackers. It it can be found in client/src/helpers/trackers/adguard.json.
  4. Actualize the list of vetted blocklists. It it can be found in client/src/helpers/filters/filters.json.

Projects that use AdGuard Home

Acknowledgments

This software wouldn't have been possible without:

You might have seen that CoreDNS was mentioned here before — we've stopped using it in AdGuard Home. While we still use it on our servers for AdGuard DNS 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 file.

Privacy

Our main idea is that you are the one, who should be in control of your data. So it is only natural, that AdGuard Home does not collect any usage statistics, and does not use any web services unless you configure it to do so. Full policy with every bit that could in theory be sent by AdGuard Home is available here.

Comments
  • Заблокированные сервисы НЕ РАБОТАЮТ((((Сайты так же работают.

    Заблокированные сервисы НЕ РАБОТАЮТ((((Сайты так же работают.

    Have a question or an idea? Please search it on our forum to make sure it was not yet asked. If you cannot find what you had in mind, please submit it here.

    Prerequisites

    Please answer the following questions for yourself before submitting an issue. YOU MAY DELETE THE PREREQUISITES SECTION.

    • [x] I am running the latest version
    • [x] I checked the documentation and found no answer
    • [x] I checked to make sure that this issue has not already been filed

    Issue Details

    • Version of AdGuard Home server:
    • How did you install AdGuard Home:
    • How did you setup DNS configuration:
    • If it's a router or IoT, please write device model:
    • CPU architecture:
    • Operating system and version:

    Expected Behavior

    Actual Behavior

    Screenshots

    Screenshot:

    Additional Information

    Снимок PNGгнгн Снимок PNGгнгнгн Добрый вечер Уважаемые разработчики!))Не работает блокировка сайтов не один сайт не блокируется(((Настройки сохранил!

    question 
    opened by densik3799 89
  • Stats get corrupted after flood of queries

    Stats get corrupted after flood of queries

    Issue Details

    • Version of AdGuard Home server:

      • v0.107.4
    • How did you install AdGuard Home:

      • GitHub releases
    • How did you setup DNS configuration:

      • System
    • CPU architecture:

      • ARM64/aarch64
    • Operating system and version:

      • Debian 11

    Expected Behavior

    Stats page working normally showing all the info it shows.

    Actual Behavior

    From time to time the stats page shows zero everywhere and empty domains lists (most blocked, most queried, etc). When accessing the page at the time it happens, an error appears at the right bottom corner saying:

    Error: control/clients/find?ip0=127.0.0.1&ip1=206.42.33.166&ip2=10.0.0.3&ip3=45.164.223.2&ip4=motog&ip5=joaouerj&ip6=131.159.24.242&ip7=179.190.172.16&ip8=220.180.241.26&ip9=177.25.155.98&ip10=177.25.153.160&ip11=177.25.150.57&ip12=154.202.55.217&ip13=177.25.153.142&ip14=45.205.48.180&ip15=185.249.221.238&ip16=183.90.186.240&ip17=177.25.156.157&ip18=177.25.144.182&ip19=154.198.205.174&ip20=45.205.35.196&ip21=156.229.9.224&ip22=154.198.219.21&ip23=177.25.153.187&ip24=177.25.144.89&ip25=177.25.150.41&ip26=10.0.0.1&ip27=177.25.153.233&ip28=177.25.159.130&ip29=177.25.159.162&ip30=191.47.16.69&ip31=177.25.153.174&ip32=177.25.155.148&ip33=177.25.144.221&ip34=177.25.153.216&ip35=177.25.156.1&ip36=177.25.159.132&ip37=177.25.155.166&ip38=177.25.145.82&ip39=177.25.151.167&ip40=177.25.150.32&ip41=88.80.186.137&ip42=177.25.156.159&ip43=177.25.153.172&ip44=177.25.155.73&ip45=177.25.145.50&ip46=177.25.157.85&ip47=14.1.112.177&ip48=170.106.176.49&ip49=177.25.150.119&ip50=131.159.25.7&ip51=146.88.240.4&ip52=103.203.59.3&ip53=209.141.45.192&ip54=39.129.8.129&ip55=45.83.67.25&ip56=177.25.156.143&ip57=129.250.206.86&ip58=174.138.40.30&ip59=162.142.125.133&ip60=71.6.232.7&ip61=141.22.28.227&ip62=27.98.224.20&ip63=184.105.139.117&ip64=64.62.197.37&ip65=45.79.15.228&ip66=37.44.239.30&ip67=159.89.194.175&ip68=202.112.238.56&ip69=177.25.156.77&ip70=185.180.143.142&ip71=185.180.143.73&ip72=162.142.125.212&ip73=54.173.29.204&ip74=185.180.143.76&ip75=146.88.240.12&ip76=141.212.123.193 | Network Error
    

    AdGuard continues to work normally apparently and resolving names with other pages working also, but the stats page gets broken. My guess is after a flood of queries from a bunch of CN/HK/SG addresses, the stats info file gets corrupt somehow.

    The last batch was repeatedly composed of queries like that:

    {"T":"2022-03-04T02:39:59.960278275-03:00","QH":"microsoft.com","QT":"TXT","QC":"IN","CP":"","Answer":"APyBgAABABAAAAABCW1pY3Jvc29mdANjb20AABAAAcAMABAAAQAADR8AKyphcHBsZS1kb21haW4tdmVyaWZpY2F0aW9uPTBnTWVhWXlZeTZHTFZpR2/ADAAQAAEAAA0fAEVEZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uPXBqUE9hdVNQY3JmWE9aUzlqblBQYTVheG93Y0hHQ0RBbDFfODZkQ3FGcGvADAAQAAEAAA0fABsaZmcydDBnb3Y5NDI0cDJ0ZGN1bzk0Z29lOWrADAAQAAEAAA0fABsadDdzZWJlZTUxanJqN3ZtOTMyazUzMWhpcGHADAAQAAEAAA0fAEVEZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uPU0tLUNWZm5fWXdzVi0yRkdiQ3BfSEZhRWoyM0JtVDBjVEY0bDhoWGdwdk3ADAAQAAEAAA0fACEgcGJjcGN3ODRzZms3dzRuaG03ZHd5ZzJrM2d4MHQ0eHLADAAQAAEAAA0fAC4tZG9jdXNpZ249ZDVhMzczN2MtYzIzYy00YmQwLTkwOTUtZDJmZjYyMWYyODQwwAwAEAABAAANHwC+vXY9c3BmMSBpbmNsdWRlOl9zcGYtYS5taWNyb3NvZnQuY29tIGluY2x1ZGU6X3NwZi1iLm1pY3Jvc29mdC5jb20gaW5jbHVkZTpfc3BmLWMubWljcm9zb2Z0LmNvbSBpbmNsdWRlOl9zcGYtc3NnLWEubWljcm9zb2Z0LmNvbSBpbmNsdWRlOnNwZi1hLmhvdG1haWwuY29tIGluY2x1ZGU6X3NwZjEtbWVvLm1pY3Jvc29mdC5jb20gLWFsbMAMABAAAQAADR8AODdhZG9iZS1zaWduLXZlcmlmaWNhdGlvbj1jMWZlYTliNGNkZDRkZjBkNTc3ODUxN2YyOWUwOTM0wAwAEAABAAANHwAuLWRvY3VzaWduPTUyOTk4NDgyLTM5M2QtNDZmNy05NWQ0LTE1YWM2NTA5YmZkZMAMABAAAQAADR8AXVxhZG9iZS1pZHAtc2l0ZS12ZXJpZmljYXRpb249OGFhMzVjNTI4YWY1ZDcyYmViMTliMWJkM2VkOWI4NmQ4N2VhN2YyNGIyYmEzYzk5ZmZjZDAwYzI3ZTlkODA5Y8AMABAAAQAADR8AJSRkMzY1bWt0a2V5PTRkOGJueWN4NDBmeTM1ODFwZXR0YTRnc2bADAAQAAEAAA0fAFlYOFJQRFhqQnpCUzl0dTdQYnlzdTdxQ0FDcndYUG9EVjhadExmdGhUbkM0eTlWSkZMZDg0aXQ1c1FsRUlUZ1NMSjRLT0lBOHBCWnhteXZQdWp1VXZoT2c9PcAMABAAAQAADR8ARURnb29nbGUtc2l0ZS12ZXJpZmljYXRpb249MVRlSzhxME96aUZsNFQxdEYtUVI2NUprekhaMXJjZGdOY2NERnA3OGlUa8AMABAAAQAADR8AJSRkMzY1bWt0a2V5PTN1YzFjZjgyY3B2NzUwbHprNzB2OWJ2ZjLADAAQAAEAAA0fADw7ZmFjZWJvb2stZG9tYWluLXZlcmlmaWNhdGlvbj1md3p3aGJiendtZzVmemdvdGMyZ281MW9sYzM1NjYAACkQAAAAAAAAAA==","Result":{},"Upstream":"127.0.0.1:5300","IP":"156.229.9.224","Elapsed":1031547,"Cached":true}
    

    Additional Information

    The upstream is Unbound 1.13.1. If possible, please provide an e-mail where I can forward the more sensitive info like query and stats file for analysis if needed.

    question 
    opened by cadusilva 53
  • DOH requests hang after a network reconnection

    DOH requests hang after a network reconnection

    • Version of AdGuard Home server: 0.106.3
    • How did you install AdGuard Home: docker
    • How did you setup DNS configuration: Adguard -> router -> ISP
    • If it's a router or IoT, please write device model: OPNsense
    • CPU architecture: Intel
    • Operating system and version: Ubuntu running with Docker containers

    Expected Behavior

    adguard should always keeps processing DNS requests.

    Actual Behavior

    Since the latest updates, AdGuard stops processing DNS requests. Even in the same vlan (excluding the router) the software stops listing to DNS requests. Logs keep empty, webgui and ping still works (no network issue)

    Screenshots

    PRTG polling my DNS setup, also pihole is deployed in the same setup an never show an alarm. It seems for now only related tot adguard. image

    Additional Information

    sudo docker run -d --name adguard --hostname adguard --net=hostnetwork --ip=172.16.1.253 --cap-add=NET_ADMIN --cap-add=CAP_NET_RAW --cap-add=CAP_NET_BIND_SERVICE -e TZ=Europe/Amsterdam -v /home/rodeho/docker/adguard/workdir:/opt/adguardhome/work -v /home/rodeho/docker/adguard/confdir:/opt/adguardhome/ --restart unless-stopped adguard/adguardhome

    bug P3: Medium 
    opened by rodeho 52
  • Choosing filter lists for AdGuard Home

    Choosing filter lists for AdGuard Home

    Prerequisites

    Please answer the following questions for yourself before submitting an issue. YOU MAY DELETE THE PREREQUISITES SECTION.

    • [x] I am running the latest version
    • [x] I checked the documentation and found no answer
    • [x] I checked to make sure that this issue has not already been filed

    Problem Description

    As I was testing with a stock AGH install on AMD64 Windows, I noticed that the available selection of lists on default installations is still pretty weak: image

    So I think it's time to consider trusting some more lists enough for them to be included by default as well. I'd recommend one or more of the following (in mostly random order):

    —— Non-regional ——

    —— Regional ——

    And that's even without getting into more proof-of-concept-esque list purposes like censorship evasion lists, Nintendo DS online servers, software update blockers, anti-gambling, and so on. I also chose to exclude unofficial domains versions of ABP-formatted lists.

    Proposed Solution

    Add some more lists to default AdGuard Home installations.

    Alternatives Considered

    Adding a link to FilterLists.com on the filter settings page would've also been great, although I (who've worked very extensively on its list cataloguing) will be the first to admit that it's become a daunting site for newcomers to browse through, and is almost unusable on phones.

    Additional Information

    These list additions would be done independently of you guys' plans to create an official script to convert adblocker lists to AGH lists, and these list suggestions should hopefully not interfere with those plans of yours for the immediate time being.

    help wanted feature request P3: Medium 
    opened by DandelionSprout 51
  • how fix error 127.0.0.1:8618

    how fix error 127.0.0.1:8618

    Error: control/stats | Couldn't get stats_top from coredns: *url.Error Get http://127.0.0.1:8618/stats: dial tcp 127.0.0.1:8618: connect: connection refused | 502

    opened by iAYMANi 51
  • AdGuard Home cannot work for 5 minutes after boot, DNS timeouts (Raspberry Pi)

    AdGuard Home cannot work for 5 minutes after boot, DNS timeouts (Raspberry Pi)

    When setting the Upstream DNS servers from the default TLS to Cloudflare's DoH (https://cloudflare-dns.com/dns-query), rebooting the Pi causes AdGuard Home to behave unexpectedly once booted.

    No clients can use DNS, the DNS requests all timeout. Trying to visit the admin page causes the settings page to freeze and not load for a very long time, with errors about timeouts for version checks to github. If I can get it to eventually load, I need to clear the DoH entry so it reverts back to the default TLS entries.

    Once it uses TLS again, all clients can use DNS fine and the AdGuard Home admin interface works normally again.

    So DNS-over-HTTPS does not work for me once I restart the Pi.

    opened by ghost 49
  • When internet drops, Adguard stops serving all DNS requests, including rewrites.

    When internet drops, Adguard stops serving all DNS requests, including rewrites.

    • Version of AdGuard Home server:
    • How did you install AdGuard Home: Docker
    • How did you setup DNS configuration: dns over tls and https for upstream, half a dozen local rewrites
    • If it's a router or IoT, please write device model: Raspi 4
    • Operating system and version: Raspbian 64bit

    Expected Behavior

    Like a real DNs server, queries should be delivered from local zones and cached lookups, even when upstream servers are down.

    Actual Behavior

    All DNS queries fail and clients panic

    Screenshots

    Screenshot:

    Additional Information

    feature request P3: Medium 
    opened by norgan 48
  • Bootstrapping DOH and DOT uses system resolver on Windows

    Bootstrapping DOH and DOT uses system resolver on Windows

    Steps to reproduce

    1. Install as service
    2. Run ipconfig /flushdns
    3. Run AdGuardHome.exe -s start
    4. Run nslookup www.google.com

    Expected behavior

    Return something.

    Actual behavior

    If I get the timeout, always timeout. When the timeout, [Test upstreams] will get the error. But If I set any DNS (direct set IP) at the first upstream DNS, it will work.

    Config: AdGuardHome.zip

    Your environment

    | Description | Value | | - | - | | Version of AdGuard Home server: | v0.95-hotfix | How did you setup DNS configuration: | System | If it's a router or IoT, please write device model: | PC | Operating system and version: | Windows 10 x64/Windows 8.1 x64

    bug question P3: Medium 
    opened by bestpika 48
  • AdGuard Home sending out excessive PTR requests in its CIDR range

    AdGuard Home sending out excessive PTR requests in its CIDR range

    Background I have two Raspberry Pi 4B units running the latest version of Raspberry Pi OS. Each unit has AdGuard Home installed on it and nothing more. AdGuard Home is latest version (0.106.2) and is configured identically for each unit.

    The presence of two units allows one unit to provide DNS service while the other is offline (e.g., to install software patches). The units are part of 10.0.10.0/24 and have respective IP addresses of 10.0.10.6 and 10.0.10.7. DHCP functionality is disabled for both units. (DHCP is managed by my firewall.)

    Problem Both units send excess PTR requests for other clients in the 10.0.10.0/24 range. The response is always SERVFAIL. For example, AdGuard Home at 10.0.10.6 may send out a PTR request of 1.10.0.10.in-addr.arpa for which the response is SERVFAIL. The unit may also query their own host names, e.g., AdGuard Home at 10.0.10.7 may send out a PTR request of 7.10.0.10.in-addr.arpa. How do I stop this behavior? Is this behavior from AdGuard Home, or could it be from the underlying Raspberry Pi OS?

    Attempted Solution There is a box to “Enable reverse resolving of clients’ IP addresses” under Settings --> DNS Settings. I have checked and then unchecked this box to ensure this feature is off. However, an unchecked box does not stop this behavior.

    Comments I did not have this problem before the recent upgrade to the version 106.x series. However, since the 106.x series has been released, I have also patched the Raspberry Pi OS a couple of times. Unfortunately, the PTR requests are so excessive that they populate the first few slots of the “Top Queried Domains”. The AdGuard Home units also occupy the first and second slots of the “Top clients”.

    2021-05-16_21-41-25

    bug P3: Medium 
    opened by state-of-affairs 46
  • DHCP Issue again.

    DHCP Issue again.

    Hi, after few test, I have some trouble again with the DHCP. Some of my devices can't obtain an IP and I need to set a static lease if I want it to work.

    I also encounter some of disconnection with few other. In the end, my log file are flooded by message about normalisation error.

    I run now the 1.0.6.1 b1

    Best regards

    AdGuard.log

    Originally posted by @Black8all in https://github.com/AdguardTeam/AdGuardHome/issues/2978#issuecomment-830565777

    bug P3: Medium 
    opened by Black8all 45
  • CI revamped and more

    CI revamped and more

    First of all thank you for offering AdGuardHome, it's really what I was looking for as a lightweight alternative to Pi-hole.

    This PR offers a pretty big redesign of the CI to have a minimum of devops maintenance but also something more versatile. This way, we will be limited to a few dev and production commands.

    I would have liked to do several PRs but this was not possible because of the changes that were made. Here is a short summary:

    • CI revamped and other enhancements
    • GoReleaser for multi-arch binaries
    • Switch to GitHub Actions (more versatile) with 2 workflows
    • Docker multi-manifest image with buildx
    • Go sum fix
    • Use tools.go paradigm for external dependencies (packr)
    • Use go generate for packr

    In order to be able to test my modifications I would first need to activate the GitHub Actions on the repository if it is not already done and also add the secrets as I mention in the changelog below. I'm really hype to work with you on this if your roadmap allows it ;)

    Here is what it looks like on my fork: https://github.com/crazy-max/AdGuardHome/actions/runs/112195639

    Changelog

    • Add .dockerignore
    • Global ignore for packr files
    • ~~Fix eslint run script~~ (fixed through rebase)
    • Add goreleaser config
      • Multi arch binaries
      • Snapcraft
    • Only one Dockerfile with multi-platform support through Buildx
    • Go sum cleaned
    • Use tools.go paradigm for external dependencies (packr)
    • Use go generate for packr
    • Add Open Container Specification labels to Dockerfile
    • Switch to GitHub Actions (more versatile) with 3 jobs for build workflow
      • Test
        • 3 platforms (linux,windows,macos) to enhance coverage
        • Cache go modules and node_modules
        • golangci-lint ported
        • eslint
        • Go tests ported
        • Coverage uploaded to Codecov
      • App
        • Cache go modules and node_modules
        • npm ci and build-prod
        • Snapcraft Login (if tag)
        • GoReleaser release or snapshot if not a tag
        • Create GitHub release to publish assets as draft for review (if tag)
      • Docker multi-arch manifest
        • On release: create x.x.x and latest tags
        • On snapshot: crate edge tag
        • Install docker buildx
        • Docker build
        • Docker login (if tag)
        • Docker push (if tag)
        • Image manifest check (if tag)
        • Clear Docker credentials on post (if tag)
    • Add simple workflow to fix go.sum if not "tied"
    • GitHub Actions secrets have to be added to the repo: CODECOV_TOKEN, SNAPCRAFT_LOGIN, DOCKER_USERNAME, DOCKER_PASSWORD

    And thanks to buildx (Buildkit), we have a single multi-arch image. Will look like this on DockerHub:

    image

    Local dev commands

    • npm --prefix client ci
    • npm --prefix client run build-prod
    • CHANNEL=none goreleaser release --rm-dist --snapshot
    • docker build -t adguardhome -f ./Dockerfile .

    TODO

    • [X] Add Slack notification
    • [ ] Make a review of snapcraft build
    • [ ] Update documentation
    opened by crazy-max 44
  • Direct IP connections to the server doesn't work when using AGH in Windows 11 22H2

    Direct IP connections to the server doesn't work when using AGH in Windows 11 22H2

    Prerequisites

    • [X] I have checked the Wiki and Discussions and found no answer
    • [X] I have searched other issues and found no duplicates
    • [X] I want to report a bug and not ask a question

    Operating system type

    Windows

    CPU architecture

    AMD64

    Installation

    GitHub releases or script from README

    Setup

    On one machine

    AdGuard Home version

    0.107.14

    Description

    What did you do?

    I updated my Windows 11 PC to 22H2 stable on launch day.

    Expected result

    Connecting to an AdGuard Home server with an IPv4 or IPv6 connection works, especially so on LAN connections.

    Actual result

    Direct IP connections to AGH are either no longer working, or are so ultra-slow that connections to it time out, after updating the server OS to Windows 11 22H2, both with AGH 0.107.14, 0.107.13, and 0.108.0-b.15. Apparently my server has been down for 10 days except for DoH and possibly DoQ.

    From what I can tell on my end:

    • netstat -an shows 0.0.0.0:53 and [::]:53 as LISTENING on TCP, and as *:* on UDP.
    • AdGuardHomeLogFile.txt shows [info] Listening to udp://[::]:53, but strangely enough does not show [info] Listening to udp://127.0.0.1:53. There seem to be no mention of listeners being closed.
    • "Windows Defender Firewall with Advanced Settings" claims that port 53 has been completely opened, though it has been mistaken before.
    • Port 53 seems to be forwarded on both IPv4 and IPv6 on my ASUS router.
    • .\AdGuardHome.exe --service restart seems to make it work for between 2 and 60 seconds again, after which it no longer works again.
    • The AdGuard for Android logger shows 04:47:43.039 [AsyncTask #7] WARN com.adguard.android.filtering.dns.c - Failed to test 192.168.1.188 java.lang.IllegalArgumentException: Request timed out
    • My Nintendo Switch can't connect either, usually with either Error Code: 2110-3127 (...) Could not perform DNS name resolution or Error Code: 2160-8006 (...) There is no response from the server.
    • The failed connections don't show up at all on AGH's admin GUI log page.
    • Trying to connect to 127.0.0.1 as DNS from the server PC doesn't work either, remarkably enough.

    Screenshots (if applicable)

    1 screenshot of Android

    Screenshot_20220930-150500

    3 screenshots of Nintendo Switch

    2022093014591700-1AB131B6E6571375B79964211BB3F5AE 2022093014592000-1AB131B6E6571375B79964211BB3F5AE 2022093014585500-919080947E4F48ABDD3B8E0133C73FB5

    1 screenshot of Nintendo 3DS

    image

    More can be provided on request.

    Additional information

    Carried over from https://github.com/AdguardTeam/AdGuardHome/discussions/4949 due to a lack of attention there.

    opened by DandelionSprout 0
  • Unable to select next during initial setup | Authentication Sep 3 | Error: control/install/configure | Timeout 503

    Unable to select next during initial setup | Authentication Sep 3 | Error: control/install/configure | Timeout 503

    Prerequisites

    • [X] I have checked the Wiki and Discussions and found no answer

    • [X] I have searched other issues and found no duplicates

    • [X] I want to report a bug and not ask a question

    Operating system type

    Linux, Other (please mention the version in the description)

    CPU architecture

    Other (please mention in the description)

    Installation

    GitHub releases or script from README

    Setup

    On one machine

    AdGuard Home version

    0.108.0-b.16 (have tried both Standard and Beta channel versions, same issue)

    Description

    What did you do?

    After following the instructions in the main Github page, I'm able to install and get the web setup running, however it is failing on step 3, Authentication. The next button changes colour and can be clicked, however nothing happens, then I start seeing "Error: control/install/configure | Timeout | 503.

    I'm unable to proceed, however can click back to get to the step 2 page, when click next and get to step 3, same issue occurs.

    I have uninstalled and re-installed, and tested both normal and beta channel relelases with the same issue.

    Expected result

    To be able to enter a username and password, then click next to get to step 4.

    Actual result

    When clicking the Next button (that changes colour when fields are completed on the page, it clicks and the colour changes again, however nothing happens, then I start seeing "Error: control/install/configure | Timeout | 503.

    Screenshots (if applicable)

    image

    image

    Additional information

    O/S: Ubuntu 22.04.2 LTS (5.15.0.48-generic aarch64 Hardware: Mac Studio M1, using Multipass for virtualisation Client (web): Safari, Chrome & Firefox tested on MacMS and iPad

    I have looked at issue 3987 (and duplicate 3999), however this doesn't quite match my issue and appears to have been fixed quite a while ago.

    Wasn't sure if I should open a discussion topic or report as a bug, thank you for any help or guidance.

    opened by ozsmac 0
  • [HELP WANTED] DNS over DHCP don't seems too work, with complications

    [HELP WANTED] DNS over DHCP don't seems too work, with complications

    Prerequisites

    • [X] I have checked the Wiki and Discussions and found no answer

    • [X] I have searched other issues and found no duplicates

    • [x] I want to report a bug and not ask a question

    Operating system type

    Linux, Other (please mention the version in the description)

    CPU architecture

    x86

    Installation

    GitHub releases or script from README

    Setup

    On a router, DHCP is handled by AdGuard Home

    AdGuard Home version

    v0.107.13

    Description

    What did you do?

    Hello, I have setup my AdGuard to manage the network as a DHCP server. It manage well my client with ip and some request, but for some client like my Mac, he get no requests at all. And I have check the dns side of this client and I don't see other dns specific.

    So, I have try to manually add the dns suggered in the adguardhome panel inside my mac network config, the DNS actually worked and block stuff, but I can't reach any local IP like adguard panel or other hosted app (even the one with domain name+ reverse proxy).

    Do I need to add any more stuff? Or the issue is on my DHCP? Because I think with the DHCP on Adguard I would not need to manually add dns ...

    Additional information

    DNS PAGE: DNS: https://dns.quad9.net/dns-query Reverse private DNS servers: Nothing inside, the two next box unchecked No EDNS DNSSEC On No ipv6 resolve (tell me if you need more info..)

    opened by NBSDEVApp 0
  • UI errors: only application/json is allowed | 415

    UI errors: only application/json is allowed | 415

    Prerequisites

    • [X] I have checked the Wiki and Discussions and found no answer

    • [X] I have searched other issues and found no duplicates

    • [X] I want to report a bug and not ask a question

    Operating system type

    Linux, Other (please mention the version in the description)

    CPU architecture

    ARMv7

    Installation

    Custom port

    Setup

    On a router, DHCP is handled by AdGuard Home

    AdGuard Home version

    AdGuard Home v0.107.14

    Description

    Error: control/querylog_clear | only application/json is allowed | 415

    bug P2: High UI 
    opened by pendie 15
  • Main Website does not support RTL

    Main Website does not support RTL

    Prerequisites

    • [X] I have checked the Wiki and Discussions and found no answer

    • [X] I have searched other issues and found no duplicates

    • [X] I want to report a bug and not ask a question

    Operating system type

    Linux, Other (please mention the version in the description)

    CPU architecture

    ARMv7

    Installation

    GitHub releases or script from README

    Setup

    On one machine

    AdGuard Home version

    v0.107.13

    Description

    The main interface does not support RTL (Right to left direction). The RTL interface is applicable to Arabic and Persian language.

    opened by zayedalsaidi 0
  • QNAME minimisation support

    QNAME minimisation support

    Prerequisites

    • [X] I have checked the Wiki and Discussions and found no answer

    • [X] I have searched other issues and found no duplicates

    • [X] I want to request a feature or enhancement and not ask a question

    Description

    Hello,

    please add QNAME minimisation to improve privacy: https://datatracker.ietf.org/doc/html/rfc7816

    Thank you. Best regards!😮‍💨

    opened by ammnt 0
Releases(v0.108.0-b.16)
Hetzner-dns-updater - A simple tool to update a DNS record via Hetzner DNS API. Used for simple HA together with Nomad

hetzner-dns-updater A small utility tool to update a single record via Hetzner D

Patrick Pacher 0 Feb 12, 2022
🚀Gev is a lightweight, fast non-blocking TCP network library based on Reactor mode. Support custom protocols to quickly and easily build high-performance servers.

gev 中文 | English gev is a lightweight, fast non-blocking TCP network library based on Reactor mode. Support custom protocols to quickly and easily bui

徐旭 1.5k Sep 29, 2022
Access Google Ads API via GRPC

google-ads-pb You can use the golang library to interact with the Google Ads API across grpc. This library is not the official Google Ads API library.

null 11 Aug 25, 2022
GoLang ads.txt scraper

Collects and parses ads.txt GoLang program scrapes sites for ads.txt and stores its significant details to PostgreSQL database. Give it a file with CS

null 0 Feb 11, 2022
🚀 gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go./ gnet 是一个高性能、轻量级、非阻塞的事件驱动 Go 网络框架。

English | ???? 中文 ?? Introduction gnet is an event-driven networking framework that is fast and lightweight. It makes direct epoll and kqueue syscalls

Andy Pan 6.9k Sep 27, 2022
Netpoll is a high-performance non-blocking I/O networking framework, which focused on RPC scenarios, developed by ByteDance.

Netpoll is a high-performance non-blocking I/O networking framework, which focused on RPC scenarios, developed by ByteDance. RPC is usually heavy on processing logic and therefore cannot handle I/O serially. But Go's standard library net designed blocking I/O API, so that the RPC framework can only follow the One Conn One Goroutine design.

CloudWeGo 3.1k Sep 29, 2022
High-performance, non-blocking, event-driven, easy-to-use networking framework written in Go, support tls/http1.x/websocket.

High-performance, non-blocking, event-driven, easy-to-use networking framework written in Go, support tls/http1.x/websocket.

lesismal 793 Sep 28, 2022
meek is a blocking-resistant pluggable transport for Tor.

meek is a blocking-resistant pluggable transport for Tor. It encodes a data stream as a sequence of HTTPS requests and responses. Requests are reflect

Clair de Lune 1 Nov 9, 2021
Middleware for Blocking IP ranges by inserting CIDR Blocks and searching IPs through those blocks

firewall Middleware for Blocking IP ranges by inserting CIDR Blocks and searching IPs through those blocks. Features Easy to use Efficient and Fast Co

Golang libraries for everyone 5 May 20, 2022
A small tool used to correspond to the IP address according to the name, id, and network alias of the docker container, which can be run as a DNS server

A small tool used to correspond to the IP address according to the name, id, and network alias of the docker container, which can be run as a DNS server

Swift 5 Apr 4, 2022
DNS Ping: to check packet loss and latency issues with DNS servers

DNSping DNS Ping checks packet loss and latency issues with DNS servers Installation If you have golang, easiest install is go get -u fortio.org/dnspi

Fortio (Φορτίο) 60 Aug 5, 2022
Verify IP addresses of respectful crawlers like Googlebot by reverse dns and forward dns lookups

goodbots - trust but verify goodbots verifies the IP addresses of respectful crawlers like Googlebot by performing reverse dns and forward dns lookups

Eric Wu 30 Aug 16, 2022
The Dual-Stack Dynamic DNS client, the world's first dynamic DNS client built for IPv6.

dsddns DsDDNS is the Dual-Stack Dynamic DNS client. A dynamic DNS client keeps your DNS records in sync with the IP addresses associated with your hom

Ryan Young 14 Sep 7, 2022
netcup DNS module for caddy: dns.providers.netcup

netcup DNS module for Caddy This package contains a DNS provider module for Caddy. It can be used to manage DNS records with the netcup DNS API using

null 7 Sep 12, 2022
A fork on miekg/dns (since I've already forked zmap/dns)

Alternative (more granular) approach to a DNS library Less is more. Complete and usable DNS library. All Resource Records are supported, including the

null 0 Jan 19, 2022
A simple DNS forwarder that forwards DNS queries to various upstreams

A simple DNS forwarder that forwards DNS queries to various upstreams. If an upstream returns NXDomain, the next upstream is tried.

null 1 Jul 8, 2022
Designed to support DNS brute-forcing with a minimal number of network connections

Fast Use of DNS Resolvers Designed to support DNS brute-forcing with a minimal number of network connections. Installation go get -v -u github.com/caf

Jeff Foley 31 Aug 18, 2022
Capdns is a network capture utility designed specifically for DNS traffic. This utility is based on tcpdump.

Capdns is a network capture utility designed specifically for DNS traffic. This utility is based on tcpdump. Some of its features include: Unde

Infvie Envoy 10 Feb 26, 2022
Package socket provides a low-level network connection type which integrates with Go's runtime network poller to provide asynchronous I/O and deadline support. MIT Licensed.

socket Package socket provides a low-level network connection type which integrates with Go's runtime network poller to provide asynchronous I/O and d

Matt Layher 44 Aug 3, 2022