Hướng Dẫn Tự Host AdGuard Home: Chặn Quảng Cáo Trên Toàn Bộ Mạng

Tự host AdGuard Home bằng Docker Compose để chặn quảng cáo trên toàn bộ mạng cho mọi thiết bị. Không cần cài đặt từng máy, không cần mở port.

Hướng Dẫn Tự Host AdGuard Home: Chặn Quảng Cáo Trên Toàn Bộ Mạng

Trong thời đại số, quảng cáo và trình theo dõi (trackers) không chỉ gây khó chịu mà còn tiềm ẩn nhiều rủi ro về quyền riêng tư cũng như tiêu tốn băng thông. Nếu anh em đang tìm kiếm một giải pháp chặn quảng cáo triệt để, hoạt động ở cấp độ mạng cho toàn bộ thiết bị trong nhà, thì AdGuard Home chính là sự lựa chọn hoàn hảo nhất.

Trong bài viết này, TechCoBan sẽ chia sẻ với anh em cách tự host AdGuard Home bằng Docker Compose để chặn quảng cáo cho mọi thiết bị một cách tự động mà không cần cài đặt phần mềm lên từng máy.

1. Giới thiệu tổng quan về AdGuard Home

AdGuard Home là một máy chủ DNS mã nguồn mở và miễn phí. Thay vì sử dụng DNS mặc định của nhà mạng (ISP), anh em cấu hình mạng nhà mình sử dụng AdGuard Home làm DNS Server. Mỗi khi một thiết bị (điện thoại, Smart TV, laptop…) muốn truy cập internet, yêu cầu phân giải tên miền (DNS request) sẽ đi qua AdGuard Home trước.

Nếu tên miền đó nằm trong danh sách đen (ví dụ như server quảng cáo, tracker, mã độc), AdGuard sẽ lập tức chặn lại. Nhờ vậy, thiết bị sẽ không tải quảng cáo và cũng không gửi dữ liệu đi, tiết kiệm băng thông đáng kể.

Các tính năng nổi bật của AdGuard Home:

  • Chặn quảng cáo toàn mạng: Tự động bảo vệ tất cả các thiết bị kết nối vào mạng (kể cả các thiết bị khó cài ad-blocker như Smart TV, IoT).
  • Giao diện Dashboard trực quan: Theo dõi và thống kê chi tiết các truy vấn DNS, xem thiết bị nào gửi request nhiều nhất.
  • Hỗ trợ mã hóa DNS (DNS-over-HTTPS / DNS-over-TLS): Bảo vệ các truy vấn DNS khỏi sự rình mò của nhà mạng.
  • Quản lý nội dung (Parental control): Dễ dàng chặn các dịch vụ cụ thể (Facebook, TikTok, nội dung người lớn…) cho từng thiết bị.
  • Custom DNS rewrites: Hỗ trợ trỏ tên miền nội bộ về IP cục bộ cực kỳ tiện lợi cho các homelab.

So với các extension chặn quảng cáo trên trình duyệt (như uBlock), AdGuard Home mạnh mẽ hơn vì nó chặn ở cấp độ mạng (DNS) và bao phủ được toàn bộ các ứng dụng (app) trên điện thoại chứ không chỉ riêng trình duyệt web.

2. Chuẩn bị: Sửa lỗi xung đột Port 53 trên Ubuntu

Giao thức DNS hoạt động trên cổng (port) 53. Tuy nhiên, trên Ubuntu và đa số các hệ điều hành họ Debian, hệ thống mặc định chạy một dịch vụ có tên là systemd-resolved đang chiếm giữ cổng 53 (tại 127.0.0.53:53). Do đó, trước khi chạy Docker, anh em phải tắt “stub listener” này đi để tránh lỗi xung đột (address-in-use).

Bước 1: Tạo thư mục chứa file cấu hình ghi đè cho systemd-resolved:

sudo mkdir -p /etc/systemd/resolved.conf.d

Bước 2: Vô hiệu hóa DNS stub listener:

sudo tee /etc/systemd/resolved.conf.d/adguardhome.conf <<'EOF'
[Resolve]
DNS=127.0.0.1
DNSStubListener=no
EOF

Bước 3: Cập nhật lại file resolv.conf và khởi động lại dịch vụ:

sudo mv /etc/resolv.conf /etc/resolv.conf.backup
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl reload-or-restart systemd-resolved

Sau khi hoàn tất, anh em có thể dùng lệnh sudo ss -tulpn | grep :53 để kiểm tra. Nếu không hiện ra kết quả nào tức là Port 53 đã được giải phóng thành công.

(Lưu ý: Nếu anh em đang dùng CentOS/RHEL thì thường systemd-resolved không bật mặc định, anh em chỉ cần kiểm tra xem port 53 có đang bị chiếm không là được).

3. Cài đặt AdGuard Home bằng Docker Compose

Cách sạch sẽ và tối ưu nhất để triển khai AdGuard Home là sử dụng Docker Compose.

Bước 1: Tạo thư mục lưu trữ cho dự án:

