家庭网络级解决方案:AdguardHome

家庭网络级解决方案:AdguardHome
阿呆在 Debian 系统上搭建 AdGuard Home 的完整教程
环境准备
1. 系统要求
- 操作系统: Linux系统
- 硬件要求: AdGuard Home 对内存和 CPU 要求较低,适合在小型设备(如树莓派)上运行。
- 网络要求: 公网 IP(可选,用于远程管理)
2. 更新系统包
1 | sudo apt update && sudo apt upgrade -y |
部署 AdGuard Home
1. 下载 AdGuard Home
1. 选择自动安装方式
1 | curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v |
1 | wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v |
1 | fetch -o - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v |
2. 如果系统启用防火墙,需手动开放端口:
DNS 监听端口(默认 53)和 HTTP 管理端口(默认 3000)
1 | sudo ufw allow 53 |
安装docker
- 拉取 Docker 镜像
1
docker pull adguard/adguardhome
- 创建并运行容器
1
2
3
4
5
6
7
8
9
10
11
12docker run --name adguardhome\
--restart unless-stopped\
-v /my/own/workdir:/opt/adguardhome/work\
-v /my/own/confdir:/opt/adguardhome/conf\
-p 53:53/tcp -p 53:53/udp\
-p 67:67/udp -p 68:68/udp\
-p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp\
-p 853:853/tcp\
-p 853:853/udp\
-p 5443:5443/tcp -p 5443:5443/udp\
-p 6060:6060/tcp\
-d adguard/adguardhome1
2
3
4
5
6
7
8
9
10
11
12
13
14# 参数说明
--name adguardhome \ #指定容器名称为 adguardhome,方便后续通过名称管理容器(如启动、停止、删除等)
--restart unless-stopped \ #设置容器重启策略:除非手动停止,否则容器退出时自动重启(确保服务持续运行)
-v /my/own/workdir:/opt/adguardhome/work \ #挂载主机目录到容器工作目录:主机目录 /my/own/workdir <-> 容器内 /opt/adguardhome/work 用于持久化存储 AdGuard Home 的工作数据(如过滤规则、查询日志、缓存等)
-v /my/own/confdir:/opt/adguardhome/conf \ #挂载主机目录到容器配置目录:主机目录 /my/own/confdir <-> 容器内 /opt/adguardhome/conf 用于持久化存储配置文件(如 AdGuardHome.yaml),避免容器删除后配置丢失
-p 53:53/tcp -p 53:53/udp \ #映射 DNS 服务端口(TCP+UDP):主机 53 端口 <-> 容器 53 端口 53 是 DNS 协议默认端口,AdGuard Home 作为 DNS 服务器需监听此端口处理域名解析请求
-p 67:67/udp -p 68:68/udp \ #映射 DHCP 服务端口(UDP):主机 67/68 端口 <-> 容器 67/68 端口 67 是 DHCP 服务器端口,68 是 DHCP 客户端端口,启用 AdGuard Home 的 DHCP 功能时需要
-p 80:80/tcp \ #映射 HTTP 端口(TCP):主机 80 端口 <-> 容器 80 端口 用于处理 HTTP 请求(如 Web 管理界面的 HTTP 访问、广告过滤的 HTTP 请求拦截等)
-p 443:443/tcp -p 443:443/udp \ #映射 HTTPS 及相关加密端口(TCP+UDP):主机 443 端口 <-> 容器 443 端口 TCP 用于 HTTPS 协议(Web 管理界面的 HTTPS 访问),UDP 可能用于 DNS-over-HTTPS(DoH)等加密通信
-p 3000:3000/tcp \ #映射初始配置界面端口(TCP):主机 3000 端口 <-> 容器 3000 端口 首次启动 AdGuard Home 时,通过此端口访问初始化配置界面(如设置管理员账号、DNS 上游等)
-p 853:853/tcp -p 853:853/udp \ #映射 DNS-over-TLS/QUIC 端口(TCP+UDP):主机 853 端口 <-> 容器 853 端口 853 是 DNS-over-TLS(DoT)的标准端口(TCP),同时也用于 DNS-over-QUIC(DoQ)(UDP,符合 RFC 规范)
-p 5443:5443/tcp -p 5443:5443/udp \ #映射备用加密服务端口(TCP+UDP):主机 5443 端口 <-> 容器 5443 端口 常用于 DNS-over-HTTPS(DoH)的备用端口,或其他加密管理服务
-p 6060:6060/tcp \ #映射性能分析端口(TCP):主机 6060 端口 <-> 容器 6060 端口 对应配置中 pprof.port,用于 AdGuard Home 的性能分析和调试(如 Go 语言的 pprof 工具)
-d adguard/adguardhome -d #表示后台运行容器;adguard/adguardhome 是使用的 Docker 镜像名称
控制指令
启动
1 | docker start adguardhome |
停止
1 | docker stop adguardhome |
删除
1 | docker rm adguardhome |
- 安装docker和Docker-Composr
1
mkdir adguardhome && cd adguardhome
- 创建 docker-compose.yml
1
nano docker-compose.yml
- 编写docker-compose.ymlCtrl + X按Y,Enter保存
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32version: '3' # 指定Docker Compose文件格式版本(v3兼容大多数现代Docker环境)
services:
adguardhome: # 定义服务名称为adguardhome
image: adguard/adguardhome:latest # 使用AdGuard Home官方最新镜像
container_name: adguardhome # 指定容器名称,便于通过名称管理(如启动、停止)
restart: unless-stopped # 容器重启策略:除非手动停止,否则退出后自动重启(保证服务持续运行)
# 使用命名卷存储数据,无需手动创建主机目录,由Docker自动管理
volumes:
- adguard_work:/opt/adguardhome/work # 命名卷adguard_work映射到容器工作目录:
# 存储过滤规则、查询日志、缓存等动态数据,数据持久化且独立于容器生命周期
- adguard_conf:/opt/adguardhome/conf # 命名卷adguard_conf映射到容器配置目录:
# 存储核心配置文件(如AdGuardHome.yaml),确保配置不丢失
ports: # 端口映射(主机端口:容器端口),按需保留或删除
- "53:53/tcp" # 普通DNS服务(TCP协议)
- "53:53/udp" # 普通DNS服务(UDP协议,DNS主要使用UDP)
- "67:67/udp" # DHCP服务器端口(如需用AdGuard作为DHCP服务器则保留)
- "68:68/udp" # DHCP客户端端口(配合DHCP服务器使用)
- "80:80/tcp" # HTTP端口:用于Web管理界面访问、广告过滤的HTTP请求拦截
- "443:443/tcp" # HTTPS端口:用于加密管理界面访问、DNS-over-HTTPS(DoH)服务
- "443:443/udp" # 443端口UDP:支持DoH相关的UDP通信
- "3000:3000/tcp" # 初始化配置端口:首次启动时通过此端口访问设置界面(配置完成后可关闭)
- "853:853/tcp" # DNS-over-TLS(DoT)服务端口(加密DNS协议)
- "853:853/udp" # DNS-over-QUIC(DoQ)服务端口(基于QUIC的加密DNS)
- "5443:5443/tcp" # DNSCrypt服务端口(另一种加密DNS协议)
- "5443:5443/udp" # DNSCrypt服务的UDP端口
- "6060:6060/tcp" # 调试端口:用于性能分析(如Go语言pprof工具),非必要可删除
# 定义命名卷(Docker会自动在宿主机创建并管理这些卷的存储路径,通常在/var/lib/docker/volumes/)
volumes:
adguard_work: # 卷名称:对应容器内的工作目录,存储动态数据
adguard_conf: # 卷名称:对应容器内的配置目录,存储核心配置 - 启动 AdGuard Home
- 启动容器
1
docker-compose up -d
- 查看容器状态
1
docker-compose ps
首次配置
1. 访问管理界面
- 本地访问:
http://主机IP地址:3000 - 远程访问:
http://<你的服务器IP>:3000
2. 初始设置步骤
- 选择语言(如中文),点击 Next。
- 阅读并接受服务条款,点击 Next。
- 设置管理员账户的用户名和密码。
- 完成配置后登录管理后台。
关键配置说明
1. 广告拦截规则
- 默认规则:系统已预装基础广告过滤规则。
- 自定义规则:
- 进入 Filtering → Rulesets → Manual,输入规则链接(例如
https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt)。
- 进入 Filtering → Rulesets → Manual,输入规则链接(例如
2. 家长控制
- 内容过滤:
- 在 Parent Control → Content Blocking 中勾选需要屏蔽的类别(如成人内容、赌博)。
- 屏幕时间管理:
- 在 Screen Time 中设置设备可用时间段(例如每天 18:00-22:00)。
3. 网络监控
- 查看实时流量:进入 Network → Dashboard 查看各设备的连接状态和 DNS 请求统计。
更新和卸载
1 | ### 更新 |
1 | ### 更新 |
1 | ### 更新 |
常见问题
1. 无法访问管理界面
开放防火墙端口
1 | sudo ufw allow 3000/tcp |
2. 集成到路由器
- 在路由器设置中将 DNS 服务器地址指向 AdGuard Home 的 IP(例如
192.168.1.100:53)。
参考文档:
AdGuard Home 官方文档







