Chuyên mục
Network Self Hosting

Hướng dẫn cài đặt Adguard Home – chặn quảng cáo cho cả nhà

Bạn chặn quảng cáo bằng cách nào?

  • Cài thêm phần mở rộng AdBlock hay Adblock Plus trên trình duyệt Chrome / Edge / Firefox?
  • Hay sử dụng các trình duyệt tích hợp sẵn bộ chặn quảng cáo như Brave / Opera?

Thật ra thì cách nào cũng tốt. Nhưng bị hạn chế là nó chỉ giúp bạn chặn quảng cáo khi lướt web, và chỉ chặn khi thiết bị đã được cài đặt. Còn khi sử dụng app, chơi game mobile trên điện thoại hoặc khi sử dụng Smart TV, quảng cáo vẫn cứ nhởn nhơ phá đám.

Để loại bỏ quảng cáo trên mọi thiết bị trong nhà, bạn cần phải sử dụng phương pháp chặn quảng cáo bằng DNS.

Bài viết này mình sẽ hướng dẫn cách cài đặt và sử dụng AdGuard Home – một trong những công cụ chặn quảng cáo bằng DNS phổ biến nhất hiện nay. (Ngoài AdGuard Home, bạn còn có thể sử dụng PiHole với những tính năng gần như tương đồng)

I. AdGuard Home hoạt động ra sao?

AdGuard Home là một ứng dụng được cài đặt trên máy tính, đóng vai trong như là một bộ lọc quảng cáo cho mạng nội bộ. Nhờ đó mọi thiết bị trong mạng sẽ được hưởng lợi không bị quảng cáo làm phiền.

