Quay lại blog
Tháng Tám 19, 2026Hướng dẫn

Cách thiết lập AdGuard Home trên VPS

Cài AdGuard Home trên Ubuntu, hoàn thành wizard lần đầu, khóa giao diện web, bật DNS-over-HTTPS và DNS-over-TLS, trỏ thiết bị tới bộ phân giải của bạn, và tránh chạy máy chủ DNS mở mà cả internet có thể lạm dụng.

Cách thiết lập AdGuard Home trên VPS

AdGuard Home là DNS sinkhole tự lưu trữ và bộ phân giải kiểu đệ quy kèm giao diện web. Nó có thể chặn quảng cáo, tracker và tên miền độc hại cho mọi thiết bị dùng nó làm DNS — điện thoại, laptop, TV thông minh, và các dự án VPS khác. Khác tiện ích trình duyệt, nó vẫn hoạt động với ứng dụng bỏ qua tệp hosts. Chạy trên VPS hữu ích khi bạn muốn cùng bộ lọc khi đi đường, hoặc không muốn Raspberry Pi trên mạng nhà.

Mặc định nguy hiểm bạn không được xuất xưởng là bộ phân giải mở: nếu UDP/TCP 53 tới được từ cả internet không kiểm soát truy cập, người lạ sẽ dùng VPS của bạn cho khuếch đại DNS và bạn sẽ nhận khiếu nại lạm dụng. Hướng dẫn này cài AdGuard Home trên Ubuntu, gắn DNS vào localhost hoặc giao diện WireGuard riêng trừ khi bạn cố ý lộ DNS mã hóa, đặt bảng điều khiển trên HTTPS, và chỉ cách laptop cùng điện thoại dùng DNS-over-HTTPS (DoH) hoặc DNS-over-TLS (DoT) mà không mở cổng 53 cổ điển ra thế giới.

AdGuard Home hợp với việc gì

So sánh thường gặp là Pi-hole. AdGuard Home là một nhị phân duy nhất với UI web tích hợp, frontend DNS mã hóa tùy chọn, và cài đặt theo từng client. Bạn có thể chạy trong Docker hoặc như dịch vụ systemd. Trên VPS Hiddence nó đi tốt với VPN riêng: thiết bị vào WireGuard, gửi DNS tới VPS qua đường hầm, và không bao giờ lộ cổng 53 công khai.

  • Chặn toàn mạng mà không cài ứng dụng trên mọi thiết bị
  • DoH (443) và DoT (853) để DNS không phải văn bản thuần trên Wi-Fi công cộng
  • Nhật ký truy vấn và thống kê để thấy thiết bị nào nói chuyện với tên miền nào
  • Upstream tùy chỉnh (Quad9, Cloudflare, hoặc Unbound của bạn)
  • Dấu chân nhỏ — VPS 1 GB có thể lọc một hộ gia đình cộng vài client thêm

Yêu cầu

Bạn cần tên miền nếu muốn chứng chỉ tin cậy cho DoH/DoT và bảng điều khiển. Có thể thử trên HTTP và IP máy chủ trước, nhưng đừng để vậy. Nếu systemd-resolved đã chiếm cổng 53 trên Ubuntu, chúng ta sẽ giải phóng trước khi AdGuard Home gắn DNS.

  • VPS Ubuntu 22.04 hoặc 24.04 với root/sudo
  • 1 GB RAM đủ cho dùng cá nhân
  • Tên miền hoặc tên miền phụ (dns.example.com) có bản ghi A tới VPS
  • Truy cập SSH; WireGuard tùy chọn nếu muốn DNS chỉ trong đường hầm

Bước 1: Giải phóng cổng 53 và cài AdGuard Home

Ubuntu Server thường chạy systemd-resolved như stub trên 127.0.0.53:53. AdGuard Home muốn 53 trên các giao diện bạn chọn. Trình cài có thể làm việc này, nhưng làm tường minh tránh DNS nửa vời trên chính VPS (máy chủ vẫn cần phân giải gói).

bash
ssh root@YOUR_VPS_IP
apt update && apt -y upgrade
apt -y install curl ca-certificates

# See who owns port 53:
ss -tulpn | grep ':53'

# Typical Ubuntu fix: stop stub listener, point the OS at a temporary resolver
mkdir -p /etc/systemd/resolved.conf.d
cat >/etc/systemd/resolved.conf.d/adguardhome.conf <<'EOF'
[Resolve]
DNS=1.1.1.1
DNSStubListener=no
EOF
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
systemctl restart systemd-resolved

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

Bước 2: Wizard lần đầu

