尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

树莓派5+OMV7+Docker部署AdGuard Home:全屋DNS去广告实战

发布时间:2026/9/28 19:51:09

资讯中心
01
ARTICLE

树莓派5+OMV7+Docker部署AdGuard Home:全屋DNS去广告实战

树莓派5+OMV7+Docker部署AdGuard Home:全屋DNS去广告实战
1. 为什么我要折腾树莓派5加OMV7这套组合家里联网设备一多电视开机先看十几秒广告手机App里各种开屏推广连智能音箱都时不时推个会员提醒。最开始我在每台设备上装去广告插件电视端装不了手机端浏览器和App各管各的维护起来太碎。后来想着干脆从网络入口统一处理所有设备走同一个DNS谁也别想偷偷塞广告进来。选树莓派5是因为它性能够用、功耗低、常年开机不心疼电费。我实测过树莓派4跑AdGuard Home家里十几台设备同时在线查询量一上来偶尔会卡顿树莓派5的CPU和内存带宽提升明显处理DNS查询这种轻量但高频的任务更从容。OMV7OpenMediaVault 7是基于Debian 12的NAS系统自带Docker管理界面省得我手动敲一堆命令而且它本身就能管硬盘、做共享顺便把家里闲置的移动硬盘利用起来。AdGuard Home是我最终选定的去广告方案原因有三个第一它同时支持DNS层面的广告拦截和自定义过滤规则覆盖电视、手机、电脑全平台第二它有Web管理界面看查询日志、加白名单、调过滤规则都很直观第三它跑在Docker里升级和迁移都方便哪天树莓派坏了把配置目录拷到新机器上就能恢复。这套方案适合谁如果你家里有树莓派或者类似的小主机愿意花一个周末下午折腾一次之后全家设备都能受益那这篇内容就是写给你的。不需要你懂太多Linux但基本的SSH操作和Docker概念得有一点完全没有也没关系我会把每一步都拆开讲。注意AdGuard Home做的是DNS层拦截它能挡住大部分域名级别的广告请求但挡不住和内容同域名的广告比如某些视频网站把广告和正片放在同一个域名下。这是DNS拦截的天然边界心里要有预期。2. 硬件与系统准备树莓派5装OMV7的完整流程2.1 硬件清单与选型理由先列一下我实际用的东西你照着买或者用手头现有的替代都行。部件我的选择说明主板树莓派5 8GB4GB也够跑AdGuard Home但OMV7加Docker加其他服务8GB更从容存储三星EVO Plus 128GB microSD系统盘OMV7本身占不了多少空间电源官方27W USB-C电源树莓派5对供电要求比4代高别用旧手机的充电头凑合散热官方主动散热器常年开机被动散热压不住主动风扇噪音很小网线六类线走有线DNS服务对延迟敏感WiFi不稳数据盘闲置2.5寸移动硬盘用来存OMV的共享文件和系统盘分开树莓派5的供电是个坑。我一开始用某个65W氮化镓充电头标称支持PD但树莓派5开机就报低电压警告外接硬盘一插直接重启。后来换官方27W电源才稳定。如果你要用移动硬盘建议选带独立供电的硬盘盒或者用SSD加硬盘盒功耗更低。2.2 系统安装从烧录到首次启动树莓派5装OMV7我的做法是先装Raspberry Pi OS Lite 64位再用官方脚本转成OMV。为什么不直接刷OMV的镜像因为OMV官方对树莓派5的镜像支持还在完善中用Raspberry Pi OS做底再装OMV兼容性更稳遇到问题也容易搜到解决方案。具体步骤用Raspberry Pi Imager烧录Raspberry Pi OS Lite 64位到microSD卡。烧录前在Imager的高级设置里开启SSH、设置用户名密码、配置WiFi虽然最终走有线但首次启动用WiFi方便。插卡启动等两分钟用SSH连上去。第一次登录后先更新系统sudo apt update sudo apt full-upgrade -y改主机名方便后面在路由器里识别sudo raspi-config在System Options里改Hostname我改成omv-nas。同时把时区改成Asia/Shanghai。 4. 安装OMV7。官方提供了一键脚本wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash这个脚本会跑十几分钟中途会问你几次确认一路回车就行。跑完后重启用浏览器访问http://树莓派IP默认账号admin密码openmediavault。注意OMV7默认会占用80端口如果你后面想用80端口跑别的服务记得先在OMV的Web管理里改端口。我改成8080避免和AdGuard Home的Web界面冲突。2.3 OMV7初始化设置首次登录OMV系统会提示你改密码顺手改掉。然后做几件事在“存储器”里挂载数据盘。如果硬盘之前有数据OMV会提示你挂载而不是格式化选挂载就行。在“共享文件夹”里建一个目录比如media后面Docker的配置目录可以放这里。在“用户”里确认你的SSH用户有权限访问共享文件夹。OMV7的Docker管理需要装openmediavault-compose插件。在“系统”-“插件”里搜索compose安装它。装完后左侧菜单会多出“服务”-“Compose”这就是我们后面部署AdGuard Home的地方。3. Docker部署AdGuard Home配置与参数详解3.1 为什么用Docker而不是直接装AdGuard Home官方提供二进制安装和Docker镜像两种方式。我选Docker的理由很实际OMV7本身就在用Docker跑一些服务统一管理方便升级AdGuard Home时直接拉新镜像重启容器就行不用管依赖配置和数据都在挂载目录里迁移时拷贝目录即可。Docker Compose方式比docker run更适合我因为配置写在YAML文件里改端口、改挂载路径一目了然重装时直接复用文件。3.2 Compose文件编写与参数计算在OMV的Compose界面新建一个文件或者SSH到树莓派上手动创建。我习惯在/srv/mergerfs/.../docker/adguardhome这样的路径下放配置你根据自己硬盘挂载点调整。version: 3 services: adguardhome: image: adguard/adguardhome:latest container_name: adguardhome restart: unless-stopped ports: - 53:53/tcp - 53:53/udp - 3000:3000/tcp - 8081:80/tcp volumes: - /srv/dev-disk-by-uuid-xxxx/docker/adguardhome/work:/opt/adguardhome/work - /srv/dev-disk-by-uuid-xxxx/docker/adguardhome/conf:/opt/adguardhome/conf environment: - TZAsia/Shanghai几个关键点解释一下53端口DNS服务端口TCP和UDP都要映射。UDP用于常规查询TCP用于大响应和区域传送。两个都开别只开UDP。3000端口AdGuard Home首次安装时的初始化Web端口。装完后管理界面默认走80但80可能被OMV占用所以我映射到8081。挂载目录work存查询日志和统计conf存配置和过滤规则。这两个目录必须持久化否则容器重启后配置全丢。TZ环境变量设置时区否则日志时间对不上排查问题时很麻烦。提示如果你的树莓派上已经有服务占用了53端口比如systemd-resolved需要先停掉它。执行sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved然后编辑/etc/resolv.conf把nameserver改成127.0.0.1。这一步不做AdGuard Home起不来。3.3 首次启动与初始化向导Compose文件保存后在OMV的Compose界面点“启动”或者SSH执行docker compose up -d。等十几秒浏览器访问http://树莓派IP:3000进入AdGuard Home初始化向导。向导会问你三件事管理界面端口默认80我改成8081因为80被OMV占了。DNS服务端口保持53。用户名密码设置一个强密码别用默认的。设置完成后用http://树莓派IP:8081登录管理界面。这时候AdGuard Home已经在监听53端口了但还没有设备用它。4. 让全家设备走AdGuard Home路由器与终端配置4.1 路由器DHCP下发DNS最省事的做法是在路由器里把DHCP下发的DNS服务器改成树莓派的IP。这样家里所有设备自动获取到的DNS就是AdGuard Home不用一台台改。不同路由器界面不一样但逻辑相同找到DHCP设置把“主DNS”填树莓派IP“备用DNS”留空或者填一个公共DNS比如223.5.5.5。为什么备用DNS要留空因为如果填了公共DNS设备在AdGuard Home响应慢时会直接走备用DNS广告就漏过去了。留空的话设备只能走AdGuard Home拦截率最高。我用的路由器支持自定义DHCP选项直接把DNS指向树莓派。改完后家里设备重新连WiFi或者重启网络就会用新的DNS。4.2 电视和手机的特殊处理电视比较麻烦。有些电视系统会强制使用内置DNS不理会路由器下发的设置。我遇到的情况是电视连上WiFi后DNS还是运营商的。解决办法有两个在电视的网络设置里手动指定静态IP和DNSDNS填树莓派IP。如果电视不允许改DNS就在路由器里做端口转发把电视的53端口请求强制转发到树莓派。这个操作因路由器而异我的路由器支持“DNS重定向”功能开启后所有53端口请求都走树莓派。手机端相对简单。iOS和Android在WiFi设置里都能手动改DNS。但更彻底的做法是如果家里有旁路由或者支持DNS重定向的路由器直接全局劫持53端口手机连上WiFi就自动生效不用每台设备改。注意AdGuard Home的查询日志会记录每台设备的请求。如果你在意隐私可以在设置里关闭日志记录或者只保留统计不保留详细记录。我一般保留7天日志方便排查哪个设备在疯狂请求广告域名。4.3 验证是否生效配置完后用手机连WiFi打开浏览器访问http://树莓派IP:8081看“查询日志”里有没有这台手机的请求。如果有说明DNS已经走AdGuard Home了。然后打开一个之前有广告的App看广告是否消失。我实测下来大部分App的开屏广告和横幅广告都能去掉视频前贴片广告去不掉因为那是同域名内容。另一个验证方法是命令行查询nslookup doubleclick.net 树莓派IP如果返回0.0.0.0或者NXDOMAIN说明拦截生效。5. 过滤规则与性能调优让拦截更精准5.1 过滤规则的选择与组合AdGuard Home自带一个“过滤器”菜单里面可以添加各种规则列表。我常用的组合规则列表用途特点AdGuard DNS filter基础广告拦截官方维护误杀少AdAway移动端广告对App内广告覆盖好EasyList China中文广告针对国内网站优化1Hosts (Lite)综合拦截体积小性能好Anti-AD国内广告更新频繁覆盖广规则不是越多越好。我一开始加了十几条规则结果有些正常网站被误杀比如某些CDN域名被拦了导致图片加载不出来。后来精简到5条日常使用基本没遇到误杀。如果你发现某个网站打不开先去“查询日志”里看是不是被规则拦了然后加白名单。5.2 性能调优与缓存设置树莓派5跑AdGuard Home默认配置下CPU占用很低但查询量大时比如家里有人刷短视频可以调几个参数缓存大小在“DNS设置”里把缓存大小调到41943044MB能缓存更多查询结果减少上游查询。上游DNS我用223.5.5.5和119.29.29.29国内解析快。如果你有特殊需求可以加tls://dns.pub这样的加密DNS但会增加一点延迟。并发查询开启“并行查询”让AdGuard Home同时问多个上游取最快响应。实测能降低平均延迟。提示不要开启“DNSSEC”除非你确定所有上游都支持。我开过一次结果部分网站解析失败排查了半天才发现是DNSSEC验证不通过。家用环境DNSSEC带来的收益有限稳定性更重要。5.3 客户端分组与差异化规则AdGuard Home支持按客户端设置不同规则。比如我给孩子用的平板额外加了一条“安全搜索”规则强制开启搜索引擎的安全模式。给电视单独设一组只拦广告不拦其他。这个功能在“客户端设置”里配置先给设备命名然后绑定IP再指定规则。6. 常见问题与排查技巧实录6.1 设备无法上网或解析失败这是最常见的问题。排查顺序确认树莓派本身能上网ping 223.5.5.5。确认AdGuard Home在运行docker ps看容器状态。确认53端口没被占用sudo netstat -tulpn | grep 53。确认路由器DHCP下发的DNS是树莓派IP。如果只有部分设备不行检查那台设备的DNS设置是不是被手动改过。我遇到过一次手机能上网但电视不行。后来发现电视的WiFi设置里DNS是手动指定的运营商DNS改成自动获取就好了。6.2 广告拦截不生效先看查询日志里有没有广告域名的请求。如果没有说明DNS没走AdGuard Home。如果有请求但没被拦检查规则是否启用、规则列表是否更新。AdGuard Home的规则需要手动点“更新”才会拉取最新版本我设了每天自动更新。还有一种情况某些App用IP直连或者DoHDNS over HTTPS绕过DNS拦截。DoH在App内部加密发送DNS查询AdGuard Home看不到。这种情况只能靠App自身的去广告版本或者用更上层的拦截方案。6.3 树莓派5温度与稳定性树莓派5跑OMV7加Docker待机温度大概45度负载高时到60度。官方主动散热器能把温度压在70度以下没问题。如果你用被动散热夏天可能会降频。建议在OMV里装个温度监控或者定期vcgencmd measure_temp看一下。电源稳定性前面提过再强调一次别用杂牌充电头。我因为电源问题排查了一整个晚上最后换官方电源解决。6.4 常见问题速查表现象可能原因解决方法容器起不来53端口被占停掉systemd-resolved设备无法上网DNS没指向树莓派检查DHCP设置广告漏拦备用DNS没留空路由器里清空备用DNS部分网站打不开规则误杀查询日志加白名单查询延迟高上游DNS慢换国内DNS开并行查询配置丢失目录没挂载检查Compose挂载路径7. 日常维护与扩展玩法7.1 自动更新与备份AdGuard Home的规则列表可以设自动更新在“过滤器”-“自动更新”里开启间隔设24小时。容器镜像的更新我用OMV的Compose界面手动拉取因为自动更新偶尔会拉到不兼容的版本。更新前先备份conf目录出问题能回滚。备份很简单把/srv/.../adguardhome/conf整个目录打包存到数据盘或者另一台机器上。恢复时解压回去重启容器就行。7.2 扩展加个本地DNS记录AdGuard Home支持自定义DNS记录。我在“DNS设置”-“DNS重写”里加了几条把家里NAS的域名指向内网IP这样在内网访问NAS不用记IP。比如nas.home指向192.168.1.100手机和电脑都能直接用域名访问。7.3 扩展配合OMV做文件共享OMV本身能做SMB共享我把数据盘挂载后建了共享文件夹电视和手机都能访问。这样树莓派5既是DNS服务器又是轻量NAS一机两用。功耗实测待机5W左右满载10W一年电费可以忽略。我在实际使用中发现这套方案最大的价值不是省了多少钱而是把全家网络入口统一管起来了。以前每台设备各自为战现在改一条规则所有设备生效。孩子平板上突然冒出来的广告我在AdGuard Home里看一眼日志就能定位是哪个App在请求然后加规则拦掉。这种掌控感是装单个去广告插件给不了的。最后分享一个小技巧如果你不确定某条规则会不会误杀先在“查询日志”里找到那个域名点“加入白名单”测试一天确认没问题再决定是否保留规则。别一上来就加一堆规则稳定比激进重要。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。