前言

AdGuard Home 部署的方式有很多种,使用 Docker 部署主要是考虑到其更新维护成本低、玩法多样、灵活。

安装部署 AdGuard Home

Docker 部署涉及到网络模式的选择,小伙伴们可以根据自己的实际情况选择适合自己的。

Bridge 网络模式

博主个人并不推荐使用 Briage 网络模式部署,因为要预先设定端口,考虑端口占用情况,且一旦固定后续只能通过重建容器进行更改,限制多、灵活度差。由于它是 Docker 默认的网络模式,且很多教程存在误导性质,所以还是简单说明一下部署方法,顺便科普一下 AdGuard Home 每个端口的作用。

官方提供的容器启动命令示例格式化后如下:

docker run -d \
    --name adguardhome \
    -v $PWD/adguardhome/work:/opt/adguardhome/work \
    -v $PWD/adguardhome/conf:/opt/adguardhome/conf \
    -p 53:53/tcp \
    -p 53:53/udp \
    -p 67:67/udp \
    -p 68:68/tcp \
    -p 68:68/udp \
    -p 80:80/tcp \
    -p 443:443/tcp \
    -p 853:853/tcp \
    -p 3000:3000/tcp \
    adguard/adguardhome

从示例中可以得知 AdGuard Home 所需要用到的端口,但实际情况并不是都会用到,这需要根据自身的需求来决定,以下是这些端口的作用:

  • 53:DNS 端口。即其他设备访问 AdGuard Home 进行 DNS 解析的默认端口。因为部分系统不支持自定义 DNS 端口,所以不建议自定义。部署前务必要查看是否有其它程序占用。
  • 67, 68: DHCP 端口。除非想代替你路由上的 DHCP 服务器,否则用不到。
  • 80: 管理页面默认 HTTP 端口。可忽略,在初始化页面设置管理端口为 3000 端口即可。
  • 443:HTTPS 和 DoH 端口。本地内网环境不需要。
  • 853:DoT 端口。不使用相关功能可忽略。
  • 3000:初始化设置端口。除非通过配置文件去设置,否则必须开启。

如果只是本地局域网使用一般只需要映射533000端口:

docker run -d \
    --name adguardhome \
    -v $PWD/adguardhome/work:/opt/adguardhome/work \
    -v $PWD/adguardhome/conf:/opt/adguardhome/conf \
    -p 53:53/tcp \
    -p 53:53/udp \
    -p 3000:3000/tcp \
    adguard/adguardhome

macvlan 网络模式

TIPS: 准确来说应该叫“macvlan 网络下的 bridge 模式”,因为说起来太拗口,而且 macvlan 其他模式很少使用,同时也为了和默认的 bridge 网络模式做区分,所以博主习惯将它称之为“macvlan 网络模式”。

使用 macvlan 网络模式的好处是容器相当于是一个独立的设备,可以拥有一个独立且固定的 IP 和 MAC 地址,不需要理会任何端口的状态。你甚至可以部署多个 AdGuard Home ,用作不同的用途,灵活度非常高。非常适合在本地局域网使用。

  • 创建 macvlan 网络(根据实际情况替换参数,并删除注释)

    docker network create \
        -d macvlan \ # 使用 macvlan 网络驱动
        --subnet=10.0.0.0/24 \ # 指定网段
        --gateway=10.0.0.1 \ # 指定网关 IP
        -o parent=eth0 \ # 指定网卡
        openwrt # 网络名称,随意,自己记得就行
    TIPS: 据博主的了解,用 Docker 使用 OpenWrt 容器的小伙伴一般都创建过 macvlan 网络,还有 UNRAID 会默认创建一个 macvlan 网络。那么很大概率网段就被占用了,就不需要再创建了,忽略即可。执行docker network ls | grep macvlan命令可以查看已有的 macvlan 网络。
  • 启动容器(根据实际情况替换参数,并删除注释)

    docker run -d \
        --name adguardhome \
        --restart unless-stopped \
        --log-opt max-size=1m \
        --network openwrt \ # 使用之前创建的 macvlan 网络
        --ip 10.0.0.53 \ # 设置本容器的 IP
        -v $PWD/adguardhome/work:/opt/adguardhome/work \
        -v $PWD/adguardhome/conf:/opt/adguardhome/conf \
        adguard/adguardhome

Host 网络模式

Host 网络模式直接使用宿主机的网络,没有网络隔离,不需要考虑端口映射,后续可以自由调整端口。最适合在本机使用,或者直通外网的设备对外开放服务,就比如 VPS 、主路由。

docker run -d \
    --name adguardhome \
    --restart unless-stopped \
    --log-opt max-size=1m \
    --network host \
    -v $PWD/adguardhome/work:/opt/adguardhome/work \
    -v $PWD/adguardhome/conf:/opt/adguardhome/conf \
    adguard/adguardhome

AdGuard Home 初始化设置

使用网页浏览器访问 IP + 3000 端口即可进入到 AdGuard Home 的初始化界面,比如 IP 是10.0.0.53,那么就访问 http://10.0.0.53:3000

接着是监听接口(网卡)和端口设置,根据不同的网络模式和实际情况需要作出不同的修改:

  • Briadge 网络模式:前面提到过在不映射80端口的情况下可以改管理界面端口为3000
  • macvlan 网络模式:无需任何修改。
  • Host 网络模式:在多 IP 的 VPS 环境可能需要选择监听接口。端口方面,一般 VPS 的80端口都被 web server 占用,所以你可以把80端口改为任意没有被占用的端口。

然后是设置管理用户名和密码,后面都是直接下一步。

完事之后输入用户名和密码登录,就来到了仪表盘页面。

至此 AdGuard Home 就部署完成了。

在设备上使用 AdGuard Home DNS

最后你可以在 AdGuard Home 的设置指导页面找到相应系统的 DNS 设置方法,先不要着急在路由器上使用,建议先设置电脑或手机,通过访问一些网站来测试是否能正常解析。正常的情况下在仪表盘界面会有统计信息,在查询日志界面你会看到解析的详细记录信息。

尾巴

不要以为到这里就结束了,一切都还只是刚刚开始。有关 DNS 防污染以及去广告等优化增强设置博主将会在后面的教程中进行详细说明。

AdGuard Home 系列教程


本博客已开设 Telegram 频道,欢迎小伙伴们订阅关注。