Hướng dẫn đầy đủ về cách cài đặt Pi-hole với Docker

Cập nhật lần cuối: 30 Tháng Tám 2026

Bạn mệt mỏi vì bị làm phiền bởi quảng cáo mỗi khi duyệt web hoặc sử dụng ứng dụng di động? Vậy thì, có một giải pháp tuyệt vời gọi là Pi-hole, về cơ bản hoạt động như một bộ lọc DNS thông minh . Điều tuyệt vời nhất là bạn không cần phải cài đặt bất cứ thứ gì trên từng thiết bị trong nhà; hệ thống hoạt động từ lõi mạng của bạn, chặn và loại bỏ nội dung không mong muốn trước khi nó đến màn hình của bạn.

Để thiết lập hệ thống này, lựa chọn thông minh nhất hiện nay là sử dụng Docker. Bằng cách đặt Pi-hole vào trong một container, bạn tránh được việc làm rối hệ điều hành của máy tính, giúp việc cập nhật trở nên cực kỳ dễ dàng và tận dụng tối đa phần cứng của mình — cho dù đó là Raspberry Pi, một máy chủ cũ hay thậm chí là một máy ảo chạy Ubuntu hoặc Debian — mà không gây ra bất kỳ xung đột dịch vụ nào.

Chặn quảng cáo bằng Pi-hole
Bài viết liên quan:
Hướng dẫn đầy đủ về cách chặn quảng cáo bằng Pi-hole

Điều kiện tiên quyết và chuẩn bị địa điểm

Trước khi đi sâu vào chi tiết, cần lưu ý rằng Pi-hole cực kỳ nhẹ. Để chạy mượt mà, bạn chỉ cần khoảng 512 MB RAM và từ 2 đến 4 GB dung lượng ổ cứng. Về hệ điều hành, nó hoạt động hoàn hảo với các bản phân phối sử dụng systemd hoặc sysvinit, chẳng hạn như Debian, Ubuntu, Fedora hoặc Raspberry Pi OS.

Một điểm quan trọng là mạng. Để hệ thống hoạt động ổn định, Pi-hole yêu cầu địa chỉ IP tĩnh . Nếu bạn không muốn mất công cấu hình máy chủ thủ công, bạn có thể dành riêng một địa chỉ IP trên bộ định tuyến của mình để nó luôn gán cùng một địa chỉ cho máy tính đang chạy container.

  Webminal là gì: Thiết bị đầu cuối Linux trực tuyến để học tập

Triển khai Pi-hole bằng Docker

Cách dễ nhất để thiết lập điều này là thông qua tệp docker-compose.yml . Phương pháp này cho phép bạn định nghĩa tất cả cấu hình cùng một lúc. Điều quan trọng là phải ánh xạ các volume (chẳng hạn như /etc/pihole và /etc-dnsmasq.d) vào các thư mục cục bộ trên máy chủ của bạn để nếu bạn cập nhật ảnh container, bạn sẽ không bị mất tất cả cấu hình hoặc danh sách đen của mình.

Máy vi tính Raspberry Pi trong vỏ trong suốt, thể hiện phần cứng của máy chủ Pi-hole.
Bài viết liên quan:
Hướng dẫn đầy đủ về Pi-hole và Unbound để bảo vệ quyền riêng tư trực tuyến

Trong file cấu hình, hãy chú ý đến các cổng. Cổng 53 là trái tim của DNS và phải được giải phóng. Nếu bạn thấy container không khởi động được, rất có thể systemd-resolved hoặc dnsmasq đang sử dụng cổng đó trên máy chủ. Trong những trường hợp đó, bạn cần tắt dịch vụ gây xung đột hoặc cấu hình cầu nối để chuyển hướng lưu lượng truy cập.

Nếu bạn quyết định sử dụng Pi-hole làm máy chủ DHCP, hãy nhớ thêm quyền NET_ADMIN vào phần cap_add của tệp compose và tốt nhất là sử dụng chế độ mạng máy chủ (network_mode: host) để tránh các sự cố kết nối.

Thiết lập ban đầu và quản lý quyền truy cập

