写这篇的起因挺巧:跟 BUG 和 AI 斗智斗勇时,我突然发现绿联 UGOS PRO 不再占用 53 端口了,激动坏了。再加上家里老人的手机老被广告和自动跳转骚扰,索性把尘封已久的“国民神器”AdGuard Home 部署上了。
一、项目介绍
AdGuard Home 是一种基于网络的广告和跟踪器拦截解决方案。只需在您的路由器上安装一次,即可覆盖您家庭网络中的所有设备——无需额外的客户端软件。这对于各种经常威胁您隐私的物联网设备尤其重要。


二、搭建教程
1、打开文件管理器,在docker文件夹创建adguard文件夹;


2、打开docker,选择项目-创建-填写项目名称adguard,然后会自动带出路径(我已经创建过了所以提示同名);


3、粘贴compose,然后点击立即部署,等待跑码;
# ============================================================
# AdGuard Home - Docker Compose 配置
# ------------------------------------------------------------
# 用途:DNS 服务器 / 广告拦截 / 家长控制 / DNS-over-HTTPS
# 部署建议目录:
# /volume1/docker/adguardhome/docker-compose.yml (绿联/群晖均可)
# 启动:在该目录执行 docker compose up -d
# ============================================================
services:
# -------- 服务名(仅内部标识,可随意改名)--------
adguardhome:
# 镜像:官方 AdGuard Home,latest 为最新稳定版
# 如需固定版本可用 adguard/adguardhome:v0.107.x(避免自动升级出问题)
image: adguard/adguardhome:latest
# 重启策略:always = 无论异常退出还是宿主机重启都会自动拉起
# 其他可选:no / on-failure[:次数] / unless-stopped
restart: always
# ------------------------------------------------------------
# 容器名
# ------------------------------------------------------------
# 注意:Docker 容器名不允许出现空格!
# 合法字符只有 [a-zA-Z0-9][a-zA-Z0-9_.-],
# 所以 "adguard home" 会报错:
# invalid container name: "adguard home"
# 这里用 adguardhome(若想更易读可用 adguard-home)
container_name: adguardhome
# ------------------------------------------------------------
# 网络模式:host(关键配置)
# ------------------------------------------------------------
# 好处:AdGuard 能拿到真实客户端 IP(否则日志里全是 172.x.x.x 网关 IP)
# 好处:直接占用宿主机 53/80/443/3000 等端口,无需端口映射
# 注意:network_mode 与 networks 不能同时使用(会报错)
# "network_mode and networks cannot be used together"
# 副作用:容器与宿主机共享网络栈,端口冲突时容器起不来
# 例如宿主机已跑 dnsmasq/systemd-resolved 占用 53,需先停用
network_mode: host
# ------------------------------------------------------------
# 数据卷:持久化配置与数据
# ------------------------------------------------------------
# 相对路径 = compose 文件所在目录下的 work/ 和 conf/
# 建议把 compose 放在 /volume1/docker/adguardhome/ 再启动
# 若用绿联 Docker 界面建项目报路径错误,改绝对路径:
# - /volume1/docker/adguardhome/work:/opt/adguardhome/work
# - /volume1/docker/adguardhome/conf:/opt/adguardhome/conf
#
# ./work → 容器内 /opt/adguardhome/work(运行时数据/日志/统计)
# ./conf → 容器内 /opt/adguardhome/conf(AdGuardHome.yaml 主配置)
# 建议首次部署后备份 conf/AdGuardHome.yaml,迁移时最省事
volumes:
- ./work:/opt/adguardhome/work
- ./conf:/opt/adguardhome/conf
# ------------------------------------------------------------
# 环境变量
# ------------------------------------------------------------
# TZ:固定时区为东八区,保证日志时间、统计图按北京时间显示
# (不设时容器默认 UTC,日志会差 8 小时)
# 可用以下命令验证容器内时间:
# docker exec adguardhome date
environment:
- TZ=Asia/Shanghai
# ------------------------------------------------------------
# 内核能力:DNS 相关系统调用权限
# ------------------------------------------------------------
# 开启 NET_ADMIN 后,容器内可执行改网络参数、绑定特权端口等操作,
# 是启用 DNS-over-TLS / DNS-over-QUIC(853 / 784 端口)、
# 以及部分系统上正常监听 53 端口所必需的。
# host 模式下依然可以叠加 cap_add,不冲突。
cap_add:
- NET_ADMIN
# ------------------------------------------------------------
# 资源限制:内存上限 1G
# ------------------------------------------------------------
# mem_limit 是非 swarm 模式(docker compose up)下的内存硬上限,
# 超过会被 OOM Killer 杀掉并按 restart: always 自动重启。
# 日常使用 AdGuard 一般 100~200M 足够,1G 是较宽裕的上限,
# 适合过滤规则多、查询量大、启用统计/查询日志的场景。
# 若宿主是较新的 Docker(Compose V2),也可换用等价的:
# deploy:
# resources:
# limits:
# memory: 1G
mem_limit: 1g
# (可选)如需限制 CPU 核心数,可解除下面注释
# cpus: 2.0
4、等待启动后,直接在浏览器访问http://NAS_IP:3000 ;比如我的是http://192.168.1.200:3000;进入引导配置,具体可参考教程;
https://club.ugnas.com/forum.php?mod=viewthread&tid=2565&highlight=adguard
三、使用注意事项
1、绿联最新的版本经测试不在占用53端口,可以不用 macvlan直接host部署了;
2、进入引导配置的时候端口不要使用80端口,比如我是用的11255端口,尽量使用1万以后的端口;
3、国内推荐上游服务器(不要使用DOT地址,会有大量报错,国内对853有封堵):
https://dns.alidns.com/dns-query
https://doh.pub/dns-query
https://doh.onedns.net/dns-query
https://doh-home.onedns.net/dns-query
注:避免使用国外的上有服务器,上网很慢影响体验,经测我这使用的阿里的最快,可以自行测试下。
4、国内推荐Bootstrap DNS服务器:
223.5.5.5
119.29.29.29
114.114.114.114
52.80.66.66
117.50.60.30
注:避免使用国外的Bootstrap DNS服务器,上网很慢影响体验,经测我这使用的阿里的最快,可以自行测试下。




注:填写完后一定点击测试上游,有报错的话记得把报错的DOH地址删除再测试都没问题后再点击应用。
5、adguard配置好后,一定一定注意把路由的LAN侧的DNS地址填写NAS的IP,我以我的H3C为例;


注:此时需要注意一下,你的NAS的IP地址一定是在路由器做过IP和MAC静态绑定的,不然NAS的IP会变,影响解析,并且DNS2一定是一个公共DNS的地址,避免adguard出现问题网络中断。
6、拦截规则黑名单添加;


实测可用规则地址:
https://ghfast.top/https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-easylist.txt
https://ghfast.top/https://github.com/217heidai/adblockfilters/releases/download/rule/adblockdns.txt
https://raw.githubusercontent.com/TG-Twilight/AWAvenue-Ads-Rule/main/AWAvenue-Ads-Rule.txt
7、常规设置(过滤器建议3天,日志建议不超过7天);


8、其他保持默认即可;拦截情况展示;

四、参考文档
1、绿联论坛大佬文章:https://club.ugnas.com/forum.php?mod=viewthread&tid=2565&highlight=adguard
2、adguard home官网:https://adguard.com/zh_cn/adguard-home/overview.html
3、官方文档:https://adguard-dns.io/kb/zh-CN/adguard-home/getting-started








