Triển khai AdGuard Home & NPMplus bằng Docker Compose (Host Mode)

Cấu hình AdGuard Home kết hợp NPMplus trên Dockage, sử dụng Docker Compose ở chế độ host network, chia sẻ chứng chỉ Let's Encrypt thật, chặn quảng cáo và hỗ trợ DoH/DoQ/Plain DNS.

Triển khai AdGuard Home & NPMplus bằng Docker Compose (Host Mode)

Cấu hình AdGuard Home kết hợp NPMplus trên Dockage, sử dụng Docker Compose ở chế độ host network, chia sẻ chứng chỉ Let’s Encrypt thật, chặn quảng cáo và hỗ trợ DoH/DoQ.


🧭 Giới thiệu

Bài viết hướng dẫn triển khai AdGuard HomeNginx Proxy Manager Plus (NPMplus) trên Dockage,
chạy ở chế độ host network để tối ưu hiệu năng và truy cập trực tiếp cổng hệ thống.

Mục tiêu:

Máy chủ ví dụ:
📍 Site Hải Phòng — Debian 13 (192.0.2.2)


1️⃣ NPMplus: Proxy & Chứng chỉ

 1services:
 2  npmplus:
 3    container_name: npmplus
 4    image: docker.io/zoeyvid/npmplus:latest
 5    restart: unless-stopped
 6    network_mode: host
 7    volumes:
 8      - ./npmplus:/data
 9    environment:
10      - TZ=Asia/Ho_Chi_Minh
11      - [email protected]
12      - [email protected]
13      - INITIAL_ADMIN_PASSWORD=yourpassword

Giải thích:


2️⃣ AdGuard Home: DNS server bảo mật

 1services:
 2  adguardhome:
 3    container_name: adguardhome
 4    image: adguard/adguardhome:latest
 5    restart: unless-stopped
 6    network_mode: host
 7    volumes:
 8      - ./workdir:/opt/adguardhome/work
 9      - ./confdir:/opt/adguardhome/conf
10      - /opt/stacks/npmplus/npmplus/tls/certbot/archive/npm-your-cert:/opt/adguardhome/certs:ro
11    environment:
12      - TZ=Asia/Ho_Chi_Minh

Giải thích:


3️⃣ Cấu hình AdGuard Home

 1http:
 2  address: 0.0.0.0:0
 3dns:
 4  bind_hosts: [0.0.0.0]
 5  port: 53
 6  upstream_dns:
 7    - quic://dns.nextdns.io
 8    - https://dns.nextdns.io
 9  serve_http3: true
10tls:
11  enabled: true
12  server_name: your.dns.domain
13  strict_sni_check: true
14  certificate_path: /opt/adguardhome/certs/fullchain1.pem
15  private_key_path: /opt/adguardhome/certs/privkey1.pem
16  port_https: 9443
17  port_dns_over_quic: 853

Điểm quan trọng:


4️⃣ Proxy DoH trong NPMplus (path-based ClientID)

 1location ~ ^/dns-query(/.*)?$ {
 2    set $clientid "";
 3    if ($1 != "") { set $clientid $1; }
 4
 5    proxy_pass https://127.0.0.1:9443/dns-query;
 6    proxy_ssl_name your.dns.domain;
 7    proxy_ssl_verify off;
 8
 9    proxy_set_header Host $host;
10    proxy_set_header X-Client-ID $clientid;
11    proxy_set_header X-Real-IP $remote_addr;
12}

Kết quả:


5️⃣ Định danh ClientID

 1clients:
 2  persistent:
 3    - name: HaiPhong Workgroup (FPT)
 4      ids: [192.168.2.0/24]
 5      tags: [user_regular, site_haiphong]
 6
 7    - name: Windows YogaDNS (Hanoi VNPT)
 8      ids: [100.68.0.11, 192.168.3.10, hn-p1]
 9      tags: [device_pc, os_windows, site_hanoi]
10
11    - name: iPhone15 (HaiPhong 5G)
12      ids: [my-ip15]
13      tags: [device_phone, os_ios, site_haiphong]
14
15    - name: Android ZTE (Hanoi 5G)
16      ids: [me-zte]
17      tags: [device_phone, os_android, site_hanoi]
18
19    - name: Laptop Dell3558 (Linux)
20      ids: [my-d58]
21      tags: [device_laptop, os_linux]

6️⃣ Cấu hình Client

Thiết bị Ứng dụng Giao thức Endpoint Ghi chú
Máy bàn Windows (Hà Nội – VNPT) YogaDNS Plain DNS (UDP) udp://192.168.2.2 (qua Tailscale subnet)
hoặc udp://100.68.x.x (IP Tailscale của AdGuard server)
Kết nối từ Hà Nội tới máy chủ AdGuard tại Hải Phòng qua VPN Tailscale, có thể đi bằng subnet route hoặc IP Tailscale trực tiếp. Dùng plain DNS (UDP) để đạt tốc độ và độ ổn định cao nhất.
iPhone (Hải Phòng) Profile iOS DoH https://your.dns.domain/dns-query/my-ip15 ClientID theo path
Android (Hà Nội – 5G) RethinkDNS DoH https://your.dns.domain/dns-query/me-zte ClientID theo path
Laptop Dell3558 (Linux) smartdns DoQ quic://my-d58.your.dns.domain Dành cho kết nối public qua Internet

❌ Vì sao không nên chọn cập nhật IP động (DDNS/GoDNS) cho production

Khuyến nghị:
Ưu tiên IP tĩnh hoặc VPN (site-to-site / client). Chỉ dùng DDNS/GoDNS như phương án tạm thời khi buộc phải công bố dịch vụ qua Internet mà không có IP tĩnh/VPN.


🌐 Mở rộng sau này: Kết nối site-to-site

Hiện hệ thống triển khai tại site Hải Phòng, đóng vai trò máy chủ DNS trung tâm.
Trong tương lai, nếu cần mở rộng đến site Hà Nội hoặc các chi nhánh khác,
có thể thiết lập VPN site-to-site (WireGuard, Tailscale hoặc OpenVPN)
để chia sẻ cùng hệ thống DNS bảo mật này.

Ví dụ khi mở rộng:

Site Mạng nội bộ Nhà mạng Vai trò
Hải Phòng 192.168.2.0/24 FPT Máy chủ chính (AdGuard + NPMplus)
Hà Nội 192.168.3.0/24 VNPT Site phụ (kết nối qua VPN)

Lợi ích khi mở rộng:


7️⃣ Kiểm tra DNS

1doggo example.com @udp://192.0.2.2 --time
example.com.  A  IN  23.215.0.136  udp://192.0.2.2  3ms

✅ DNS LAN hoạt động ổn định, phản hồi nhanh qua cổng 53.


📘 Kết luận

Hệ thống DNS bảo mật, chặn quảng cáo toàn mạng,
hỗ trợ DoH / DoQ / Plain DNS / LAN DNS,
hoạt động ổn định 24/7 và dễ quản lý qua Dockage.


💡 Ghi chú:

#AdGuard Home   #NPMplus   #Docker Compose   #Dockage   #DNS   #DoH   #DoQ   #Plain DNS   #Chặn quảng cáo