树莓派Docker部署AdGuard Home

树莓派Docker部署AdGuard Home
Carkree本文更新于2025年12月2日,改为Docker方法安装
设备:树莓派4B
系统:Ubuntu Server 24.03LTS
效果
部署过程
一、Docker部署
首先你需要创建两个文件夹用于存储adguard home的数据,任意位置均可。
接着直接执行命令创建容器:(把文件夹名字改了)
1 | sudo docker run --name adguardhome \ |
在上面的命令中,我使用的是host模式,host模式即直接使用宿主机的网络命名空间,而不创建虚拟网桥。使用host模式的好处是可以区分本地请求的客户端来源,如果不使用host模式,IP都会显示为Docker子网的网关IP,例如172.17.0.1
如果你本地不想走adguard home就随便,毕竟ubuntu server上也没什么广告对吧,解析速度也没什么追求对吧,那就用官方Docker Hub中提供的命令,即:
1 | docker run --name adguardhome\ |
创建好容器后,管理面板的默认端口是3000。记得在防火墙中打开3000端口。
如果创建失败,报错可能提示端口53占用。大部分资料都提到了要关闭systemd-resolved这个服务,但实际上systemd-resolved 监听的是 127.0.0.53:53,不是监听的 127.0.0.1。之所以冲突是因为adguard home配置文件默认写的监听0.0.0.0,即本机的所有网络接口,则必然包含了127.0.0.53:53。
所以我们只需在 conf/AdGuardHome.yaml 配置文件的 bind_hosts 那里修改为不要监听 0.0.0.0,而是监听 127.0.0.1 和本地局域网 ip,这样完全不用停用 systemd-resolved 服务。
systemd-resolved 是一个系统服务,负责管理系统的 DNS 解析。
直接修改conf/AdGuardHome.yaml的bind_hosts部分为下面的内容:
1 | bind_hosts: |
其中,192.168.3.40是我树莓派的本地IP。如果需要ipv6就在下面加上::1和相应的ipv6的IP地址。
如果不希望树莓派本地的请求也走adguard home,就把127.0.0.1删掉,这样本地请求就走由systemd-resolved选定的服务器了。
上文部分内容引用了: https://blog.ehnap.com/posts/IT-Talks/servergeek-adguard-home.html
关于重启docker容器之类的命令就不在这写了。
执行命令查看一下53端口的使用情况:
1 | $ sudo netstat -antp | grep '53' |
现在,实现了adguard home和system-resolve互不干扰。(我没有监听本地)
二、配置
1. 修改上游DNS服务器
在设置->DNS设置中修改上游 DNS 服务器,这里要使用解析速度快的。
下面有部分图片图文不符,因为文章内容有更新
我的配置:
1 | 223.5.5.5 |
建议每个都ping一下。相关的DNS服务器可以百度一下,这里就不列举了。
下面的Bootstrap DNS 服务器配置填写两个你的运营商DNS服务器IP就可以了,我的是北京中国移动的,221.179.155.161 和 221.179.155.177
然后点测试上游,没问题就应用。
2. 关于负载均衡和并行请求选哪个
在上游DNS服务器配置的下方,有三个可用的请求模式
本人把前两个模式都试验了一下。其中,并行请求的请求速度是最快的,使用该模式后的平均解析时间一度达到了2ms。但是并行请求的问题是有的时候DNS直接解析失败,或有部分内容加载不出来,需要刷新多次。(但不排除是我上游DNS服务器的配置问题)
负载均衡的请求速度不如并行请求,但能保证请求的准确性和稳定性,使用负载均衡后不再出现网页加载不出来的情况。但是平均解析速度显著下降,一度最高达到150ms,但使用一周后可以降低到30ms左右。我认为这个模式是最稳妥的,我个人推荐使用这个模式。
最快的IP地址不推荐使用,因为它要等待所有服务器的响应。
如果还想增加解析速度,在本页面向下滑动至DNS 缓存配置部分,开启乐观缓存即可。
3. 修改速度限制
在DNS 服务配置中,将速度限制改为0,然后保存
4. 配置DNS黑名单
这是adguard home的核心功能,原理是碰到黑名单里的域名就解析到错误的IP地址。
进入过滤器->DNS黑名单,修改DNS黑名单
把默认自带的AdGuard DNS filter勾选上,再在左下角“添加黑名单”里添加一个自定义列表:
https://gcore.jsdelivr.net/gh/217heidai/adblockfilters@main/rules/adblockdns.txt
这里不要添加太多,要不然会有一些奇怪的问题。经过我的测试,上面这个链接的屏蔽效果是比较好的,而且不会影响正常网站的使用。(除了墨迹天气打不开)
三、启动
对于mac系统,在设置->网络->详细信息中将DNS改为树莓派的IP即可
如果需要配置多个dns以方便切换,请参考https://blog.csdn.net/weixin_44722978/article/details/115463939 (以免树莓派宕机(bushi))
四、与“v2A”共存
由于树莓派上还有”v2A“,为实现这二者互不打扰,需要设置为redirect模式并关闭“防止DNS污染”(见官方文档https://v2raya.org/docs/advanced-application/advanced-dns/ )
原始文章
部署过程
一、安装
Adguard Home是开源的,官方也提供了详细的安装步骤:https://adguard-dns.io/kb/zh-CN/adguard-home/getting-started/
在github release下载最新的稳定版:https://github.com/AdguardTeam/AdGuardHome/releases/latest
将下载的压缩包放到树莓派的任意目录下,我放在了用户目录下。
解压:
1 | tar -xzvf AdGuardHome_linux_arm64.tar.gz |
进入到解压后文件夹内
1 | cd AdGuardHome |
将adguard home安装为服务:
1 | ./AdGuardHome -s install |
记得在ufw中放行如下端口:
1 | sudo ufw allow 3000 |
在浏览器中访问IP:3000就可以看到安装界面了
点击下一步,这两个端口默认即可,上面也可以换一个,比如3001,记得在ufw中放行
我这里提示53端口被systemd-resolved进程占用了,关掉它就行:
1 | sudo systemctl stop systemd-resolved |
设置密码后,就安装成功了!
本文使用CC BY-NC-SA 4.0协议进行许可