Để hiểu cách AdGuard Home hoạt động, bạn cần phải hiểu cách thiết bị truy vấn thông tin trên Internet.

  • Mỗi khi bạn truy cập một website thông qua tên miền (ví dụ https://thuanbui.me), thiết bị của bạn (trình duyệt web) cần phải biết chính xác địa chỉ IP của tên miền này để có thể tải nội dung về.
  • Để xác định được địa chỉ IP này, trình duyệt sẽ gửi một yêu cầu phân giải tên miền – DNS (Domain name system) đến máy chủ DNS – nơi chứa thông tin địa chỉ IP tương ứng với tất cả tên miền trên thế giới.
  • Máy chủ DNS sẽ phản hồi lại địa chỉ IP của tên miền https://thuanbui.me để trình duyệt tải nội dung cần thiết.
  • Mọi kết nối đến tên miền đều phải thực hiện lại thao tác DNS query này.

Địa chỉ DNS Server thường sẽ được cung cấp tự động từ router gửi đến thiết bị trong nhà mỗi khi kết nối vào mạng thông qua giao thức DHCP. Mặc định, Router sẽ sử dụng DNS Server từ nhà mạng. Hoặc bạn có thể đổi qua sử dụng DNS Server của Google (8.8.8.8, 8.8.4.4) hoặc CloudFlare (1.1.1.1 1.0.0.1).

AdGuard Home chặn quảng cáo bằng cách can thiệp vào kết nối giữa thiết bị đến DNS Server. Nó sẽ đóng vài trò là một máy chủ DNS trung gian, loại bỏ tất cả các truy vấn liên quan đến domain quảng cáo dựa vào bộ lọc có sẵn, và chỉ chuyển tiếp các truy vấn hợp lệ đến DNS Server để phân giải tên miền.

Lưu ý: AdGuard Home sẽ không chặn đc quảng cáo Youtube do các quảng cáo được đặt trên cùng Server với video chính (nên sẽ có cùng IP). Nếu chặn quảng cáo là sẽ chặn luôn video, không xem được.

II. Chuẩn bị đồ nghề

Bạn cần chuẩn bị các mục dưới đây trước khi cài đặt Adguard Home

  • Một máy tính có thể hoạt động liên tục 24/7: PC / Laptop / Máy ảo / Raspberry Pi hoặc Cloud VPS (Digital Ocean / UpCloud / Vultr / Oracle).
  • Máy tính / máy ảo hoặc Cloud VPS cần phải được cài đặt Linux (Ubuntu, CentOS, Debian). Nếu dùng Raspberry Pi thì có thể cài Raspberry Pi OS Lite.
  • Máy tính cài AdGuard Home cần phải được thiết lập sử dụng IP tĩnh (static IP). Nếu bạn dùng Cloud VPS thì không phải bận tâm do VPS đã có sẵn Public IP, còn nếu dùng trên máy tính / máy ảo ở nhà thì phải cần thiết lập IP tĩnh cho thiết bị. Xem hướng dẫn: Ubuntu 20.04, Raspberry Pi.
  • Kiến thức căn bản về Linux, cài đặt mạng gia đình. Nếu không rành thì làm theo đúng từng bước mình hướng dẫn là ổn cả thôi.

Mình cài đặt AdGuard Home trên Raspberry Pi Model B+ (phiên bản Pi 1 ra mắt năm 2014) thấy chạy vô tư. Nên bạn không cần phải lo lắng về cấu hình của máy cài đặt AdGuard Home.

III. Cài đặt AdGuard Home

Có 2 cách để cài đặt AdGuard Home: cài đặt trực tiếp lên OS hoặc cài đặt thông qua Docker. Bài viết này mình sẽ hướng dẫn cả hai cách, tuỳ bạn chọn cách nào tiện lợi hơn cho mình.

1. Cài đặt trực tiếp lên OS

Bạn có thể cài đặt AdGuard Home chỉ bằng 1 dòng lệnh như sau:

curl -s -S -L <https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh> | sh -s -- -v
Code language: Nginx (nginx)

Chờ vài phút cho script xử lý và cài đặt

starting AdGuard Home installation script
channel: release
operating system: linux
cpu type: amd64
AdGuard Home will be installed into /opt/AdGuardHome
checking curl
checking tar
script is executed with root privileges
no need to uninstall
downloading package from <https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz> -> AdGuardHome_linux_amd64.tar.gz
unpacking package from AdGuardHome_linux_amd64.tar.gz into /opt
2021/08/18 14:40:05 [info] Service control action: install
2021/08/18 14:40:06 [info] Service has been started
2021/08/18 14:40:06 [info] Almost ready!
AdGuard Home is successfully installed and will automatically start on boot.
There are a few more things that must be configured before you can use it.
Click on the link below and follow the Installation Wizard steps to finish setup.
2021/08/18 14:40:06 [info] AdGuard Home is available on the following addresses:
2021/08/18 14:40:06 [info] Go to <http://127.0.0.1:3000>
2021/08/18 14:40:06 [info] Go to http://[::1]:3000
2021/08/18 14:40:06 [info] Go to <http://xxx.xxx.xxx.xxx:3000>
2021/08/18 14:40:06 [info] Action install has been done successfully on linux-systemd
AdGuard Home is now installed and running
you can control the service status with the following commands:
sudo /opt/AdGuardHome/AdGuardHome -s start|stop|restart|status|install|uninstall
Code language: YAML (yaml)

Vậy là xong. Bạn có thể truy cập theo URL được ghi trong phần log (Go to http://xxx.xxx.xxx.xxx:3000) để bắt đầu cấu hình AdGuard Home

<http://xxx.xxx.xxx.xxx:3000>Code language: JavaScript (javascript)

Cách này yêu cầu máy của bạn chưa được cài bất kỳ web server nào như Apache, Nginx, Caddy vì AdGuard Home sẽ cần sử dụng Port 80 để truy cập vào giao diện quản lý.

2. Cài đặt bằng Docker

Cách này sẽ tiện lợi hơn trong việc quản lý và xử lý sự cố phát sinh. Ngoài ra bạn còn có thể kết sử dụng AdGuard Home chung với các web server Nginx / Apache.

Bạn cần phải cài đặt Docker trước khi tiếp tục. Xem lại bài viết dưới đây để biết cách cài đặt Docker và Docker-Compose:

Bạn có thể cài đặt ứng dụng thông qua Docker bằng 2 cách: sử dụng command-line hoặc dùng Portainer.

Sử dụng command-line

Tạo file docker-compose.yml thư mục adguardhome để cấu hình dịch vụ

cd ~
mkdir adguardhome
cd adguardhome
nano docker-compose.ymlCode language: Bash (bash)

Nhập nội dung này vào file và lưu lại

version: "2"
services:
  adguardhome:
    image: adguard/adguardhome
    container_name: adguardhome
    ports:
      - 53:53/tcp
      - 53:53/udp
      - 784:784/udp
      - 853:853/tcp
      - 3000:3000/tcp
      - 8080:80/tcp
    volumes:
      - ./workdir:/opt/adguardhome/work
      - ./confdir:/opt/adguardhome/conf
    restart: unless-stoppedCode language: YAML (yaml)

Kích hoạt AdGuard Home bằng lệnh docker-compose up

sudo docker-compose up -dCode language: Nginx (nginx)

Nếu không bị báo lỗi nào khi chạy, AdGuard Home đã khởi tạo thành công. Xem tiếp mục IV. Cấu hình Adguard Home bên dưới để thao tác tiếp.

Nếu bị báo lỗi fail to bind on port 53, hãy kéo xuống xem cách sửa lỗi.

Sử dụng Portainer

Nếu bạn không quen gõ dòng lệnh, hãy sử dụng Portainer để triển khai AdGuard Home trên Docker cho dễ hiểu và trực quan.

Truy cập vào Portainer Dashboard, tab Stacks và tạo Stack mới với thông tin

  • Name: AdGuard Home
  • Web editor: điền thông tin như dưới đây
version: "2"
services:
  adguardhome:
    image: adguard/adguardhome
    container_name: adguardhome
    ports:
      - 53:53/tcp
      - 53:53/udp
      - 784:784/udp
      - 853:853/tcp
      - 3000:3000/tcp
      - 8080:80/tcp
    volumes:
      - ./workdir:/opt/adguardhome/work
      - ./confdir:/opt/adguardhome/conf
    restart: unless-stoppedCode language: YAML (yaml)

Sau đó bấm Deploy the stack, chờ vài phút là xong.

Theo file cấu hình này, mình dùng port 8080 của Host để truy cập vào port 80 của AdGuard Home. Cách này nhằm tránh xung đột với container Nginx Proxy Manager đã sử dụng cổng 80 của Host. Bạn có thể đổi port 8080 thành bất kỳ port nào chưa sử dụng trên Host.

3. Sửa lỗi fail to bind on port 53

Nhiều khả năng khi thiết lập AdGuard Home trên Ubuntu, bạn sẽ bị báo lỗi fail to bind on port 53. Lý do là vì đã có dịch vụ systemd-resolved đang sử dụng port 53 này. Bạn tắt dịch vụ này đi và deploy lại là được.

sudo mkdir -p /etc/systemd/resolved.conf.d/
sudo nano /etc/systemd/resolved.conf.d/adguardhome.conf
Code language: Nginx (nginx)

Điền vào nội dung sau

[Resolve]
DNS=127.0.0.1
DNSStubListener=no

Bấm CTRL + O để lưu lại và bấm CTRL + X để thoát ra

Tiếp theo chạy lệnh này để cập nhật thông số và khởi động lại systemd-resolved

sudo mv /etc/resolv.conf /etc/resolv.conf.backup
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl restart systemd-resolvedCode language: Dockerfile (dockerfile)

Port 53 giờ đã được trả tự do để AdGuard Home sử dụng. Bạn có thể kiểm tra lại bằng lệnh

sudo lsof -i :53Code language: CSS (css)

Nếu không thấy kết quả nào trả lại nghĩa là port 53 đã được tự do.

IV. Cấu hình AdGuard Home

Đầu tiên, bạn cần truy cập vào trang cài đặt AdGuard Home theo địa chỉ http://xxx.xxx.xxx.xxx:3000 trong đó xxx.xxx.xxx.xxx là địa chỉ IP của máy.

1. Thiết lập ban đầu

Bấm Bắt Đầu
Mặc định AdGuard Home sẽ chọn port 80 cho trang Dashboard. Bấm Tiếp
Thiết lập tên đăng nhập và mật khẩu
Bấm Tiếp

Sau khi hoàn thành bước cài đặt này, bạn đổi qua truy cập trực tiếp Dashboard theo port http 80 mặc định

<meta charset="utf-8">http://xxx.xxx.xxx.xxxCode language: JavaScript (javascript)
Đăng nhập vào AdGuard Home
Giao diện chính của AdGuard Home

AdGuard Home có rất nhiều tính năng cho bạn khám phá. Nhưng với mục đích chặn quảng cáo bạn chỉ cần thiết lập thêm 2 bước nữa là xong.

2. Thêm danh sách chặn

Mặc định AdGuard Home đã có sẵn 1 list chặn có tên gọi AdGuard DNS Filter. Bạn có thể truy cập vào mục Filters –> DNS Blocklists để bổ sung thêm các list khác.

AdGuard Home có sẵn 1 số danh sách chặn mặc định khi bấm vào nút Add blocklist để bạn chọn. Ngoài ra, bạn nên bổ sung thêm blocklist này vào (không có sẵn trên AdGuard Home).

https://dbl.oisd.nl/Code language: JavaScript (javascript)

List này có đến hơn 1 triệu dòng, tập hợp đầy đủ mọi danh sách chặn. Yên tâm chặn quảng cáo hiệu quả.

3. Cấu hình upstream DNS

Mặc định, AdGuard sẽ dùng DNS Server từ Quad9. Bạn có thể đổi qua dùng DNS của CloudFlare hoặc Google bằng cách truy cập Settings –> DNS Setting. Sau đó thêm địa chỉ 1.1.1.18.8.8.8 vào danh sách Upstream DNS Servers

Vậy là xong. AdGuard Home đã sàng phục vụ.

V. Thay đổi DNS Server trên Router

Bước cuối cùng bạn cần làm là truy cập vào trang cấu hình Router để thay đổi DNS Server mặc định sang địa chỉ IP của AdGuard Home. Mỗi loại router có cách cấu hình khác nhau nên phần này mình chỉ hướng dẫn trên router mình đang dùng.

Dưới đây là cách thay đổi DNS Server trên Router Mikortik chạy RouterOS v6

  • Kết nối vào Router Mikrotik bằng Winbox
  • Truy cập mục DHCP Server: IP –> DHCP Server
  • Bấm vào mục Networks, double click vào phần địa chỉ
  • Ở mục DNS Servers, đổi lại thành IP Address của máy đang cài AdGuard Home
  • Bấm OK để lưu lại là xong.
Thay đổi DNS Server trên Router Mikrotik

Chúc bạn cài đặt thành công!

Nếu bài viết của mình mang đến thông tin, kiến thức hữu ích cho bạn, đừng ngại mời mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Cám ơn bạn!

Lưu ý: Nếu bạn cần hỗ trợ kỹ thuật, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời sớm. Đừng mò vào hỏi trong fanpage Yêu Chạy Bộ, sẽ không có phản hồi đâu!

Bởi Thuận Bùi

Runner at Yêu Chạy Bộ. Blogger at Ba Lô & Dép Lào. Web Developer at TB's Blog.
Follow me: Facebook / Instagram

29 trả lời trong “Hướng dẫn cài đặt Adguard Home – chặn quảng cáo cho cả nhà”

Chào Thuận,

Mình muốn trao đổi chi tiết thêm nhiều vấn đề liên quan đến bài AGH qua email.
Mình không thấy thông tin về email của bạn trong phần liên hệ.
Bạn cho mình xin thông tin nhé.

Hello,
Có cách nào để mình thay đổi listen interfaces trong ở mục web admin interface và DNS server interface được ko ad?
Khi mình cài AGH xong thì hiện bảng đó, nhưng mình để mặc định tất cả địa chỉ IPv4 và ipv6 luôn, giờ muốn đổi thành local ip của router thôi mà ko biết làm sao.
Cám ơn ad.

Cảm ơn bạn,
Ngoài ra, xem hướng dẫn của bạn thì chỉ cần điền AGH Server vào DNS Server của Wan là dùng được AGH, mình cũng xem hướng dẫn ở nguồn khác bảo là điền AGH Server vào mục DNS Forward (openwrt), mình làm 2 cách điều thấy có hiệu quả. Mình nghĩ thay vì làm như cách của bạn, thì đẩy hết vào DNS Forward sẽ giúp tất cả kết nối vào mạng của bạn đều phải qua AGH Server, kiểu giống như wirehole bạn hướng dẫn ở bài khác.

Không phải router nào cũng có tính năng DNS Forward bạn nhé. Thiết lập của bạn là AdGuard Home nằm trực tiếp trên Router cài OpenWRT, còn thiết lập thông thường là dùng Router bất kỳ + Raspberry Pi / VPS cài AdGuard Home.

Ad ơi cho mình hỏi chút nếu mình cài adguard home lên edgerouter X thì có chặn được quảng cáo trong app hay game trên điện thoại iphone với samsung không ad?
Tại thằng bé con nhà mình lúc chơi game trên ipad nó kêu nhiều quảng cáo trong game quá…hix
Cảm ơn ad nhiều

Mình bị lỗi khi kích hoạt
root@ley:~# sudo docker-compose up -d
ERROR:
Can’t find a suitable configuration file in this directory or any
parent. Are you in the right directory?
Supported filenames: docker-compose.yml, docker-compose.yaml, compose.yml, compose.yaml

Anh ơi cho em hỏi là giờ em đã dùng đc trong local rồi ạ, em muốn share cho bạn bè dùng chung thì em phải Nat ra ngoài net và và bạn em phải set DNS là ip pulic của em đúng ko ạ, và nat ra có phải đổi port 80 ko ạ. Em cảm ơn

mình đang bị lỗi fail to bind on port 53, sudo nano /etc/systemd/resolved.conf.d/adguardhome.conf báo lỗi ko có nano trong power shell và cmd . xin hỏi bạn dùng lệnh chương trình nào, mình thử đổi qua vi etc/systemd/resolved.conf.d/adguardhome.conf
vào được
[Resolve]
DNS=127.0.0.1
DNSStubListener=no
nhưng xài lệnh esc và :wq! thì báo permission denied ko cho ghi và lưu lại

Nếu hệ thống báo lỗi không có nano thì bạn cài đặt nano: sudo apt install nano
Cũng có thể dùng vi, nhưng phải gõ sudo vi ... thì mới không bị lỗi permission denied

mình đã cấu hình ok hết chạy vào được AdGuard home install, nhưng vào báo lỗi máy chủ dns và Web Quản Trị báo validating ports: listen tcp 0.0.0.0:53: bind: address already in use
. xin hỏi dùng lệnh gì để ép nó cho phép , mình đang xài router edgeos

Trả lời Thuận Bùi Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *