วิธีตั้งค่า AdGuard Home บน VPS
ติดตั้ง AdGuard Home บน Ubuntu ทำวิซาร์ดรอบแรกให้จบ ล็อกเว็บ UI เปิด DNS-over-HTTPS และ DNS-over-TLS ชี้เครื่องไปที่ตัวแก้ชื่อของคุณ และหลีกเลี่ยงการรันเซิร์ฟเวอร์ DNS เปิดที่ทั้งอินเทอร์เน็ตใช้ในทางที่ผิดได้

AdGuard Home คือ DNS sinkhole ที่โฮสต์เองและตัวแก้ชื่อแบบเกือบเรียกซ้ำ พร้อมอินเทอร์เฟซเว็บ มันบล็อกโฆษณา ตัวติดตาม และโดเมนมัลแวร์ให้ทุกเครื่องที่ใช้มันเป็น DNS — โทรศัพท์ แล็ปท็อป สมาร์ททีวี และโปรเจกต์ VPS อื่น ไม่เหมือนส่วนขยายเบราว์เซอร์ มันยังใช้ได้แม้กับแอปที่เพิกเฉยไฟล์ hosts การรันบน VPS มีประโยชน์เมื่อต้องการกรองชุดเดียวกันตอนเดินทาง หรือไม่ต้องการ Raspberry Pi บนเครือข่ายบ้าน
ค่าเริ่มต้นอันตรายที่ห้ามส่งออกคือตัวแก้ชื่อเปิด: ถ้า UDP/TCP 53 ถึงได้จากทั้งอินเทอร์เน็ตโดยไม่มีการควบคุมการเข้าถึง คนแปลกหน้าจะใช้ VPS ของคุณขยาย DNS และคุณจะได้เรื่องร้องเรียนการใช้ในทางที่ผิด คู่มือนี้ติดตั้ง AdGuard Home บน Ubuntu ผูก DNS กับ localhost หรืออินเทอร์เฟซ WireGuard ส่วนตัวเว้นแต่คุณตั้งใจเปิด DNS เข้ารหัส วางแดชบอร์ดบน HTTPS และแสดงให้แล็ปท็อปกับโทรศัพท์ใช้ DNS-over-HTTPS (DoH) หรือ DNS-over-TLS (DoT) โดยไม่เปิดพอร์ต 53 แบบคลาสสิกสู่โลก
AdGuard Home เหมาะกับอะไร
การเปรียบเทียบปกติคือ Pi-hole AdGuard Home เป็นไบนารีเดียวพร้อมเว็บ UI ในตัว ฟรอนต์เอนด์ DNS เข้ารหัสทางเลือก และการตั้งค่าต่อไคลเอนต์ คุณรันใน Docker หรือเป็นบริการ systemd ได้ บน VPS Hiddence มันจับคู่ดีกับ VPN ส่วนตัว: เครื่องเข้าร่วม WireGuard ส่ง DNS ไป VPS ผ่านอุโมงค์ และไม่เปิดพอร์ต 53 สาธารณะ
- บล็อกทั้งเครือข่ายโดยไม่ต้องติดตั้งแอปบนทุกเครื่อง
- DoH (443) และ DoT (853) เพื่อให้ DNS ไม่เป็นข้อความชัดบน Wi-Fi สาธารณะ
- ล็อกคิวรีและสถิติเพื่อเห็นว่าเครื่องไหนคุยกับโดเมนไหน
- อัปสตรีมกำหนดเอง (Quad9, Cloudflare หรือ Unbound ของคุณ)
- พื้นที่ใช้น้อย — VPS 1 GB กรองครัวเรือนบวกไคลเอนต์เพิ่มไม่กี่เครื่องได้
ความต้องการ
คุณต้องมีโดเมนถ้าต้องการใบรับรองที่เชื่อถือได้สำหรับ DoH/DoT และแดชบอร์ด ทดสอบบน HTTP กับ IP เซิร์ฟเวอร์ก่อนได้ แต่ห้ามทิ้งไว้แบบนั้น ถ้า systemd-resolved ครองพอร์ต 53 บน Ubuntu อยู่แล้ว เราจะปลดก่อนที่ AdGuard Home จะผูก DNS
- VPS Ubuntu 22.04 หรือ 24.04 พร้อม root/sudo
- RAM 1 GB พอสำหรับใช้ส่วนตัว
- โดเมนหรือซับโดเมน (dns.example.com) ที่มีเรคคอร์ด A ไป VPS
- เข้าถึง SSH WireGuard เป็นทางเลือกถ้าต้องการ DNS เฉพาะในอุโมงค์
ขั้นตอนที่ 1: ปลดพอร์ต 53 และติดตั้ง AdGuard Home
Ubuntu Server มักรัน systemd-resolved เป็น stub บน 127.0.0.53:53 AdGuard Home ต้องการ 53 บนอินเทอร์เฟซที่คุณเลือก ตัวติดตั้งทำได้ แต่ทำอย่างชัดเจนช่วยเลี่ยง DNS พังครึ่ง ๆ บนตัว VPS (เซิร์ฟเวอร์ยังต้องแก้ชื่อแพ็กเกจ)
ssh root@YOUR_VPS_IP
apt update && apt -y upgrade
apt -y install curl ca-certificates
# See who owns port 53:
ss -tulpn | grep ':53'
# Typical Ubuntu fix: stop stub listener, point the OS at a temporary resolver
mkdir -p /etc/systemd/resolved.conf.d
cat >/etc/systemd/resolved.conf.d/adguardhome.conf <<'EOF'
[Resolve]
DNS=1.1.1.1
DNSStubListener=no
EOF
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
systemctl restart systemd-resolved
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -vขั้นตอนที่ 2: วิซาร์ดรอบแรก
ตัวติดตั้งพิมพ์ URL มักเป็น http://YOUR_IP:3000/ เปิด สร้างผู้ใช้ผู้ดูแลด้วยรหัสผ่านยาว และเลือกที่อยู่ฟัง สำหรับ VPS สาธารณะ การตั้งรอบแรกที่ปลอดภัยคือ Admin Web บน 127.0.0.1:3000 (คุณจะวาง Caddy ด้านหน้า) หรือบน 80/443 หลัง TLS DNS ฟังบน 127.0.0.1:53 บวกอินเทอร์เฟซ VPN ไม่ใช่บน 0.0.0.0:53 ถ้าคุณต้องการ DNS แบบ LAN สำหรับเพื่อนจริง ๆ ให้เลือก DoH/DoT บน 443/853 พร้อมการยืนยันตัวตน ไม่ใช่ 53/udp เปิด
เลือกเซิร์ฟเวอร์ DNS อัปสตรีมที่คุณไว้ใจ หลายคนใช้ https://dns.quad9.net/dns-query หรือ Cloudflare เปิดคำขอขนานถ้าต้องการล้มเหลวแล้วสลับเร็วขึ้น เปิดรายการกรองเริ่มต้น แล้วค่อยเพิ่มทีหลัง — เปิดห้าสิบริายการในวันแรกทำให้ดีบักไม่ได้เมื่อไซต์พัง
ขั้นตอนที่ 3: รีเวิร์สพร็อกซีและ HTTPS สำหรับแดชบอร์ด
เมื่อวิซาร์ดจบ AdGuard Home มักย้าย UI ไปพอร์ต 80 นั่นชนกับ Caddy หรือ Nginx ถ้าคุณโฮสต์ไซต์ด้วย แพทเทิร์นสะอาดคือ เว็บ AdGuard Home บน 127.0.0.1:8080 DNS บน 127.0.0.1:53 Caddy บน 443 สำหรับทั้งแดชบอร์ดและ DoH
# In AdGuard Home settings, bind the web UI to 127.0.0.1:8080
# Example Caddyfile:
dns.example.com {
reverse_proxy 127.0.0.1:8080
}
# After Caddy is up:
curl -I https://dns.example.comขั้นตอนที่ 4: เปิด DNS-over-HTTPS และ DNS-over-TLS
ในตั้งค่า Encryption เปิดการเข้ารหัส ตั้งชื่อเซิร์ฟเวอร์เป็น dns.example.com และชี้ AdGuard Home ไปไฟล์ใบรับรอง — ที่ Caddy เก็บ หรือใบรับรองที่ AdGuard Home ออกเองถ้าฟังบน 443 DoH มักเป็น https://dns.example.com/dns-query DoT คือ dns.example.com:853 ถ้า Caddy ครอง 443 แล้ว ให้ Caddy จบ TLS แล้วรีเวิร์สพร็อกซีพาธ DoH ไปพอร์ต DoH HTTP ธรรมดาของ AdGuard Home หรือให้ AdGuard Home ฟัง 443 แล้ววางแดชบอร์ดบนซับโดเมนอื่น
ตรวจด้วยไคลเอนต์ก่อนเปลี่ยนทุกเครื่อง บนแล็ปท็อปที่มี curl สมัยใหม่:
curl -H 'accept: application/dns-json' 'https://dns.example.com/dns-query?name=example.com&type=A'
# DoT test (kdig from knot-dnsutils, if installed):
# kdig @dns.example.com +tls-ca +tls-host=dns.example.com example.comขั้นตอนที่ 5: ชี้เครื่องจริงไปที่ตัวแก้ชื่อของคุณ
Windows 11 และ Android รุ่นใหม่ใช้เทมเพลต DoH ได้ iOS ใช้โปรไฟล์คอนฟิกหรือไคลเอนต์ที่รองรับ DoH Firefox และ Chromium ก็อนุญาต URL DoH กำหนดเอง สำหรับเราเตอร์บ้าน ตั้ง WAN DNS เฉพาะเมื่อเราเตอร์รองรับ DoT/DoH ไม่งั้นรัน WireGuard แล้วตั้ง DNS เป็น IP VPN ของ VPS เพื่อไม่ให้ DNS คลาสสิกข้ามอินเทอร์เน็ต
- Android 9+: DNS ส่วนตัว (DoT) → dns.example.com
- Firefox: การตั้งค่า → เครือข่าย → DNS over HTTPS → URL กำหนดเอง https://dns.example.com/dns-query
- อุปกรณ์ Apple: mobileconfig ที่ลงนามแล้ว หรือแอปที่รองรับ DoH/DoT
- VPS อื่น: ตั้ง resolv.conf หรือ systemd-resolved เป็น IP WireGuard ของอินสแตนซ์ AdGuard นี้
- หลีกเลี่ยงการตั้ง IP VPS นี้เป็น DNS บนเครือข่ายสาธารณะสุ่มโดยไม่เข้ารหัส
ขั้นตอนที่ 6: ไฟร์วอลล์ — ปิด DNS เรียกซ้ำแบบเปิด
ส่วนนี้กันเซอร์ไพรส์ไม่พึงประสงค์ อนุญาต SSH, HTTPS และ 853/tcp สำหรับ DoT ตามต้องการ อย่าอนุญาต 53/udp จาก 0.0.0.0/0 เว้นแต่คุณมีการออกแบบเฉพาะมาก มีจำกัดอัตรา และยืนยันตัวตน — และแม้ตอนนั้น คุณก็ไม่ควรทำ
ufw allow OpenSSH
ufw allow 443/tcp comment 'dashboard + DoH'
ufw allow 853/tcp comment 'DoT'
# If DNS is only on WireGuard (example iface wg0, 10.8.0.1):
# ufw allow in on wg0 to any port 53 proto udp
ufw enable
ufw status verbose
# Confirm 53 is not public:
ss -tulpn | grep ':53'ตัวกรอง รายการอนุญาต และไคลเอนต์
เริ่มด้วยตัวกรอง DNS เริ่มต้นของ AdGuard และรายการมัลแวร์หนึ่งรายการ เมื่อไซต์ประพฤติผิด ให้ดูล็อกคิวรี แล้วเพิ่มกฎอนุญาตเฉพาะ แทนการปิดการบล็อกทั้งหมด ใช้ชื่อไคลเอนต์ (ตาม IP หรือ ClientID ใน URL DoH) เพื่อใช้รายการเข้มกับสมาร์ททีวีและหลวมกับแล็ปท็อปทำงาน เปิดการค้นหาปลอดภัยเฉพาะเมื่อคุณต้องการจริง ๆ — มันทำให้คนที่ไม่ได้ขอก็ตกใจเมื่อผล Google ถูกเขียนใหม่
- ล็อกคิวรี: หาโดเมนที่ถูกบล็อก แล้ว whitelist ถ้าเป็นผลบวกลวง
- ตั้งค่าไคลเอนต์: รายการบล็อกต่างกันต่ออุปกรณ์
- ไคลเอนต์ที่ไม่อนุญาต: บล็อกช่วงที่คุณไม่ได้เป็นเจ้าของ
- จำกัดอัตรา: เปิดถ้าคุณเคยเปิดให้ผู้ใช้เกินกำมือ
แก้ปัญหา
ถ้าตัว VPS apt update ไม่ได้ คุณทำ DNS ท้องถิ่นพังตอนปลดพอร์ต 53 — ใส่ตัวแก้ชื่อคงที่ใน resolved.conf ตามด้านบน ถ้าเครื่อง 'มีเน็ต' แต่โฆษณายังโหลด พวกมันเลี่ยง DNS ของคุณ (ตัวแก้ชื่อฮาร์ดโค้ด DoH ในเบราว์เซอร์ หรือแอปใช้ DNS ของตัวเอง) ถ้าแดชบอร์ดว่าง คุณกำลังดูอินสแตนซ์ผิด หรือยังยิงพอร์ต 3000 หลังวิซาร์ดย้าย UI แล้ว
- apt ล้มเหลว: ตรวจ /etc/resolv.conf และ systemd-resolved
- พอร์ต 53 ถูกใช้: ss -tulpn ปิด stub listener
- ข้อผิดพลาดใบรับรอง DoH: ชื่อโฮสต์ต้องตรงกับ SAN ของใบรับรอง
- ยังเห็นโฆษณา: DoH ของเบราว์เซอร์ไปผู้ให้บริการอื่นทับ OS
- RAM สูง: ล็อกคิวรี + รายการกรองมากเกินไป — ตัดรายการและย่อการเก็บล็อก
รายการตรวจความปลอดภัย
เว็บ UI คือแผงผู้ดูแล รหัสผ่านไม่ซ้ำ เฉพาะ HTTPS และอย่าเผยแพร่ URL อัปเดต AdGuard Home อยู่เสมอ ทั้งสคริปต์ติดตั้งและ UI มีเส้นอัปเดต จำกัด 443 ถ้ามีแค่เครื่องคุณที่ควรใช้ DoH — HTTP basic auth บนพาธ DoH หรือเข้าได้เฉพาะ WireGuard ปลอดภัยกว่าตัวแก้ชื่อเปิดที่โด่งดังมาก
- ไม่มี 53/udp สาธารณะ
- HTTPS บนแดชบอร์ด
- รหัสผ่านผู้ดูแลแข็งแรง เก็บในตัวจัดการรหัสผ่าน
- เลือก WireGuard + DNS ภายในสำหรับเครื่องครอบครัว
- สำรอง AdGuardHome.yaml ออกนอกเซิร์ฟเวอร์
เคล็ดลับ
- สำรอง /opt/AdGuardHome/AdGuardHome.yaml ก่อนอัปเกรดทุกครั้ง
- ใช้ซับโดเมนเฉพาะ อย่าแชร์กับ CMS ที่ไม่เกี่ยวกับ
- ถ้ารัน Caddy อยู่แล้ว ให้ Caddy ครอง 443 และเก็บ AdGuard Home บน localhost
- จด URL DoH สำหรับเครื่องของคุณ — คุณจะลืม
- จับคู่กับคู่มือเสริม SSH และไฟร์วอลล์ เพื่อไม่ให้ VPS 'ปลอดภัยแค่ DNS'
AdGuard Home บน VPS ตรงไปตรงมา: ปลดพอร์ต 53 ท้องถิ่น รันตัวติดตั้ง จบวิซาร์ดด้วยรหัสผ่านผู้ดูแลแข็งแรง วาง UI บน HTTPS เปิด DoH/DoT และเก็บ DNS คลาสสิกออกจากอินเทอร์เน็ตสาธารณะ ชี้เครื่องไปจุดปลายเข้ารหัสหรือ IP VPN เริ่มด้วยชุดกรองเล็ก และใช้ล็อกคิวรีเมื่อมีอะไรพัง นั่นคือตัวแก้ชื่อส่วนตัวที่คุณควบคุมจริง — ไม่ใช่ DNS เปิดสาธารณะที่จะทำให้ VPS ถูกขึ้นฐานข้อมูลการใช้ในทางที่ผิด