16 KiB
隐私保护中心,守护你和你的设备
免费开源,强大的网络范围广告和追踪者阻断 DNS 服务器。
AdGuard.com | Wiki | Reddit | Twitter | Telegram
AdGuard Home 是一种网络范围内的软件,用于屏蔽广告和跟踪。设置完成后,它会覆盖你家中的所有设备,无需任何客户端软件。
它作为 DNS 服务器运行,将跟踪域名重定向到“黑洞”,从而防止您的设备连接到这些服务器。它基于我们用于公共 AdGuard DNS 服务器的软件,并且两者共享大量代码。
开始使用
自动化安装(Unix)
使用 `curl` 安装,请运行以下命令:
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
使用 `wget` 安装,请运行以下命令:
wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
使用 `fetch` 安装,请运行以下命令:
fetch -o - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
脚本还接受一些选项:
-c <channel>使用指定的渠道;-r重新安装 AdGuard Home;-u卸载 AdGuard Home;-v显示详细输出。
注意,选项 -r 和 -u 互斥。
替代方法
手动安装
请阅读我们 Wiki 上的 入门指南 文章,了解如何手动安装 AdGuard Home,以及如何配置设备使用它。
Docker
您可以在 Docker Hub 使用我们的官方 Docker 镜像。
Snap Store
如果您正在运行 Linux,可以通过 Snap Store 安全且方便地安装 AdGuard Home。
指南
请参阅我们的 Wiki。
API
如果您想集成 AdGuard Home,可以使用我们的 REST API。或者,您可以使用这个 python 客户端 ,它用于构建 AdGuard Home Hass.io 插件 。
与其他解决方案相比,AdGuard Home 有何不同?
这与公共 AdGuard DNS 服务器有何不同?
运行自己的 AdGuard Home 服务器可以让你做到远不止使用公共 DNS 服务器所能做的。这是一个完全不同的层次。你自己试试看:
-
选择服务器具体拦截和允许的内容。
-
监控网络活动。
-
添加您自己的自定义过滤规则。
-
最重要的是,这是您自己的服务器,也只有您能掌控。
AdGuard Home 与 Pi-Hole 有何不同?
到目前为止,AdGuard Home 与 Pi-Hole 很多方面都有相似之处。两者都使用所谓的“DNS 漏洞利用”方法来屏蔽广告和追踪器,并且都允许用户自定义屏蔽内容。
我们不会止步于此。DNS 漏洞利用可以作为一个不错的起点,但这仅仅是个开始。
AdGuard Home 提供了许多开箱即用的功能,无需安装和配置额外的软件。我们希望它简单到即使是普通用户也能在最少的努力下完成设置。
**免责声明:** 列出的一些功能可以通过安装额外的软件或通过使用 SSH 终端手动重新配置 Pi-Hole 组成的一部分工具来添加。然而,在我们看来,这不能合法地算作 Pi-Hole 的功能。
| 功能 | AdGuard Home | Pi-Hole |
|---|---|---|
| 拦截广告和跟踪器 | ✅ | ✅ |
| 自定义屏蔽列表 | ✅ | ✅ |
| 内置 DHCP 服务器 | ✅ | ✅ |
| Admin 界面使用 HTTPS | ✅ | 是的,但你需要手动配置 lighttpd |
| 加密的 DNS 上游服务器(DNS-over-HTTPS、DNS-over-TLS、DNSCrypt) | ✅ | ❌(需要额外软件) |
| 跨平台 | ✅ | ❌(不原生支持,仅可通过 Docker 实现) |
| 运行作为 HTTPS-over-DNS 或 TLS-over-DNS 服务器 | ✅ | ❌ 需要额外软件 |
| 阻止钓鱼和恶意软件域名 | ✅ | ❌ 需要非默认黑名单 |
| 家长控制(屏蔽成人网站) | ✅ | ❌ |
| 强制使用安全搜索 | ✅ | ❌ |
| 每客户端(设备)配置 | ✅ | ✅ |
| 访问设置(选择谁可以使用 AGH DNS) | ✅ | ❌ |
| 以非 root 权限运行 | ✅ | ❌ |
AdGuard Home 与传统广告拦截器有何不同
视情况而定。
DNS 黑洞能够拦截大量广告,但缺乏传统广告拦截器的灵活性和功能。你可以通过阅读 这篇文章 来了解这两种方法之间的差异,该文章将 AdGuard for Android(一种传统广告拦截器)与主机级别广告拦截器(在功能上几乎与基于 DNS 的拦截器相同)进行了比较。这种级别的保护对一些用户来说已经足够。
此外,使用基于 DNS 的阻塞器还可以帮助在智能电视、智能音箱或其他类型的物联网设备(在这些设备上无法安装传统广告拦截器)上阻止广告、跟踪和分析请求。
已知限制
以下是一些 DNS 级别阻塞器无法阻止的示例:
-
YouTube、Twitch 的广告;
-
Facebook、Twitter、Instagram 的赞助帖子。
本质上,任何与内容共享域的广告都无法被 DNS 级别的阻塞器拦截。
未来是否有处理这种情况的可能性?DNS 从来都不足以做到这一点。我们唯一的办法是使用内容阻塞代理,就像我们在独立的 AdGuard 应用程序中所做的那样。未来我们将为 AdGuard Home 带来这一功能支持。不幸的是,即使在这种情况下,仍然会有无法拦截或需要相当复杂配置的情况。
如何从源代码构建
前提条件
运行 `make init` 来准备开发环境。
你需要以下内容来构建 AdGuard Home:
- Go v1.19 或更新版本;
- Node.js v10.16.2 或更高版本;
- npm v6.14 或更高版本;
- yarn v1.22.5 或更高版本。
构建
在终端中执行以下命令:
git clone https://github.com/AdguardTeam/AdGuardHome
cd AdGuardHome
make
**注意:** 非标准的 -j 标志目前不被支持,因此使用 make -j 4 或设置 MAKEFLAGS 包含例如 -j 4 可能会破坏构建过程。如果你的 MAKEFLAGS 已经设置为这个值,并且你不想更改它,可以通过运行 make -j 1 来覆盖它。
查看 Makefile 了解其他命令。
为不同的平台进行构建
你可以为 Go 支持的任何操作系统/架构构建 AdGuard Home。为了做到这一点,在运行时将 GOOS 和 GOARCH 环境变量指定为宏。 使用 `make` 命令。
例如:
env GOOS='linux' GOARCH='arm64' make
或者:
make GOOS='linux' GOARCH='arm64'
准备发布
你需要 snapcraft 来准备发布构建。安装完成后,运行以下命令:
make build-release CHANNEL='...' VERSION='...'
请参阅 build-release 目标文档 。
Docker 镜像
运行 `make build-docker` 以在本地构建 Docker 镜像(我们发布到 DockerHub 的镜像)。请注意,我们使用 Docker Buildx 来构建官方镜像。
在使用这些构建之前,您可能需要做一些准备工作:
-
(仅限 Linux)安装 Qemu:
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes --credential yes -
准备构建器:
docker buildx create --name buildx-builder --driver docker-container --use
参见 build-docker 目标文档 。
前端调试
当您需要调试前端而无需每次重新编译生产版本,例如检查您的标签在表单中会如何显示时,可以运行前端构建开发环境。
-
在另一个终端中运行:
( cd ./client/ && env NODE_ENV='development' npm run watch ) -
运行
AdGuardHome二进制文件并添加--local-frontend标志,这将指示 AdGuard Home 忽略内置前端文件并使用./build/目录中的文件。 -
现在,您在
./client/目录中所做的任何更改都应该重新编译并在 Web UI 中可用。请确保禁用浏览器缓存,以确保您实际获取到重新编译的版本。
贡献
欢迎您 fork 本仓库,进行更改并 提交拉取请求 。不过请确保遵循我们的 代码规范 。
请注意,我们不期望人们同时对程序的 UI 部分和后端部分进行贡献。理想情况下,后端部分(如配置、API 和功能本身)应首先实现。UI 部分可以在不同的 pull request 中由不同的人稍后实现。
测试不稳定版本
您可以使用两种更新渠道:
-
beta: AdGuard Home 的 beta 版本。较为稳定的版本,通常每两周或更频繁地发布一次。 -
edge: AdGuard Home 开发分支的最新版本。此渠道每天都会推送新更新。
有三种方式可以安装不稳定版本:
-
Snap Store: 查找
beta和edge渠道。 -
Docker Hub: 查找
beta和edge标签。 -
独立构建。使用自动化安装脚本,或在维基上查找可用的构建 on the Wiki。
安装测试版本的脚本:
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -c beta安装边缘版本的脚本:
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -c edge
报告问题
如果遇到任何问题或有建议,请访问 此页面 并点击“新建问题”按钮。
帮助进行翻译
如果您想帮助翻译 AdGuard Home,请了解我们在 知识库 中关于翻译 AdGuard 产品的更多信息。您可以在 CrowdIn 上的 AdGuardHome 项目 中贡献自己的力量。
其他
另一种贡献方式是查找标记为 help wanted 的问题,询问该问题是否可以参与,并提交修复漏洞或实现新功能的 PR。
使用 AdGuard Home 的项目
-
AdGuard Home Remote:由 Joost 开发的 iOS 应用。
-
Home Assistant 插件 由 @frenck 提供。
-
OpenWrt LUCI 应用程序由 @kongfl888 (原作者为 @rufengsuixing).
-
Asuswrt-Merlin-AdGuardHome-Installer 由 @jumpsmm7 即 @SomeWhereOverTheRainBow 提供。
-
Node.js 库由 @Andrea055 开发。
致谢
如果没有以下人员的帮助,这款软件是不可能实现的:
- Go 及其库:
- Node.js 和其库:
- whotracks.me 数据
你可能之前见过这里提到了 CoreDNS,但我们已经停止在 AdGuard Home 中使用它。
要查看所有使用的 Node.js 包的完整列表,请查看 client/package.json 文件。
隐私
我们的主要理念是,数据应该是你自己的,因此 AdGuard Home 不会收集任何使用统计数据,也不会使用任何网络服务,除非你进行相应的配置。有关 AdGuard Home 可能发送的所有详细信息,请参阅完整的隐私政策 ,其中包含了所有理论上可能被发送的内容。
