飞牛NAS Docker部署AdGuard Home:搭建全屋广告拦截DNS
前言
你是否厌倦了网页上无处不在的横幅广告?是否烦恼手机App开屏广告、视频播放前的贴片广告、甚至智能电视上的弹窗推广?今天给大家介绍一款开源神器——AdGuard Home,它可以作为家庭DNS服务器,在网络层面拦截广告、跟踪器和恶意域名,让你全屋设备都能享受无广告的清爽体验。
本文将从零开始,手把手教你在飞牛NAS上用Docker部署AdGuard Home。
什么是 AdGuard Home?
AdGuard Home 是一个网络级广告拦截和隐私保护工具,工作原理类似 Pi-hole。它作为你家庭网络的DNS服务器运行,所有联网设备的DNS查询都会经过AdGuard Home的过滤引擎,匹配到广告域名时直接返回空响应,从而实现全屋广告拦截。
相比浏览器插件,AdGuard Home的核心优势在于:
- 全局拦截:手机、平板、电视、IoT设备,只要是连上家里WiFi的设备都能受益
- 无需客户端:不需要在每个设备上安装任何软件
- 性能优越:DNS缓存加速查询,反而可能提升上网速度
- 隐私保护:阻止跟踪器和遥测数据的上传
准备工作
在开始之前,请确保:
- 飞牛NAS已开启SSH(通过飞牛OS管理后台 → 系统设置 → SSH开启)
- Docker已安装(飞牛NAS应用中心可直接安装Docker)
- 你的路由器支持修改DNS设置(绝大多数路由器都支持)
第一步:创建持久化目录
通过SSH登录飞牛NAS,创建AdGuard Home的数据目录:
ssh your-user@your-nas-ip
# 创建数据和工作目录
mkdir -p /vol3/docker/adguardhome/work
mkdir -p /vol3/docker/adguardhome/conf
提示:建议将数据目录放在你的存储卷上(如
/vol3、/vol2等),避免占用系统盘空间。
第二步:编写 Docker Compose 文件
在 /vol3/docker/adguardhome/ 目录下创建 docker-compose.yml:
cd /vol3/docker/adguardhome
nano docker-compose.yml
写入以下内容:
version: '3.8'
services:
adguardhome:
image: adguard/adguardhome:latest
container_name: adguardhome
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp" # Web管理界面,可改为其他端口如 3000
- "3000:3000/tcp" # 初始设置端口
- "853:853/tcp" # DNS-over-TLS
volumes:
- ./work:/opt/adguardhome/work
- ./conf:/opt/adguardhome/conf
environment:
- TZ=Asia/Shanghai
cap_add:
- NET_ADMIN
- NET_RAW
networks:
- adguard_net
networks:
adguard_net:
driver: bridge
端口说明: -
53(TCP/UDP):DNS服务端口,必须保留 -80:Web后台端口,如果NAS的80端口已被占用,改为其他端口(如8080:80) -3000:首次初始化引导端口 -853:DNS-over-TLS(DoT)加密DNS端口
第三步:启动容器
docker compose up -d
检查容器运行状态:
docker ps | grep adguardhome
看到 Up 状态即表示启动成功。
第四步:初始化配置
-
浏览器访问:
http://你的NAS-IP:3000,进入初始化向导 -
设置Web管理端口:
- 管理界面监听端口建议保持默认
80(如果你在compose中改了映射,填实际容器端口80即可) -
DNS服务器端口保持
53 -
设置管理员账号:输入用户名和密码(请务必记住)
-
完成设置后,使用
http://你的NAS-IP:80(或你映射的外部端口)访问后台管理
第五步:配置路由器DNS
这是最关键的一步——将家庭路由器的DNS指向AdGuard Home:
- 登录你的路由器管理后台(通常为
192.168.1.1或192.168.0.1) - 找到 DHCP服务器 或 LAN设置 → DNS服务器
- 将主DNS服务器填写为飞牛NAS的IP地址(如
192.168.1.100) - 备用DNS可以填公共DNS(如
223.5.5.5阿里DNS),防止NAS关机后断网 - 保存设置,所有设备重新连接WiFi即可生效
如果路由器不支持自定义DNS,可以手动在每个设备的WiFi设置中将DNS设为NAS的IP。
第六步:效果验证与优化
进入AdGuard Home管理后台(http://NAS-IP:80),你可以在仪表盘看到实时拦截统计。
推荐操作:
- 添加拦截列表:进入「过滤器」→「DNS黑名单」,点击「添加黑名单」,推荐以下规则:
AdGuard DNS filter(内置)EasyList China(中文网站专用)CJX's Annoyance List(反烦人元素)-
Anti-AD(中文广告过滤) -
启用DNS-over-TLS:进入「设置」→「加密设置」,启用DoT增加隐私性
-
设置日志保留:在「设置」→「查询日志」中配置日志保留天数
-
客户端识别:开启后可以在统计中区分每台设备的拦截情况
常见问题
Q:部署后无法上网?
A:检查防火墙是否放行53端口,确认容器正常运行,可先用 nslookup baidu.com NAS-IP 测试DNS是否响应。
Q:某些App仍显示广告?
A:部分App使用IP直连或HTTPS加密广告,可在过滤器中追加规则,或定期更新拦截列表。
Q:能否与飞牛NAS其他服务共用80端口?
A:在docker-compose中将 80:80 改为 8080:80 或其他空闲端口即可。
总结
通过Docker在飞牛NAS上部署AdGuard Home,你获得了一个强大的家庭网络盾牌。一次部署,全屋受益——从此告别烦人的弹窗广告,同时提升网络隐私安全。整套部署流程不超过10分钟,性价比极高。
如果你在部署过程中遇到问题,欢迎在评论区留言交流!
扩展阅读:后续可以配合Nginx Proxy Manager实现HTTPS访问AdGuard Home后台,或者将AdGuard Home作为上游DNS配合SmartDNS实现国内外分流,敬请期待后续教程。