How to setup AdGuard Home on a public server

Introduction

Let’s start with a short introduction of what AdGuard Home is and why we made it. AdGuard Home is not a traditional content blocker that works in your browser. It’s also not a system-wide blocker like AdGuard premium apps. Instead, this is a network-wide blocker, and its purpose is to protect all your devices.

Disclaimer: in the current state, AdGuard Home is supposed to be used by power users and technical geeks who know what Linux is and how to use it. If you are not among them, probably this post is not for you. But stay tuned; we’re preparing a network-wide blocking solution suitable for everyone just as we speak.

Setup options

There are two “base” ways to set up AdGuard Home. The first one is to install it at home on some device like Raspberry Pi. In this case, it will control all devices in your home network. However, once your device leaves the home network (for instance, you take the phone with you and go out), it won’t be protected anymore. I won’t cover this setup in this post, but you can read this instruction.

The second way is to install AdGuard Home on a public cloud server, set up encryption (this is a crucial step!), and configure your devices to use your new server. Of course, you have to pay for the server (~$5/mo) and the domain name (~$5-10/yr), but now wherever you go, AdGuard Home will continue to do its job. And since this is your server, you’ll be in control of your data.

In this post, we’ll focus on the second way. Setting up AdGuard Home in your home network will be a topic for some future articles.

Disclaimer: most of the steps in this instruction and services that I use can be replaced with alternatives. I am describing my own setup, your preferences may differ, and that’s completely okay.

Registering a domain name

The very first step would be to register a domain name. For this, I prefer to use GoDaddy, but there are many more. To name a few: Name.com, Google Domains, Namecheap.

Take some time to find a name that you like, and you’re good to go!

Once you have a domain name, we’re ready to get to the next step — rent a public cloud server.

Renting a cloud server

A cloud server is basically a virtual machine that runs on some hosting company infrastructure. It has a public static IP address, and you can connect to it from anywhere. Now, for my small personal side-projects, I prefer to use either DigitalOcean or Vultr, but you can choose whichever hosting provider you prefer.

Now, let’s proceed and finally rent a server. DigitalOcean calls servers “Droplets”, so just click “Create Droplets”, and let’s get to it.

First, choose the OS. I prefer Debian 10, but generally, AdGuard Home can run on anything.

You won’t need a powerful server for your private AdGuard Home, so choose the cheapest tariff available.

The last step is to configure authentication. Password authentication is available, but I strongly suggest using SSH key authentication.

It will take 30 seconds for the server to be created, and it’s ready to be used!

Connect to your server

If you’re a Linux or a macOS user, just open the Terminal and print ssh root@ipaddress (replace ipaddress with the IP address of your new server) to connect to your new server.

If you’re a Windows user, you may need to install additional software (for instance, Putty) for that or use WSL.

Once you’ve successfully connected to your server, you’ll see a command line like this.

Finally, we’re ready to install AdGuard Home!

Installing AdGuard Home

There are multiple options of installing AdGuard Home. You can use Docker, SnapStore, download and run it manually. In this post, I’ll use the automated installation script.

Run the following command first:

apt update
apt install curl
apt install dnsutils

You’re ready to run the installation script:

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

Now AdGuard Home is installed, and you can open its web interface (the installation script prints its address).

Initial setup

The initial setup will allow you to configure general settings, choose network interfaces AGH should listen to, and enter the admin user credentials.

Choose a strong password! This is a public server, and it’s important to be very careful there. Check your password on Haveibeenpwned to make sure that it’s not compromised.

Congratulations, you now have installed your own AdGuard Home server! In addition, you can check if it works by sending a DNS query to it:

nslookup example.org ipaddress

(replace ipaddress with the IP address of your server).

Here’s how the AdGuard Home dashboard will look like:

Let’s get to know better some of the important AdGuard Home features.

Blocklists

By default, AdGuard Home uses a single blocklist called AdGuard DNS filter. This is the same list we use in AdGuard DNS, and I’d say it is rather friendly to casual users. The policy of this list is to avoid blocking domains if blocking breaks too many things.

However, with AdGuard Home, you are in control, and you can choose the blocklists that suit you better.

Query Log

Here you can observe the network activity and decide what needs to be blocked or unblocked.

Additional security settings

This is important if you’re running a public server. Many people scan the Internet for public DNS servers and try to exploit them for DNS amplification attacks. While AdGuard Home comes with a reasonable default rate limit, preventing severe issues, you might still want to restrict access to avoid unrelated IP addresses appearing in the statistics. It’s advisable to set up a firewall for added protection, particularly if you have older devices that lack support for encrypted DNS. If all of your devices are able to use encrypted DNS protocols, we recommend disabling plain DNS altogether. For more details on this matter, refer to our Knowledge base.

More features

There are many more knobs in there, but I hope you now feel comfortable with it and explore it independently. Here’s a very detailed guide that can help you with it.

The problem is that currently, you only got a plain DNS server. And since this is a public server and all your DNS queries will go through the Internet, you want them to be encrypted. So our next step would be to configure encryption.

Obtaining a TLS certificate

Encryption is based on TLS certificates which you can obtain for free, but only if you have a domain name. This is exactly why we needed to register a domain name in the beginning. So the first step would be to point your domain name to the IP address of your new server.

Head to GoDaddy or whatever domain registrar you used. Then, go to DNS → Manage Zones, find your domain there and change the “A” record’s value to the IP address of your server.

Also, add a new “A” record for * , since we want all subdomains to point to AdGuard Home as well. We need this for a more flexible clients configuration, and I’ll talk about this later. Alternatively, you can add a CNAME record for * that points to your main domain name.

Now you can navigate to your AdGuard Home using the domain name instead of the IP address.

The problem is that it is still marked “Not Secure” by the browser. So to make it secure and encrypted, we need to obtain a certificate, and the easiest way to do that for free is to use Let’s Encrypt.

Let’s Encrypt is a non-profit that provides TLS certificates at no charge. You just need to confirm that you’re the owner of the domain. To do that, you need to use a client tool. The most popular option is CertBot, but I personally prefer to use Lego. We’ll need to obtain a Wildcard certificate so that we could not only encrypt your main domain, but also its subdomains.

First of all, we need to create API keys for GoDaddy. Choose “production” there. You’ll get a “key” and a “secret”, you’ll need them both.

If you’re not using GoDaddy, check out lego docs on how to use it with a different DNS provider.

Now you have everything. We’ve also prepared a simple script that would make it easier to obtain the certificate. Run the following commands:

mkdir /opt/lego
cd /opt/lego
curl -s "https://raw.githubusercontent.com/ameshkov/legoagh/master/lego.sh" --output lego.sh
chmod +x lego.sh

Now to obtain the certificates, you just need to run the following command. Don’t forget to fill your data there (domain name, email, the key, and the secret).

DOMAIN_NAME="example.org" \
    EMAIL="you@email" \
    DNS_PROVIDER="godaddy" \
    GODADDY_API_KEY="yourapikey" \
    GODADDY_API_SECRET="yourapisecret" \
    ./lego.sh

Once the script finishes its work, it will put your certificate and key in the same directory.

Configuring encryption in AdGuard Home

Now that you have a TLS certificate, it is time to use it in AdGuard Home. Head to Settings → Encryption.

Enable encryption and configure your server name:

Configure AdGuard Home to use the certificate you just obtained:

Done, AdGuard Home can now work over the encrypted protocols: DNS-over-HTTPS, DNS-over-TLS, and DNS-over-QUIC!

Time to make your devices use it.

Configuring devices

Actually, there’s a “Setup Guide” page in AdGuard Home that explains how you can configure all your devices.

Of course, the preferred way is to use AdGuard apps that support DNS filtering:

Alternatively, you can use encrypted DNS natively on most of the modern Operation Systems. Let’s take Android for instance.

  1. Head to Settings → Network → Advanced → Private DNS
  2. Here’s one trick I’d like to focus on. Instead of just entering your domain name, come up with some subdomain, i.e. instead of example.org, enter myandroid.example.org (that’s why we obtained a wildcard certificate). This way AdGuard Home will be able to identify that device.

Now you can see statistics for that device in AdGuard Home.

But what if you want to have different settings for different devices? For instance, you may want to have stricter settings for your kids’ devices. No problem with that!

Configuring clients

Open AdGuard Home and go to Settings → Client settings. Let’s create a client for our Android device.

You need to enter the device name (let’s call it Harry) and its identifier (it would be “myandroid" in this case).

So, what can we do with Harry?

  1. Select whether we should use global blocklists for Harry’s traffic.
  2. Enable anti-phishing and anti-malware lists.
  3. Block adult websites and enforce safe search on major search engines.
  4. Forbit Harry to access specific services (for instance, Reddit or TikTok).
  5. Forward Harry’s traffic to a different upstream DNS server.

In AdGuard Home you can create custom filtering rules that change DNS traffic. You can choose to block something, unblock, modify, rewrite, etc. These custom filtering rules scope can be limited to specific clients. Let’s take an example, here’s a rule that you need to add if you want to prevent Harry from visiting icloud.com:

||icloud.com^$client=Harry

Check it from the device and voila, the website cannot be reached.

Questions or suggestions?

AdGuard Home is completely open source and available on Github. If you have any questions or suggestions, you are welcome to go there and start a new discussion.

And if you want to contribute to the development, there are several ways to do that. You can test “beta” and “edge” versions, help with translations or even open a pull request and contribute new code.

喜歡這篇文章嗎?
AdGuard DNS AdGuard Mail AdGuard Wallet
AdGuard DNS AdGuard Mail AdGuard Wallet
AdGuard Windows 版主畫面
AdGuard Windows 版的防護畫面,顯示防護功能與設定。
AdGuard Windows 版的統計畫面,顯示已封鎖的廣告與追蹤器資料。
AdGuard Windows 版的應用程式管理畫面,顯示裝置上已安裝應用程式的防護管理選項
21,759 21759 使用者評論
極好的!

AdGuard Windows 版:PC 廣告阻擋器

Windows 版 AdGuard 不只是廣告封鎖程式,它是集成所有讓您享受最佳網路體驗的主要功能的多用途工具。其可封鎖廣告和危險網站,加速網頁載入速度,並且保護兒童的線上安全。
透過下載該程式,您接受授權協定的條款
Microsoft Store
透過下載該程式,您接受授權協定的條款
AdGuard for Windows 8.0 版本,14 天的試用期
AdGuard Mac 版主畫面
AdGuard Mac 版的隱身模式介面
21,759 21759 使用者評論
極好的!

AdGuard Mac 版:全系統廣告攔截器

Mac 版 AdGuard 是一款獨一無二的專為 MacOS 設計的廣告封鎖程式。除了保護使用者免受瀏覽器和應用程式裡惱人廣告的侵擾外,應用程式還能保護使用者免受追蹤、網路釣魚和詐騙。
透過下載該程式,您接受授權協定的條款
閱讀更多
AdGuard for Mac 2.19 版本,14 天的試用期
AdGuard Android 版主畫面
AdGuard Android 版的追蹤保護畫面
AdGuard Android 版的應用程式管理畫面,顯示裝置上已安裝應用程式的防護管理選項
AdGuard Android 版的統計畫面,顯示已封鎖的廣告與追蹤器資料。
AdGuard Android 版隱私瀏覽器主畫面
下載 AdGuard Android 版的 QR 碼
21,759 21759 使用者評論
極好的!

Android 版 AdGuard —廣告封鎖器

在所有瀏覽器、遊戲及其他應用中封鎖廣告和追蹤器。保護個人隱私,並讓您控制應用如何使用網路。通過 APK 安裝。
透過下載該程式,您接受授權協定的條款
閱讀更多
掃描下載
可以使用任何一款 QR 碼閱讀器
AdGuard for Android 4.14 版本,14 天的試用期
AdGuard iOS 版主畫面
AdGuard iOS 版的防護畫面,顯示防護功能與設定。
AdGuard iOS 版的統計畫面,顯示已封鎖的廣告與追蹤器資料。
下載 AdGuard iOS 版的 QR 碼
21,759 21759 使用者評論
極好的!

iOS 版 AdGuard —廣告封鎖器

適用於 iPhone 和 iPad 的最佳 iOS 廣告攔截器。AdGuard 可在 Safari 中消除各種廣告與追蹤器,並在 DNS 層級保護您在所有應用程式中的隱私。
透過下載該程式,您接受授權協定的條款
閱讀更多
掃描下載
可以使用任何一款 QR 碼閱讀器
AdGuard for iOS 版本 4.5
AdGuard 內容阻擋器主畫面
AdGuard 內容阻擋器的過濾器畫面
AdGuard 內容阻擋器的設定畫面
21,759 21759 使用者評論
極好的!

AdGuard 內容阻擋器

AdGuard 內容阻擋器可以全面阻止所有支援內容封鎖技術的行動瀏覽器中的廣告,目前包括 Samsung Internet 瀏覽器和 Yandex 瀏覽器。雖然其功能相比 Android 版 AdGuard 有所限制,但它完全免費、安裝簡單且封鎖高效。
透過下載該程式,您接受授權協定的條款
閱讀更多
AdGuard 內容阻擋器 版本 2.8
AdGuard 瀏覽器擴充功能的主畫面
AdGuard 瀏覽器擴充功能的追蹤防護畫面
21,759 21759 使用者評論
極好的!

AdGuard 瀏覽器擴充功能

AdGuard 是有效地封鎖於全部網頁上的所有類型廣告之最快的和最輕量的廣告封鎖擴充功能!為您使用的瀏覽器選擇 AdGuard,然後取得無廣告的、快速的和安全的瀏覽。
安裝
透過下載該程式,您接受授權協定的條款
安裝
透過下載該程式,您接受授權協定的條款
安裝
透過下載該程式,您接受授權協定的條款
安裝
透過下載該程式,您接受授權協定的條款
安裝
透過下載該程式,您接受授權協定的條款
閱讀更多
安裝
透過下載該程式,您接受授權協定的條款
閱讀更多
AdGuard 瀏覽器擴充功能 版本 5.5
AdGuard 助理主畫面
21,759 21759 使用者評論
極好的!

AdGuard 助理

AdGuard 桌面應用的配套瀏覽器擴充套件。支援封鎖網頁特定內容、將網站新增至允許清單,並直接從瀏覽器提交報告。
AdGuard 助理 版本 1.4
21,759 21759 使用者評論
極好的!

AdGuard Home

AdGuard Home 是一款以網路為基礎的解決方案,用於封鎖廣告和追蹤器。只需在您的路由器上安裝一次,即可涵蓋家庭網路上的所有裝置——無需另外安裝客戶端軟體。這對於經常威脅您隱私的各類物聯網裝置來說尤為重要。
AdGuard Home 版本 0.107
AdGuard Pro iOS 版主畫面
AdGuard Pro iOS 版的保護畫面,顯示保護功能與設定
AdGuard Pro iOS 版的統計畫面,顯示已封鎖的廣告和追蹤器資料
21,759 21759 使用者評論
極好的!

AdGuard Pro iOS 版

AdGuard Pro iOS 版預置全部進階廣告封鎖防護功能,提供與 AdGuard iOS 版付費版完全相同的工具集。其卓越之處在於:不僅能精準封鎖 Safari 瀏覽器內的廣告,更支援自訂的 DNS 設定以精細化防護策略。該產品具備跨瀏覽器與應用的全方位廣告封鎖能力,有效防護兒童遠離不良內容,並全面保障個人資料安全。
透過下載該程式,您接受授權協定的條款
閱讀更多
AdGuard Pro iOS 版 版本 4.5
AdGuard Mini Mac 版主畫面
AdGuard Mini Mac 版的 Safari 保護畫面
AdGuard Mini Mac 版的建立規則畫面
21,759 21759 使用者評論
極好的!

AdGuard Mini Mac 版:Safari 廣告封鎖程式

AdGuard Mini Mac 版是一款強大的 Safari 廣告攔截程式。這款輕量級應用不僅能移除廣告、封鎖追蹤器,還能顯著提升網頁載入速度。它讓您在 Safari 中專注瀏覽、免受干擾,同時確保個人資料安全私密。
安裝
透過下載該程式,您接受授權協定的條款
閱讀更多
AdGuard Mini Mac 版 版本 2.3
開啟防護狀態下的 AdGuard Android TV 版本主畫面
AdGuard Android TV 版本的廣告封鎖畫面,顯示其功能與設定
AdGuard Android TV 版本的設定畫面
AdGuard Android TV 版本的應用程式管理畫面,顯示已封鎖廣告與追蹤器的應用程式。
21,759 21759 使用者評論
極好的!

AdGuard Android TV 版

Android TV 版 AdGuard 是唯一一款能封鎖廣告、保護隱私並充當智慧電視防火墻的應用程式。取得網路威脅警告,使用安全 DNS,並受益於加密流量。有了安全性和零廣告的使用體驗,使用者就可以盡情享受最喜愛的節目了!
AdGuard Android TV 版 4.14 版本,14 天的試用期
AdGuard 吉祥物 Agnar 懷抱 Linux 的企鵝吉祥物
21,759 21759 使用者評論
極好的!

AdGuard Linux 版

AdGuard Linux 版是世界上第一個系統級廣告封鎖器。封鎖廣告和追蹤器,選擇預設過濾器或新增自己的過濾器。管理流程通過命令行介面實現。
AdGuard Linux 版 版本 1.4
21,759 21759 使用者評論
極好的!

AdGuard Temp Mail

免費的臨時電子郵件地址產生器,保持匿名性並保護個人隱私。您的主收件匣中沒有垃圾郵件!
21,759 21759 使用者評論
極好的!

AdGuard DNS

AdGuard DNS 是一種不需要安裝任何的應用程式而封鎖網際網路廣告之極簡單的方式。它易於使用,完全地免費,被輕易地於任何的裝置上設置,並向您提供封鎖廣告、計數器、惡意網站和成人內容之最少必要的功能。
21,759 21759 使用者評論
極好的!

AdGuard Mail

保護個人身份,避免垃圾郵件,並使用我們的別名和臨時電子郵件地址保護收件箱。享受我們的免費電子信箱轉發服務和適用於所有作業系統的應用程式使用體驗。
21,759 21759 使用者評論
極好的!

AdGuard Wallet

一個安全且私密的加密貨幣錢包,讓您完全掌控資產。管理多個錢包,探索上千種加密貨幣以儲存、傳送及兌換。
已開始下載 AdGuard 點擊箭頭所指示的檔案開始安裝 AdGuard。 選擇"開啟"並點擊"確定",然後等待該檔案被下載。在被打開的視窗中,拖曳 AdGuard 圖像到"應用程式"檔案夾中。感謝您選擇 AdGuard! 選擇"開啟"並點擊"確定",然後等待該檔案被下載。在被打開的視窗中,點擊"安裝"。感謝您選擇 AdGuard!
在行動裝置上安裝 AdGuard