Trình cài in URL, thường là http://YOUR_IP:3000/. Mở, tạo người dùng quản trị với mật khẩu dài, và chọn địa chỉ lắng nghe. Với VPS công cộng, thiết lập đầu an toàn là: Admin Web trên 127.0.0.1:3000 (bạn sẽ đặt Caddy phía trước) hoặc trên 80/443 sau TLS; DNS lắng nghe trên 127.0.0.1:53 cộng giao diện VPN, không trên 0.0.0.0:53. Nếu thật sự cần DNS kiểu LAN cho bạn bè, ưu tiên DoH/DoT trên 443/853 có xác thực, không phải 53/udp mở.

Chọn máy chủ DNS upstream bạn tin. Nhiều người dùng https://dns.quad9.net/dns-query hoặc Cloudflare. Bật yêu cầu song song nếu muốn chuyển dự phòng nhanh hơn. Bật danh sách lọc mặc định, rồi thêm sau — bật năm mươi danh sách ngày đầu khiến gỡ lỗi bất khả thi khi một site hỏng.

Nếu không mở được cổng 3000 từ laptop, dùng đường hầm SSH: ssh -L 3000:127.0.0.1:3000 root@YOUR_VPS_IP rồi duyệt http://127.0.0.1:3000/

Bước 3: Reverse proxy và HTTPS cho bảng điều khiển

Khi wizard xong, AdGuard Home thường chuyển UI sang cổng 80. Việc đó va chạm Caddy hoặc Nginx nếu bạn cũng host site. Mẫu sạch là: web AdGuard Home trên 127.0.0.1:8080, DNS trên 127.0.0.1:53, Caddy trên 443 cho cả bảng điều khiển lẫn DoH.

bash
# In AdGuard Home settings, bind the web UI to 127.0.0.1:8080
# Example Caddyfile:

dns.example.com {
    reverse_proxy 127.0.0.1:8080
}

# After Caddy is up:
curl -I https://dns.example.com

Bước 4: Bật DNS-over-HTTPS và DNS-over-TLS

Trong cài đặt Encryption, bật mã hóa, đặt tên máy chủ thành dns.example.com, và trỏ AdGuard Home tới tệp chứng chỉ — hoặc những tệp Caddy lưu, hoặc chứng chỉ AdGuard Home tự lấy nếu nó lắng nghe 443. DoH thường là https://dns.example.com/dns-query. DoT là dns.example.com:853. Nếu Caddy đã chiếm 443, để Caddy kết thúc TLS và reverse-proxy đường DoH tới cổng DoH HTTP thuần của AdGuard Home, hoặc để AdGuard Home lắng nghe 443 và đặt bảng điều khiển trên tên miền phụ khác.

Xác minh bằng client trước khi đổi mọi thiết bị. Trên laptop có curl hiện đại:

bash
curl -H 'accept: application/dns-json' 'https://dns.example.com/dns-query?name=example.com&type=A'

# DoT test (kdig from knot-dnsutils, if installed):
# kdig @dns.example.com +tls-ca +tls-host=dns.example.com example.com

Bước 5: Trỏ thiết bị thật tới bộ phân giải của bạn

Windows 11 và Android gần đây có thể dùng mẫu DoH. iOS có thể dùng hồ sơ cấu hình hoặc client hỗ trợ DoH. Firefox và Chromium cũng cho URL DoH tùy chỉnh. Với router nhà, chỉ đặt WAN DNS nếu router hỗ trợ DoT/DoH; không thì chạy WireGuard và đặt DNS thành IP VPN của VPS để DNS cổ điển không bao giờ băng internet.

  • Android 9+: DNS riêng tư (DoT) → dns.example.com
  • Firefox: Cài đặt → Mạng → DNS over HTTPS → URL tùy chỉnh https://dns.example.com/dns-query
  • Thiết bị Apple: mobileconfig đã ký hoặc ứng dụng hỗ trợ DoH/DoT
  • VPS khác: đặt resolv.conf hoặc systemd-resolved tới IP WireGuard của instance AdGuard này
  • Tránh đặt IP VPS này làm DNS trên mạng công cộng ngẫu nhiên mà không mã hóa

Bước 6: Tường lửa — đóng DNS đệ quy mở

Đây là phần ngăn bất ngờ khó chịu. Cho phép SSH, HTTPS, và tùy chọn 853/tcp cho DoT. Đừng cho phép 53/udp từ 0.0.0.0/0 trừ khi bạn có thiết kế rất cụ thể, giới hạn tốc độ, có xác thực — và ngay cả lúc đó, có lẽ bạn cũng không nên.

