Paano I-set Up ang AdGuard Home sa VPS
I-install ang AdGuard Home sa Ubuntu, tapusin ang first-run wizard, i-lock ang web UI, i-enable ang DNS-over-HTTPS at DNS-over-TLS, ituro ang devices sa resolver mo, at iwasang magpatakbo ng open DNS server na maaabuso ng buong internet.

Ang AdGuard Home ay self-hosted DNS sinkhole at recursive-style resolver na may web interface. Kaya nitong mag-block ng ads, trackers, at malware domains para sa bawat device na gumagamit nito bilang DNS — phones, laptops, smart TVs, at ibang VPS projects. Hindi tulad ng browser extension, gumagana ito kahit sa apps na hindi pinapansin ang hosts files. Kapaki-pakinabang ang pagpapatakbo nito sa VPS kapag gusto mo ng parehong filtering sa daan, o ayaw mo ng Raspberry Pi sa home network.
Ang delikadong default na hindi mo dapat i-ship ay open resolver: kung maaabot ang UDP/TCP 53 mula sa buong internet nang walang access control, gagamitin ng mga estranghero ang VPS mo para sa DNS amplification at makakatanggap ka ng abuse complaints. I-i-install ng gabay na ito ang AdGuard Home sa Ubuntu, i-ba-bind ang DNS sa localhost o private WireGuard interface maliban kung sadyang ie-expose mo ang encrypted DNS, ilalagay ang dashboard sa HTTPS, at ipapakita kung paano magagamit ng laptops at phones ang DNS-over-HTTPS (DoH) o DNS-over-TLS (DoT) nang hindi binubuksan ang classic port 53 sa mundo.
Saan magaling ang AdGuard Home
Karaniwang comparison ang Pi-hole. Ang AdGuard Home ay iisang binary na may built-in web UI, optional encrypted DNS frontends, at per-client settings. Pwede mong patakbuhin sa Docker o bilang systemd service. Sa Hiddence VPS, maganda ang pairing nito sa private VPN: sumasali ang devices sa WireGuard, nagpapadala ng DNS sa VPS sa tunnel, at hindi kailanman ine-expose ang port 53 nang publiko.
- Network-wide blocking nang hindi nag-i-install ng app sa bawat device
- DoH (443) at DoT (853) para hindi plain text ang DNS sa public Wi-Fi
- Query log at statistics para makita kung aling device ang kausap ng aling domain
- Custom upstreams (Quad9, Cloudflare, o sarili mong Unbound)
- Maliit na footprint — kayang i-filter ng 1 GB VPS ang isang household plus ilang extra clients
Mga kailangan
Kailangan mo ng domain kung gusto mo ng trusted certificate para sa DoH/DoT at sa dashboard. Pwede kang mag-test sa HTTP at server IP muna, pero huwag iwanan nang ganoon. Kung hawak na ng systemd-resolved ang port 53 sa Ubuntu, palalayain natin ito bago mag-bind ng DNS ang AdGuard Home.
- Ubuntu 22.04 o 24.04 VPS na may root/sudo
- Sapat ang 1 GB RAM para sa personal use
- Domain o subdomain (dns.example.com) na may A record papunta sa VPS
- SSH access; optional WireGuard kung gusto mo ng DNS sa loob lang ng tunnel
Hakbang 1: Palayain ang port 53 at i-install ang AdGuard Home
Madalas patakbuhin ng Ubuntu Server ang systemd-resolved bilang stub sa 127.0.0.53:53. Gusto ng AdGuard Home ang 53 sa interfaces na pipiliin mo. Kaya ng installer gawin ito, pero ang tahasang paggawa ay umiiwas sa kalahating-sira na DNS sa VPS mismo (kailangan pa ring mag-resolve ng packages ang server).
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 -- -vHakbang 2: First-run wizard
Nagpi-print ang installer ng URL, kadalasan http://YOUR_IP:3000/. Buksan, gumawa ng admin user na may mahabang password, at piliin ang listen addresses. Para sa public VPS, ligtas na unang setup ay: Admin Web sa 127.0.0.1:3000 (maglalagay ka ng Caddy sa harap) o sa 80/443 pagkatapos ng TLS; DNS listen sa 127.0.0.1:53 plus VPN interface, hindi sa 0.0.0.0:53. Kung kailangan mo talaga ng LAN-style DNS para sa kaibigan, mas gusto ang DoH/DoT sa 443/853 na may authentication, hindi open 53/udp.
Pumili ng upstream DNS servers na pinagkakatiwalaan mo. Marami ang gumagamit ng https://dns.quad9.net/dns-query o Cloudflare. I-enable ang parallel requests kung gusto mo ng mas mabilis na failover. I-on ang default filter lists, tapos magdagdag mamaya — ang pag-enable ng limampung lists sa unang araw ay ginagawang imposible ang debugging kapag nasira ang isang site.
Hakbang 3: Reverse proxy at HTTPS para sa dashboard
Kapag tapos na ang wizard, karaniwang inililipat ng AdGuard Home ang UI sa port 80. Bumabangga iyon sa Caddy o Nginx kung nagho-host ka rin ng sites. Malinis na pattern: AdGuard Home web sa 127.0.0.1:8080, DNS sa 127.0.0.1:53, Caddy sa 443 para sa dashboard at 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.comHakbang 4: I-enable ang DNS-over-HTTPS at DNS-over-TLS
Sa Encryption settings, i-enable ang encryption, itakda ang server name sa dns.example.com, at ituro ang AdGuard Home sa certificate files mo — alinman sa iniimbak ng Caddy, o certificates na mismo ang AdGuard Home ang kumukuha kung nakikinig ito sa 443. Karaniwan ang DoH ay https://dns.example.com/dns-query. Ang DoT ay dns.example.com:853. Kung hawak na ng Caddy ang 443, hayaan ang Caddy mag-terminate ng TLS at mag-reverse-proxy ng DoH path papunta sa plain HTTP DoH port ng AdGuard Home, o hayaan ang AdGuard Home makinig sa 443 at ilagay ang dashboard sa ibang subdomain.
I-verify sa client bago mo palitan ang bawat device. Sa laptop na may modernong 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.comHakbang 5: Ituro ang totoong devices sa resolver mo
Kaya ng Windows 11 at mga kamakailang Android builds gumamit ng DoH template. Pwede ang iOS ng configuration profile o client na sumusuporta sa DoH. Pinapayagan din ng Firefox at Chromium ang custom DoH URL. Para sa home router, itakda ang WAN DNS lang kung sinusuportahan ng router ang DoT/DoH; kung hindi, magpatakbo ng WireGuard at itakda ang DNS sa VPS VPN IP para hindi tumawid ang classic DNS sa internet.
- Android 9+: Private DNS (DoT) → dns.example.com
- Firefox: Settings → Network → DNS over HTTPS → custom URL https://dns.example.com/dns-query
- Apple devices: signed mobileconfig o app na sumusuporta sa DoH/DoT
- Ibang VPS: itakda ang resolv.conf o systemd-resolved sa WireGuard IP ng AdGuard instance na ito
- Iwasang itakda ang VPS IP na ito bilang DNS sa random public networks nang walang encryption
Hakbang 6: Firewall — isara ang open recursive DNS
Ito ang seksyong pumipigil sa masamang sorpresa. Payagan ang SSH, HTTPS, at opsyonal ang 853/tcp para sa DoT. Huwag payagan ang 53/udp mula sa 0.0.0.0/0 maliban kung may napaka-specific, rate-limited, authenticated na design ka — at kahit noon, malamang hindi mo dapat gawin.
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'Filters, allowlists, at clients
Magsimula sa default DNS filter ng AdGuard at isang malware list. Kapag mali ang kilos ng site, tingnan ang query log, tapos magdagdag ng specific allowlist rule imbes na i-disable ang lahat ng blocking. Gumamit ng client names (ayon sa IP o ClientID sa DoH URL) para makapaglagay ka ng mas mahigpit na lists sa smart TV at mas maluwag sa work laptop. I-enable ang safe search kung gusto mo talaga — nagtataka ang mga taong hindi humingi ng rewritten Google results.
- Query log: hanapin ang na-block na domain, tapos i-whitelist kung false positive
- Client settings: magkaibang blocklists bawat device
- Disallowed clients: i-block ang ranges na hindi iyo
- Rate limiting: i-on kung kailanman mag-e-expose ka ng higit sa iilang users
Troubleshooting
Kung hindi makapag-apt update ang VPS mismo, nasira mo ang local DNS habang pinapalaya ang port 53 — maglagay ng static resolver sa resolved.conf gaya ng nasa itaas. Kung 'may internet' ang devices pero naglo-load pa rin ang ads, iniiwasan nila ang DNS mo (hardcoded resolvers, DoH sa browser, o app na gumagamit ng sariling DNS). Kung walang laman ang dashboard, mali ang instance na tinitingnan mo o tumatama ka pa sa port 3000 pagkatapos ilipat ng wizard ang UI.
- Nabigo ang apt: tingnan ang /etc/resolv.conf at systemd-resolved
- Ginagamit ang port 53: ss -tulpn, i-disable ang stub listener
- DoH certificate errors: kailangang tumugma ang hostname sa cert SAN
- Nakikita pa rin ang ads: browser DoH papunta sa ibang provider ang nag-o-override sa OS
- Mataas ang RAM: query log + sobrang daming filter lists — bawasan ang lists at paikliin ang log retention
Security checklist
Admin panel ang web UI. Unique password, HTTPS lang, at huwag i-publish ang URL. Panatilihing updated ang AdGuard Home; parehong may update path ang install script at UI. I-restrict ang 443 kung devices mo lang ang dapat gumamit ng DoH — mas ligtas ang HTTP basic auth sa DoH path o WireGuard-only access kaysa sikat na open resolver.
- Walang public 53/udp
- HTTPS sa dashboard
- Malakas na admin password, naka-store sa password manager
- Mas gusto ang WireGuard + internal DNS para sa family devices
- I-back up ang AdGuardHome.yaml palabas ng server
Mga tips
- I-back up ang /opt/AdGuardHome/AdGuardHome.yaml bago ang bawat upgrade
- Gumamit ng dedicated subdomain; huwag ibahagi sa walang kaugnayang CMS
- Kung may Caddy ka na, hayaan ang Caddy magmay-ari ng 443 at panatilihin ang AdGuard Home sa localhost
- I-document ang DoH URL para sa devices mo — makakalimutan mo
- Ipares sa SSH hardening at firewall guides para hindi 'DNS-secure' lang ang VPS
Diretso ang AdGuard Home sa VPS: palayain ang port 53 locally, patakbuhin ang installer, tapusin ang wizard na may malakas na admin password, ilagay ang UI sa HTTPS, i-enable ang DoH/DoT, at panatilihing wala sa public internet ang classic DNS. Ituro ang devices sa encrypted endpoint o VPN IP, magsimula sa maliit na set ng filters, at gamitin ang query log kapag may nasira. Iyon ang private resolver na kontrolado mo talaga — hindi public open DNS na maglilista ng VPS mo sa abuse databases.