---
url: https://eoht.net/esxi/install/adguardhome.md
description: >-
  在 ESXi 的 Ubuntu 虚拟机中安装 AdGuard Home，配置 DNS 端口和 OpenWrt DHCP 下发，验证查询日志，并按非 LVM
  ext4 布局安全扩容虚拟磁盘。
---

# ESXi 安装 AdGuard Home {#esxi-adguardhome-installation}

## 新建虚拟主机 {#create-virtual-machine}

本文使用 ESXi 中的 Ubuntu x86-64 虚拟机作为示例，2 vCPU、2 GB 内存和 10 GB 磁盘是示例分配值；日志保留量较大时需要更多磁盘。为虚拟机分配固定 LAN 地址，并确认其他设备可访问。截图沿用既有安装界面，不代表已验证所有 Ubuntu/ESXi 版本。

![新建虚拟机 =688x](https://i.eoht.net/docs/20231230203658.webp "新建虚拟机")

**使用ubuntu x64 镜像**

![使用ubuntu x64 镜像 =688x](https://i.eoht.net/docs/20231230203757.webp "使用ubuntu x64 镜像")

## 官方一键安装脚本 {#run-official-install-script}

::: code-group

```sh [安装]
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
```

```sh [重装]
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v -r
```

```sh [卸载]
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v -u
```

:::

安装脚本会注册服务。以下每个命令只有一个动作，按需单独执行；不要把 `start|stop` 这样的备选写法当作 shell 命令：

```sh
sudo /opt/AdGuardHome/AdGuardHome -s status
```

```sh
sudo /opt/AdGuardHome/AdGuardHome -s start
```

```sh
sudo /opt/AdGuardHome/AdGuardHome -s stop
```

```sh
sudo /opt/AdGuardHome/AdGuardHome -s restart
```

服务注册和首次启动说明见 [AdGuard Home 官方入门文档](https://adguard-dns.io/kb/adguard-home/getting-started/)。重装、卸载前先备份配置与数据，不把它们作为首次安装的连续步骤执行。

## 安装完成 {#installation-complete}

安装完成之后访问地址为 `http://ip:3000/` ,此为ubuntu的静态IP地址+3000端口号

![AdGuardHome =688x](https://i.eoht.net/docs/20231230204830.webp "访问 `http://ip:3000/`")

## 配置 AdGuardHome {#configure-adguardhome}

### 端口配置 {#configure-ports}

* 网页管理界面监听端口为 `80`
* DNS 服务监听端口为 `53`，普通 DNS 需允许 LAN 访问 TCP/UDP 53。

安装前用 `sudo ss -lntup` 检查端口占用。Ubuntu 的 systemd-resolved 等服务可能占用本机 53 端口；按实际监听地址处理冲突，不要盲目禁用系统解析服务。管理端口 80 如已占用可另选端口，之后使用配置后的地址登录。

### 设置账号密码 {#set-admin-credentials}

![AdGuardHome =688x](https://i.eoht.net/docs/20231230205626.webp "设置账号密码")

### 常规设置 部分 {#general-settings}

![AdGuardHome =688x](https://i.eoht.net/docs/20231230205838.webp "常规设置 部分")

### DNS 设置 {#dns-settings}

#### 上游 DNS 服务器 {#upstream-dns-servers}

```md
tls://dot.360.cn
https://doh.360.cn/dns-query
tls://dns.pub
https://dns.pub/dns-query
tls://dns.alidns.com
https://dns.alidns.com/dns-query
tls://dns.ipv6dns.com
https://dns.ipv6dns.com/dns-query
```

#### BootStrap DNS 服务器地址 {#bootstrap-dns-servers}

```md
1.1.1.1:53
114.114.114.114:53
119.29.29.29
223.5.5.5
180.76.76.76
2400:3200::1
2400:da00::6666
240C::6666
```

### 过滤器设置 {#filter-settings}

先使用管理界面内置的 DNS 封锁清单选择器，启用少量适合自己的列表并更新。浏览器广告过滤列表中的元素隐藏、脚本等规则不等同于 DNS 规则，不能因能下载就认定全部生效。

新增列表后确认更新时间和解析条目数，再在查询日志中检查实际命中规则。若正常网站受影响，按日志定位并添加例外或停用对应列表；DNS 过滤无法消除与正常内容共用域名的全部广告。

## 配置 OpenWrt {#configure-openwrt}

### 接口 - Lan - 基本设置 {#lan-basic-settings}

如需让路由器自身使用 AdGuard Home，填写虚拟机的固定 LAN 地址。不要再把 AdGuard Home 的上游指回同一路由器的转发 DNS，否则可能形成循环。

![AdGuardHome =688x](https://i.eoht.net/docs/20231230210932.webp "Lan口设置")

### 接口 - Lan - 高级设置 - DHCP - 高级设置 {#lan-dhcp-advanced-settings}

假设 AdGuard Home 地址为 `192.168.1.3`，DHCP 选项填写 `6,192.168.1.3`（无加号）。由同一网段唯一的 DHCP 服务器下发，保存后让客户端重新获取租约。IPv6 的 DNS 通告需要另行核对，浏览器安全 DNS/系统私人 DNS 也可能绕过这里。

![AdGuardHome =688x](https://i.eoht.net/docs/20231230211121.webp "Lan口设置")

### 接口 - Wan - 高级设置 {#wan-advanced-settings}

WAN 上游 DNS 按网络实际需求配置，不要求 LAN、WAN 所有 DNS 栏位都重复填写。使用 AdGuard Home 作为路由器上游时，要保证虚拟机可达且它自己的上游不形成回路。

客户端执行 `nslookup example.com 192.168.1.3` 后，应在 AdGuard Home 查询日志看到这次请求；再执行不指定服务器的 `nslookup example.com`，确认日常解析同样进入 AdGuard Home。

![AdGuardHome =688x](https://i.eoht.net/docs/20231230211412.webp "Wan口设置")

## 扩容 AdGuardHome {#expand-adguardhome-storage}

### 先备份并扩大虚拟磁盘 {#shut-down-and-edit-virtual-machine}

备份虚拟机和 AdGuard Home 配置，确认备份可恢复；关闭虚拟机后，在 ESXi 编辑**虚拟硬盘容量**，例如从 10 GB 增至 25 GB。这里增加的是磁盘，不是内存。

![AdGuardHome =688x](https://i.eoht.net/docs/20231231142111.webp "扩容虚拟硬盘")

### SSH 连接并确认磁盘布局 {#connect-to-adguardhome-via-ssh}

启动 Ubuntu 后检查根文件系统、分区与剩余空间：

```sh
lsblk -f
findmnt -no SOURCE,FSTYPE /
df -hT /
```

![AdGuardHome =688x](https://i.eoht.net/docs/20231231142451.webp "查看磁盘和文件系统，设备名以本机输出为准")

下文**仅适用根文件系统直接位于普通分区、格式为 ext4、该分区后面有连续未分配空间**的情况。示例使用磁盘 `/dev/sda`、分区 `/dev/sda2`。若实际为 `/dev/mapper/...`、LVM、LUKS、XFS 或布局不同，先按对应存储方案处理，不能照抄以下设备名和命令。

### 扩大已有分区 {#mount-expanded-disk}

Ubuntu 安装分区扩容工具：

```sh
sudo apt update
sudo apt install cloud-guest-utils
```

先预览，不写分区表；注意磁盘名与分区编号之间有空格：

```sh
sudo growpart -N /dev/sda 2
```

核对预览中的目标分区、起始扇区保持不变、结束位置扩大且不覆盖其他分区，再执行：

```sh
sudo growpart /dev/sda 2
```

随后用 `lsblk` 确认分区容量已增大。若内核未重读新分区表，按工具提示重启后再次检查；出现错误先停止，不要改用删除分区并接受默认起点的办法。

### 扩大 ext4 文件系统 {#format-disk}

确认文件系统确为 ext4，且分区已扩大后执行：

```sh
sudo resize2fs /dev/sda2
```

`resize2fs` 调整现有文件系统大小，**不是格式化**。不要对这个已有数据的分区执行 `mkfs`。参数依据：[growpart 手册](https://manpages.debian.org/trixie/cloud-guest-utils/growpart.1.en.html)、[resize2fs 手册](https://manpages.debian.org/trixie/e2fsprogs/resize2fs.8.en.html)。

### 查看结果 {#verify-expansion-result}

```sh
lsblk -f
df -hT /
sudo /opt/AdGuardHome/AdGuardHome -s status
```

确认文件系统容量增加、服务正常，再从客户端发起一次 DNS 查询并检查查询日志。若仍未增加，应区分虚拟磁盘、分区和文件系统哪一层尚未扩容。

## 相关 ESXi 教程 {#related-esxi-guides}

安装前可先检查 [ESXi 安装与虚拟网络配置](/esxi/install/guide)；如果 AdGuardHome 与软路由共用同一网络，可对照 [ESXi 安装 OpenWrt](/esxi/install/openwrt) 核对虚拟磁盘和网口配置。