mkdir -p ~/adguard && cd ~/adguard
mkdir -p work conf

Bước 2: Tạo file compose.yml (hoặc docker-compose.yml):

nano compose.yml

Dán nội dung cấu hình sau vào:

version: '3.8'

services:
  adguardhome:
    image: adguard/adguardhome:latest
    container_name: adguardhome
    restart: unless-stopped
    volumes:
      - ./work:/opt/adguardhome/work
      - ./conf:/opt/adguardhome/conf
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "3000:3000/tcp"
      - "8080:80/tcp"

(Trong cấu hình trên: Port 53 dùng để xử lý truy vấn DNS. Port 3000 dùng để thiết lập ban đầu. Port 8080 sẽ là port truy cập trang quản trị web sau này).

Bước 3: Khởi chạy AdGuard Home:

docker compose up -d

Bước 4: Hoàn tất thiết lập ban đầu (Setup Wizard)

  • Anh em mở trình duyệt và truy cập vào http://<IP_MAY_CHU_CUA_BAN>:3000 để bắt đầu.
  • Ở phần Admin Web Interface, hãy chọn lắng nghe trên tất cả các interfaces, port 80.
  • Ở phần DNS server, chọn lắng nghe trên tất cả các interfaces, port 53.
  • Tạo một tài khoản Admin và mật khẩu quản trị.
  • Sau khi thiết lập xong, anh em truy cập lại Dashboard bằng địa chỉ http://<IP_MAY_CHU_CUA_BAN>:8080.

4. Sử dụng AdGuard Home thực tế

Bây giờ AdGuard Home đã chạy, chúng ta cần cấu hình để mạng nội bộ thực sự sử dụng nó.

Cấu hình DNS Upstream an toàn

Để tránh việc nhà mạng (ISP) theo dõi lịch sử duyệt web, anh em nên cấu hình DNS Upstream qua giao thức mã hóa (DNS-over-HTTPS).

Trong Dashboard quản trị, điều hướng tới Settings → DNS settings. Tại mục Upstream DNS servers, anh em dán các địa chỉ sau vào:

# Cloudflare DNS-over-HTTPS
https://dns.cloudflare.com/dns-query

# Quad9 DNS-over-HTTPS (Chặn mã độc rất tốt)
https://dns.quad9.net/dns-query

Nhấn Apply để lưu lại. Kể từ giờ, AdGuard Home sẽ giao tiếp với thế giới bên ngoài thông qua kênh đã được mã hoá.

Trỏ Router về AdGuard Home

Cách nhàn nhất là cấu hình DNS trực tiếp trên Modem/Router WiFi của anh em. Nhờ vậy, mọi thiết bị cứ kết nối vào WiFi là tự động được chặn quảng cáo.

  1. Lấy địa chỉ IP mạng nội bộ (LAN IP) của máy chủ đang chạy AdGuard Home (ví dụ 192.168.1.100).
  2. Đăng nhập vào trang quản trị của Router (thường là 192.168.1.1).
  3. Tìm mục cấu hình DHCP Server hoặc LAN DNS.
  4. Thay đổi Primary DNS thành IP của máy chủ AdGuard Home (192.168.1.100).
  5. Lưu cấu hình và khởi động lại Router (hoặc ngắt kết nối WiFi rồi kết nối lại trên điện thoại/laptop để nhận IP mới).

Cấu hình thêm danh sách chặn (Blocklists)

Mặc định AdGuard Home đã có sẵn một list chặn cơ bản. Để tăng cường sức mạnh, anh em có thể thêm các Blocklists khác tại mục Filters → DNS blocklists → Add blocklist.

Một số list “ngon” anh em nên dùng:

  • EasyList: Chặn quảng cáo đa dụng siêu phổ biến.
  • EasyPrivacy: Ngăn chặn các trackers theo dõi hành vi.
  • OISD: Danh sách tổng hợp tất cả trong một, độ tin cậy cao và rất ít khi bị nhận diện nhầm (false positives).

(Lưu ý nhỏ: Anh em đừng tham lam thêm quá nhiều danh sách chặn. Việc này vừa làm nặng hệ thống vừa dễ gây lỗi block nhầm các trang web hợp lệ).

5. Tổng kết

Như vậy, TechCoBan đã hướng dẫn anh em chi tiết cách thiết lập một máy chủ AdGuard Home nội bộ bằng Docker cực kỳ gọn nhẹ và hiệu quả. Việc tự host hệ thống DNS riêng không chỉ giúp chặn quảng cáo, bảo vệ trẻ em, mà còn tăng cường tính riêng tư tuyệt đối cho gia đình bạn.

Nếu anh em muốn truy cập vào trang quản trị (Dashboard) của AdGuard Home từ xa khi đang đi ra ngoài đường, anh em có thể tham khảo bài viết kết hợp với Reverse Proxy (như Caddy hoặc Nginx Proxy Manager) cùng với các giải pháp Tunnel (như Cloudflare Tunnels hay Localtonet) để đảm bảo an toàn bảo mật nhé!

Bình luận

Bài viết liên quan