Bumalik sa blog
Agosto 19, 2026Mga Gabay

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.

Paano I-set Up ang AdGuard Home sa VPS

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).

bash
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

Hakbang 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.

Kung hindi mo mabuksan ang port 3000 mula sa laptop, gumamit ng SSH tunnel: ssh -L 3000:127.0.0.1:3000 root@YOUR_VPS_IP at i-browse ang http://127.0.0.1:3000/

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.

bash
# 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

Hakbang 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:

bash
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

Hakbang 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.

bash
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.