Sau khi bạn thực thi lệnh docker-compose up -dHệ thống sẽ hoạt động. Để truy cập bảng điều khiển, hãy kết nối với địa chỉ IP của máy chủ thông qua cổng bạn đã chỉ định (mặc định là 80, nhưng bạn có thể thay đổi thành 8080 hoặc 89 để tránh xung đột với các máy chủ web khác). Nếu bạn chưa thiết lập mật khẩu trong biến môi trường... Mật khẩu webHệ thống sẽ tạo ra một mã ngẫu nhiên mà bạn có thể tìm thấy bằng cách kiểm tra nhật ký với lệnh. docker logs pihole | grep random.

Để tăng cường bảo mật, tốt nhất là nên thay đổi mật khẩu đó càng sớm càng tốt. Bạn có thể truy cập vào thiết bị đầu cuối container bằng cách sử dụng docker exec -it pihole /bin/bash và chạy lệnh pihole -a -p Đặt mật khẩu sao cho bạn dễ nhớ nhưng người khác khó nhớ.

  5 Công cụ để Học Lập trình Python

Lọc dữ liệu đầu vào và tối ưu hóa DNS

Để đảm bảo Pi-hole biết cần truy vấn máy chủ nào khi không nhận dạng được địa chỉ IP, bạn cần cấu hình máy chủ DNS thượng nguồn. Một lựa chọn rất mạnh mẽ là Quad9 ; chỉ cần chọn các máy chủ được lọc của nó (chẳng hạn như 9.9.9.9) trong tab cài đặt DNS. Điều này bổ sung thêm một lớp bảo mật và quyền riêng tư cho việc duyệt web của bạn.

Cốt lõi của Pi-hole chính là các danh sách chặn. Nếu bạn muốn bắt đầu với một danh sách vững chắc, bạn có thể thêm danh sách của StevenBlack . Bất cứ khi nào bạn sửa đổi danh sách, cho dù bằng cách xóa các mục bằng SQLite3 hay thêm URL mới, điều cần thiết là phải vào Tools và chạy Update Gravity để cơ sở dữ liệu được làm mới và các thay đổi có hiệu lực.

Mẹo nâng cao: Tên miền cục bộ và quản lý

Nếu bạn có nhiều dịch vụ tại nhà, bạn có thể tạo tên miền cục bộ Để tránh phải nhớ địa chỉ IP. Để làm điều này, hãy tạo một tệp có tên là local.list Trên phân vùng Pi-hole đã được gắn kết, hãy xác định định dạng IP và tên miền. Sau đó, tạo một tệp cấu hình cho dnsmasq tham chiếu đến danh sách đó và khởi động lại container.

Để quản lý hệ thống mà không cần truy cập vào trang web, có rất nhiều lệnh hữu ích bạn có thể chạy từ máy chủ. Ví dụ, để thêm một tên miền vào danh sách đen, hãy sử dụng `pihole -b mydomain.com` , hoặc để tạm thời vô hiệu hóa bộ lọc trong 10 phút, bạn có thể sử dụng `pihole disable 10m` , rất tiện dụng khi một trang web hợp pháp bị chặn nhầm.

Việc kiểm soát quảng cáo tại nhà hoàn toàn khả thi bằng cách kết hợp phần cứng khiêm tốn với tính linh hoạt của Docker, đảm bảo cổng 53 được thông suốt và cấu hình đúng cách các volume để lưu trữ dữ liệu. Sau khi bạn đã điều chỉnh DNS trên bộ định tuyến và tối ưu hóa danh sách Gravity, bạn sẽ tận hưởng một mạng lưới sạch hơn và nhanh hơn nhiều trên tất cả các thiết bị của mình.

Hình ảnh cận cảnh bo mạch Raspberry Pi với các linh kiện điện tử, vi mạch và cổng kết nối hiển thị trên bề mặt, lý tưởng để minh họa phần cứng chính của hướng dẫn.
Bài viết liên quan:
Hướng dẫn đầy đủ về cách cài đặt và tối ưu hóa AdGuard Home trên Raspberry Pi