Cập nhật 10/2024: Bổ sung clip Youtube hướng dẫn cài đặt Adguard Home
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)
Mục Lục
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.
Xem clip Youtube hướng dẫn:
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.yml
Code 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-stopped
Code language: YAML (yaml)
Kích hoạt AdGuard Home bằng lệnh docker-compose up
sudo docker-compose up -d
Code 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-stopped
Code 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-resolved
Code 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 :53
Code 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
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.xxx
Code language: JavaScript (javascript)
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.1
và 8.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.
Chúc bạn cài đặt thành công!
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é.
Bạn gửi thông tin trên trang liên hệ nó sẽ tự động gửi email cho mình.
Cảm ơn bạn đã hướng dẫn!
Cảm ơn bạn rất nhiều vì những bài viết chất lượng.
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ách nhanh nhất là bạn xoá AGH rồi cài lại và chỉnh lại thông số cho đúng.
Trên Router OpenWRT thì xóa như nào bạn?, mình ko biết nên trước giờ toàn reset router rồi cài lại từ đầu, thấy khá mất time.
Cảm ơn bạn.
Mình không rành OpenWRT nên không rõ cách làm. Nhưng thấy có hướng dẫn ở đây: https://openwrt.org/docs/guide-user/services/dns/adguard-home , bạn có thể xoá bằng lệnh
opkg remove adguardhome
rồi cài lại.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.
Cho em hỏi sao em set up hết rồi, nó cũng chặn đc ads rồi nhưng mà Chrome trên win chỉ chặn đc 1 lúc xong f5 thì vẫn xuất hiện quảng cáo lại bth ạ
Bạn cho mình hỏi mình cái adguard home lên vps thì khi mình thêm dns vào router mikrotik thì là địa chỉ của vps đúng không nhỉ
Đúng rồi bạn.
Có cách nào cấu hình sử dụng DNS over Https của adguard home thông qua nginx reverse proxy không bạn?
Mình chưa có nhu cầu xài DNS over https nên chưa mò tới phần này, ko biết bạn ơi.
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
Không chặn được 100% bạn nhé. Lâu lâu mình vẫn bị quảng cáo trong app / game điện thoại
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
Lỗi này là do trong thư mục hiện tại không có file docker-compose.yml
Mình cài cái này xong cài v2ray được không bạn
oracle sao em cài đến đoạn thêm visa bị lỗi vạ ạ? mong a giải thích cho em
Oracle hiện tại rất kén thẻ VISA Việt Nam nhé, không phải thẻ nào cũng đăng ký được.
Hi Thuận Bùi,
Mình cũng có cài AGH nhưng khi vào App Store nó lại chặn. Bên bạn có bị như vậy không ?
Mình không bị lỗi đó. Cái này là do trong block list có bạn có rule nào đó chặn App Store rồi. Cần xem lại đổi block list khác.
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
Đúng rồi bạn nhé. Nhưng dùng cho DNS thì phải chỉnh port 53, không cần chỉnh port 80.
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 deniedmì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
admin có thể làm thêm cái hướng dẫn kết hợp giữa Adguard Home và Unbound được không? Xin cảm ơn!
Chao ban,
minh lam toi buoc nay thi bi loi bash meta nhu ben duoi
http://xxx.xxx.xxx.xxx
bash: meta: No such file or directory
Anh cho em hỏi “orange pi zero 3 1GB RAM” (tầm 500k) phù hợp chạy Adguard home không ạ? Em định ngoài Adguard home thì chạy thêm JDownloader2 và qBittorrent. Không biết có full load cpu không. Tại thấy giá dòng orange pi rẻ mà cấu hình lại cao hơn nhiều so với Rasberry.
Con này chắc là dư xăng để chạy rồi bạn. Nếu ngại Adguard nặng thì chuyển qua chạy Pi-Hole. Mình vẫn đang chạy Pi-Hole trên con Raspberry Pi 1B 512MB RAM đời đầu ngon lành.
Dạ em cảm ơn anh đã tư vấn.
Em đang có khoảng 1tr7 record trong blocklist. Và check htop thấy Adguard Home chiếm dụng cỡ 250MB thì có bình thường không anh?
Avg DNS process time cỡ 300ms ạ.
Blocklist càng bự thì càng tốn RAM. Nếu hệ thống có 256MB RAM mà Adguard chiếm 250MB thì không bình thường. Còn RAM dư dả thì cứ kệ nó thôi em. Nếu mọi thứ vẫn đang hoạt động ổn định thì đừng quan tâm tới nó.
Chào a.
Em muốn hỏi có cách nào public adguard cho các thiết bị ngoài mạng luôn không, em muốn dùng wireguard trỏ ngược về server. Thank anh
Nếu muốn chặn quảng cáo khi dùng WireGuard thì xài cái WireHole-UI này cho tiện luôn nhé: https://thuanbui.me/wirehole-ui-wireguard-vpn-server-dns-chan-quang-cao/
Mình chưa có thời gian ngồi mò thay thế Pi-Hole bằng AdGuard khi kết hợp với WireGuard