使用Docker安装配置AdGuard Home

AdguardTeam/AdGuardHome: Network-wide ads & trackers blocking DNS server

AdGuard Home 是一款免费开源的用于拦截广告和跟踪的DNS服务器,是 AdGuard DNS 的开源版本。

服务器部署的话,需要公网IP、域名

一、docker部署

version: '3.1' 
services:
    adguardhome:
        image: adguard/adguardhome
        container_name: adguardhome
        restart: unless-stopped
        ports:
            - '53:53/tcp'  #电脑直接使用的ipv4普通 DNS
            - '53:53/udp'  #电脑直接使用的ipv4普通 DNS
            - '13080:80/tcp'  # AdGuard Home 的管理面板
            - '13000:3000/tcp' # AdGuard Home 的初始化配置面板
            - '853:853/tcp'  #DoT DNS over TLS DNS
            - '853:853/udp'  #DoT DNS over TLS DNS
            - '13443:443/tcp'  #DoH DNS over HTTPS DNS
            - '13443:443/udp'  #DoH DNS over HTTPS DNS
        volumes:
            - '/root/www/adguardhome/work:/opt/adguardhome/work'
            - '/root/www/adguardhome/conf/:/opt/adguardhome/conf'

二、53端口占用解决方法

systemctl stop systemd-resolved
systemctl disable systemd-resolved

vi /etc/systemd/resolved.conf
[Resolve]
DNS=114.114.114.114 8.8.8.8  #取消注释,增加dns
DNSStubListener=no  #取消注释,把yes改为no

ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

之后,再重新启动docker容器。

三、安装配置

启动后打开IP:13000​进行配置,网页管理监听端口填80,下面的DNS填53,默认即可。

因为是容器部署,这里填的是容器内部端口,填外部端口反而会访问不到。

之后无脑下一步,最后访问IP:13080​即可访问管理页面。

四、管理页面配置

1、设置-DNS设置

上游 DNS

很大程度上决定了你的查询速度,不建议使用纯数字的 DNS,用加密的,不然 DNS 依旧会被污染和劫持.

tls://dns.pub
https://dns.pub/dns-query
tls://dns.alidns.com
https://dns.alidns.com/dns-query

选择并行请求。

后备 DNS

114.114.114.114
119.29.29.29
223.5.5.5

Bootstrap DNS 服务器

选最快的,用于解析上面的 DoT/DoH。最好选服务器当地所在地最快的本地运营商DNS。推荐:

9.9.9.10
149.112.112.10
2620:fe::10
2620:fe::fe:10

点击下方的"测试上游DNS"按钮,页面右下角提示"指定的 DNS 服务器现已正常运行",表示配置正确,报错就进行删除或修改。没有问题就点击应用。

DNS 缓存配置

「缓存大小」:104857600(100MB,大概能缓存 100w 条)。根据你需要设置,一般来越稍微大点好,第一次通过上游 dns 查询后,后面可以通过缓存来返回数据,会更快点。

「覆盖最小 TTL 值」:600 (Time To Live​ ttl 为 0 时,表示每次都是通过上游 dns 解析,就比较慢,设置时间后,在该 TTL 时间内,则是通过缓存直接返回解析结果,会更快。)

「覆盖最大 TTL 值」:3600

将下面的“乐观缓存”勾选。保存。

其余设置项全部默认即可。

2、域名解析及反向代理

将域名如cert.domain.com解析到服务器IP,再将服务器防火墙的853、53以及映射443的端口放通。

再将证书的.cert和私钥.key复制备用

反向代理示例:

# AdguardHome反向代理
server {
    listen 80;
    server_name cert.domain.com;
}

server {
    listen 443 ssl;
    server_name cert.domain.com;

    ssl_certificate /root/cert/cert.crt;
    ssl_certificate_key /root/cert/cert.key;

    location / {
        proxy_pass http://localhost:13443;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

反代之后,可通过https://IP:端口​访问控制后台,域名cert.domain.com就是DOH的解析域名。

3、dot、doh 加密设置

菜单栏打开「设置」→「加密设置」。

「启用加密(HTTPS、DNS-over-HTTPS、DNS-over-TLS)」,「服务器域名称」输入域名;「HTTPS 端口」填容器内部的,即443;「DNS-over-TLS 端口」和「DNS-over-QUIC 端口」都填853。

下面证书把前面复制的.cert和.cert和私钥.key复制备用。

4、过滤器-DNS黑名单

这个设置就是拦截广告的重头设置了。点击“添加黑名单 - 添加一个自定义列表”,输入订阅名称和地址即可。

# 秋风广告规则
## github
https://github.com/TG-Twilight/AWAvenue-Ads-Rule
## 规则
https://github.boki.moe/https://raw.githubusercontent.com/TG-Twilight/AWAvenue-Ads-Rule/main/AWAvenue-Ads-Rule.txt

# Easylist China
https://easylist-downloads.adblockplus.org/easylistchina.txt

# anti-ad
https://anti-ad.net/easylist.txt
# anti-ad补充
https://fastly.jsdelivr.net/gh/mphin/adguardhome_rules@main/Blacklist.txt

5、过滤器-自定义过滤规则

可以添加域名,对其放行。

或者增加规则里面没有自己发现的漏网之鱼。

# 阻止 example.org 域名及其所有子域名
||example.org^

# 解除对 example.org 及其所有子域名的拦截
@@||example.org^

# 对 example.org(不包括它的子域名)以 127.0.0.1 作为响应
127.0.0.1 example.org

五、客户端使用配置

非加密的DNS:直接用IP地址
DNS-over-TLS: 使用 tls://dns.domain.com 字符串。
DNS-over-HTTPS: 使用 https://dns.domain.com/dns-query 字符串。

Windows

直接用非加密的DNS

Android

iOS

最后修改:2025 年 05 月 14 日
如果觉得我的文章对你有用,请随意赞赏