bash
ufw allow OpenSSH
ufw allow 443/tcp comment 'dashboard + DoH'
ufw allow 853/tcp comment 'DoT'
# If DNS is only on WireGuard (example iface wg0, 10.8.0.1):
# ufw allow in on wg0 to any port 53 proto udp
ufw enable
ufw status verbose

# Confirm 53 is not public:
ss -tulpn | grep ':53'

Bộ lọc, danh sách cho phép và client

Bắt đầu với bộ lọc DNS mặc định của AdGuard và một danh sách malware. Khi site hành xử sai, xem nhật ký truy vấn, rồi thêm quy tắc cho phép cụ thể thay vì tắt hết chặn. Dùng tên client (theo IP hoặc ClientID trong URL DoH) để áp danh sách nghiêm hơn cho TV thông minh và lỏng hơn cho laptop công việc. Chỉ bật tìm kiếm an toàn nếu bạn thực sự muốn — nó làm người không yêu cầu kết quả Google bị viết lại bất ngờ.

  • Nhật ký truy vấn: tìm tên miền bị chặn, rồi whitelist nếu là dương tính giả
  • Cài đặt client: danh sách chặn khác nhau theo thiết bị
  • Client không được phép: chặn dải bạn không sở hữu
  • Giới hạn tốc độ: bật nếu bạn từng lộ hơn một nắm người dùng

Khắc phục sự cố

Nếu chính VPS không apt update được, bạn đã phá DNS cục bộ khi giải phóng cổng 53 — đặt bộ phân giải tĩnh trong resolved.conf như trên. Nếu thiết bị 'có internet' nhưng quảng cáo vẫn tải, chúng đang bỏ qua DNS của bạn (bộ phân giải cứng, DoH trong trình duyệt, hoặc ứng dụng dùng DNS riêng). Nếu bảng điều khiển trống, bạn đang nhìn nhầm instance hoặc vẫn đánh cổng 3000 sau khi wizard đã chuyển UI.

  • apt thất bại: kiểm tra /etc/resolv.conf và systemd-resolved
  • Cổng 53 đang dùng: ss -tulpn, tắt stub listener
  • Lỗi chứng chỉ DoH: tên máy chủ phải khớp SAN của chứng chỉ
  • Quảng cáo vẫn thấy: DoH trình duyệt tới nhà cung cấp khác ghi đè OS
  • RAM cao: nhật ký truy vấn + quá nhiều danh sách lọc — cắt danh sách và rút thời gian giữ nhật ký

Danh sách kiểm tra bảo mật

Giao diện web là bảng quản trị. Mật khẩu độc nhất, chỉ HTTPS, và đừng công bố URL. Giữ AdGuard Home cập nhật; cả script cài lẫn UI đều có đường cập nhật. Hạn chế 443 nếu chỉ thiết bị của bạn nên dùng DoH — HTTP basic auth trên đường DoH hoặc chỉ WireGuard an toàn hơn nhiều so với bộ phân giải mở nổi tiếng.

  • Không có 53/udp công cộng
  • HTTPS trên bảng điều khiển
  • Mật khẩu quản trị mạnh, lưu trong trình quản lý mật khẩu
  • Ưu tiên WireGuard + DNS nội bộ cho thiết bị gia đình
  • Sao lưu AdGuardHome.yaml ra khỏi máy chủ

Mẹo

  • Sao lưu /opt/AdGuardHome/AdGuardHome.yaml trước mỗi lần nâng cấp
  • Dùng tên miền phụ riêng; đừng chia với CMS không liên quan
  • Nếu đã chạy Caddy, để Caddy chiếm 443 và giữ AdGuard Home trên localhost
  • Ghi lại URL DoH cho thiết bị — bạn sẽ quên
  • Ghép với hướng dẫn cứng hóa SSH và tường lửa để VPS không chỉ 'an toàn DNS'

AdGuard Home trên VPS khá thẳng: giải phóng cổng 53 cục bộ, chạy trình cài, hoàn thành wizard với mật khẩu quản trị mạnh, đặt UI trên HTTPS, bật DoH/DoT, và giữ DNS cổ điển khỏi internet công cộng. Trỏ thiết bị tới endpoint mã hóa hoặc IP VPN, bắt đầu với bộ lọc nhỏ, và dùng nhật ký truy vấn khi có gì hỏng. Đó là bộ phân giải riêng bạn thực sự kiểm soát — không phải DNS mở công cộng sẽ đưa VPS vào cơ sở dữ liệu lạm dụng.