Docker 玩法

飞牛NAS Docker部署AdGuard Home:搭建全屋广告拦截DNS

2026-07-30 4 admin

前言

你是否厌倦了网页上无处不在的横幅广告?是否烦恼手机App开屏广告、视频播放前的贴片广告、甚至智能电视上的弹窗推广?今天给大家介绍一款开源神器——AdGuard Home,它可以作为家庭DNS服务器,在网络层面拦截广告、跟踪器和恶意域名,让你全屋设备都能享受无广告的清爽体验。

本文将从零开始,手把手教你在飞牛NAS上用Docker部署AdGuard Home。


什么是 AdGuard Home?

AdGuard Home 是一个网络级广告拦截和隐私保护工具,工作原理类似 Pi-hole。它作为你家庭网络的DNS服务器运行,所有联网设备的DNS查询都会经过AdGuard Home的过滤引擎,匹配到广告域名时直接返回空响应,从而实现全屋广告拦截。

相比浏览器插件,AdGuard Home的核心优势在于:

  • 全局拦截:手机、平板、电视、IoT设备,只要是连上家里WiFi的设备都能受益
  • 无需客户端:不需要在每个设备上安装任何软件
  • 性能优越:DNS缓存加速查询,反而可能提升上网速度
  • 隐私保护:阻止跟踪器和遥测数据的上传

准备工作

在开始之前,请确保:

  1. 飞牛NAS已开启SSH(通过飞牛OS管理后台 → 系统设置 → SSH开启)
  2. Docker已安装(飞牛NAS应用中心可直接安装Docker)
  3. 你的路由器支持修改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 状态即表示启动成功。


第四步:初始化配置

  1. 浏览器访问http://你的NAS-IP:3000,进入初始化向导

  2. 设置Web管理端口

  3. 管理界面监听端口建议保持默认 80(如果你在compose中改了映射,填实际容器端口80即可)
  4. DNS服务器端口保持 53

  5. 设置管理员账号:输入用户名和密码(请务必记住

  6. 完成设置后,使用 http://你的NAS-IP:80(或你映射的外部端口)访问后台管理


第五步:配置路由器DNS

这是最关键的一步——将家庭路由器的DNS指向AdGuard Home:

  1. 登录你的路由器管理后台(通常为 192.168.1.1192.168.0.1
  2. 找到 DHCP服务器LAN设置DNS服务器
  3. 将主DNS服务器填写为飞牛NAS的IP地址(如 192.168.1.100
  4. 备用DNS可以填公共DNS(如 223.5.5.5 阿里DNS),防止NAS关机后断网
  5. 保存设置,所有设备重新连接WiFi即可生效

如果路由器不支持自定义DNS,可以手动在每个设备的WiFi设置中将DNS设为NAS的IP。


第六步:效果验证与优化

进入AdGuard Home管理后台(http://NAS-IP:80),你可以在仪表盘看到实时拦截统计。

推荐操作

  1. 添加拦截列表:进入「过滤器」→「DNS黑名单」,点击「添加黑名单」,推荐以下规则:
  2. AdGuard DNS filter(内置)
  3. EasyList China(中文网站专用)
  4. CJX's Annoyance List(反烦人元素)
  5. Anti-AD(中文广告过滤)

  6. 启用DNS-over-TLS:进入「设置」→「加密设置」,启用DoT增加隐私性

  7. 设置日志保留:在「设置」→「查询日志」中配置日志保留天数

  8. 客户端识别:开启后可以在统计中区分每台设备的拦截情况


常见问题

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实现国内外分流,敬请期待后续教程。