Hur du sätter upp AdGuard Home på en VPS
Installera AdGuard Home på Ubuntu, slutför första-körningsguiden, lås webbgränssnittet, aktivera DNS-over-HTTPS och DNS-over-TLS, peka enheter mot din resolver och undvik att köra en öppen DNS-server som hela internet kan missbruka.

AdGuard Home är en självhostad DNS-sinkhole och rekursiv-stil resolver med ett webbgränssnitt. Den kan blockera reklam, spårare och skadliga domäner för varje enhet som använder den som DNS — telefoner, laptops, smarta TV-apparater och andra VPS-projekt. Till skillnad från ett webbläsartillägg fungerar den även för appar som ignorerar hosts-filer. Att köra den på en VPS är användbart när du vill ha samma filtrering på resande fot, eller när du inte vill ha en Raspberry Pi på hemmanätet.
Den farliga standarden du inte får skeppa är en öppen resolver: om UDP/TCP 53 är nåbar från hela internet utan åtkomstkontroll kommer främlingar att använda din VPS för DNS-förstärkning och du får missbruksklagomål. Den här guiden installerar AdGuard Home på Ubuntu, binder DNS till localhost eller ett privat WireGuard-gränssnitt om du inte medvetet exponerar krypterad DNS, lägger instrumentpanelen bakom HTTPS och visar hur laptops och telefoner kan använda DNS-over-HTTPS (DoH) eller DNS-over-TLS (DoT) utan att öppna klassisk port 53 mot världen.
Vad AdGuard Home är bra för
Pi-hole är den vanliga jämförelsen. AdGuard Home är en enda binär med inbyggt webbgränssnitt, valfria krypterade DNS-frontends och per-klient-inställningar. Du kan köra den i Docker eller som en systemd-tjänst. På en Hiddence-VPS passar den bra med ett privat VPN: enheter ansluter till WireGuard, skickar DNS till VPS:en över tunneln och exponerar aldrig port 53 publikt.
- Nätverksomfattande blockering utan att installera en app på varje enhet
- DoH (443) och DoT (853) så att DNS inte är klartext på publikt Wi-Fi
- Frågelogg och statistik så att du ser vilken enhet som pratar med vilken domän
- Egna upstreams (Quad9, Cloudflare eller din egen Unbound)
- Litet fotavtryck — en 1 GB-VPS kan filtrera ett hushåll plus några extra klienter
Krav
Du behöver en domän om du vill ha ett betroget certifikat för DoH/DoT och för instrumentpanelen. Du kan testa på HTTP och serverns IP först, men lämna det inte så. Om systemd-resolved redan äger port 53 på Ubuntu frigör vi den innan AdGuard Home binder DNS.
- Ubuntu 22.04- eller 24.04-VPS med root/sudo
- 1 GB RAM räcker för personligt bruk
- En domän eller underdomän (dns.example.com) med en A-post till VPS:en
- SSH-åtkomst; valfritt WireGuard om du vill ha DNS bara inuti en tunnel
Steg 1: Frigör port 53 och installera AdGuard Home
Ubuntu Server kör ofta systemd-resolved som en stub på 127.0.0.53:53. AdGuard Home vill ha 53 på de gränssnitt du väljer. Installern kan göra det, men att göra det explicit undviker en halvtrasig DNS på själva VPS:en (servern måste fortfarande kunna slå upp paket).
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 -- -vSteg 2: Första-körningsguiden
Installern skriver ut en URL, vanligtvis http://YOUR_IP:3000/. Öppna den, skapa en administratörsanvändare med ett långt lösenord och välj lyssningsadresser. För en publik VPS är en säker första uppsättning: Admin Web på 127.0.0.1:3000 (du sätter Caddy framför) eller på 80/443 efter TLS; DNS-lyssning på 127.0.0.1:53 plus ett VPN-gränssnitt, inte på 0.0.0.0:53. Om du verkligen behöver LAN-liknande DNS för vänner, föredra DoH/DoT på 443/853 med autentisering, inte öppen 53/udp.
Välj upstream-DNS-servrar du litar på. Många använder https://dns.quad9.net/dns-query eller Cloudflare. Aktivera parallella förfrågningar om du vill ha snabbare failover. Slå på standardfilterlistorna och lägg till fler senare — att aktivera femtio listor dag ett gör felsökning omöjlig när en sajt går sönder.
Steg 3: Omvänd proxy och HTTPS för instrumentpanelen
När guiden är klar flyttar AdGuard Home vanligtvis gränssnittet till port 80. Det krockar med Caddy eller Nginx om du också hostar sajter. Ett rent mönster är: AdGuard Home-webb på 127.0.0.1:8080, DNS på 127.0.0.1:53, Caddy på 443 för både instrumentpanelen och 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.comSteg 4: Aktivera DNS-over-HTTPS och DNS-over-TLS
I Encryption-inställningarna, aktivera kryptering, sätt servernamnet till dns.example.com och peka AdGuard Home mot dina certifikatfiler — antingen de Caddy lagrar, eller certifikat AdGuard Home hämtar själv om den lyssnar på 443. DoH är vanligtvis https://dns.example.com/dns-query. DoT är dns.example.com:853. Om Caddy redan äger 443, låt Caddy avsluta TLS och reverse-proxy:a DoH-sökvägen till AdGuard Homes vanliga HTTP DoH-port, eller låt AdGuard Home lyssna på 443 och lägg instrumentpanelen på en annan underdomän.
Verifiera med en klient innan du byter varje enhet. På en laptop med en modern 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.comSteg 5: Peka riktiga enheter mot din resolver
Windows 11 och nyare Android-byggen kan använda en DoH-mall. iOS kan använda en konfigurationsprofil eller en klient som stöder DoH. Firefox och Chromium tillåter också en anpassad DoH-URL. För en hemmarouter, sätt WAN DNS bara om routern stöder DoT/DoH; kör annars WireGuard och sätt DNS till VPS:ens VPN-IP så att klassisk DNS aldrig korsar internet.
- Android 9+: Private DNS (DoT) → dns.example.com
- Firefox: Inställningar → Nätverk → DNS over HTTPS → anpassad URL https://dns.example.com/dns-query
- Apple-enheter: en signerad mobileconfig eller en app som stöder DoH/DoT
- Andra VPS: sätt resolv.conf eller systemd-resolved till WireGuard-IP:n för den här AdGuard-instansen
- Undvik att sätta den här VPS-IP:n som DNS på slumpmässiga publika nät utan kryptering
Steg 6: Brandvägg — stäng öppen rekursiv DNS
Det här är avsnittet som förhindrar en obehaglig överraskning. Tillåt SSH, HTTPS och valfritt 853/tcp för DoT. Tillåt inte 53/udp från 0.0.0.0/0 om du inte har en mycket specifik, hastighetsbegränsad, autentiserad design — och även då bör du troligen inte.
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'Filter, tillåtelselistor och klienter
Börja med AdGuards standard-DNS-filter och en skadligkodslista. När en sajt beter sig fel, kontrollera frågeloggen och lägg sedan till en specifik tillåtelseregel i stället för att stänga av all blockering. Använd klientnamn (efter IP eller efter ClientID i DoH-URL:en) så att du kan tillämpa striktare listor på en smart-TV och lösare listor på en jobbdator. Aktivera säker sökning bara om du faktiskt vill ha det — det överraskar folk som inte bad om omskrivna Google-resultat.
- Frågelogg: hitta den blockerade domänen, vitlista sedan om det är en falsk positiv
- Klientinställningar: olika blocklistor per enhet
- Otillåtna klienter: blockera intervall du inte äger
- Hastighetsbegränsning: slå på om du någonsin exponerar mer än en handfull användare
Felsökning
Om VPS:en själv inte kan köra apt update har du trasat lokal DNS medan du frigjorde port 53 — lägg en statisk resolver i resolved.conf som visats ovan. Om enheter 'har internet' men reklam fortfarande laddas kringgår de din DNS (hårdkodade resolvrar, DoH i webbläsaren eller en app som använder egen DNS). Om instrumentpanelen är tom tittar du på fel instans eller träffar fortfarande port 3000 efter att guiden flyttat gränssnittet.
- apt misslyckas: kontrollera /etc/resolv.conf och systemd-resolved
- Port 53 upptagen: ss -tulpn, inaktivera stub-lyssnare
- DoH-certifikatfel: värdnamnet måste matcha certifikatets SAN
- Reklam syns fortfarande: webbläsarens DoH till en annan leverantör åsidosätter OS:et
- Hög RAM: frågelogg + för många filterlistor — trimma listor och korta logglagring
Säkerhetschecklista
Webbgränssnittet är en adminpanel. Unikt lösenord, endast HTTPS, och publicera inte URL:en. Håll AdGuard Home uppdaterat; både installationsskriptet och gränssnittet visar en uppdateringsväg. Begränsa 443 om bara dina enheter ska använda DoH — HTTP basic auth på DoH-sökvägen eller endast WireGuard-åtkomst är mycket säkrare än en känd öppen resolver.
- Ingen publik 53/udp
- HTTPS på instrumentpanelen
- Starkt administratörslösenord, lagrat i en lösenordshanterare
- Föredra WireGuard + intern DNS för familjeenheter
- Säkerhetskopiera AdGuardHome.yaml från servern
Tips
- Säkerhetskopiera /opt/AdGuardHome/AdGuardHome.yaml före varje uppgradering
- Använd en dedikerad underdomän; dela den inte med ett orelaterat CMS
- Om du redan kör Caddy, låt Caddy äga 443 och håll AdGuard Home på localhost
- Dokumentera DoH-URL:en för dina enheter — du kommer att glömma den
- Kombinera med SSH-härdnings- och brandväggsguiderna så att VPS:en inte bara är 'DNS-säker'
AdGuard Home på en VPS är rakt på sak: frigör port 53 lokalt, kör installern, slutför guiden med ett starkt administratörslösenord, lägg gränssnittet bakom HTTPS, aktivera DoH/DoT och håll klassisk DNS borta från det publika internet. Peka enheter mot din krypterade endpoint eller mot en VPN-IP, börja med en liten uppsättning filter och använd frågeloggen när något går sönder. Det är en privat resolver du faktiskt kontrollerar — inte en publik öppen DNS som får din VPS listad i missbruksdatabaser.