Como configurar o AdGuard Home em um VPS
Instalar o AdGuard Home no Ubuntu, concluir o assistente inicial, travar a interface web, ativar DNS-over-HTTPS e DNS-over-TLS, apontar os aparelhos para o seu resolvedor e evitar operar um servidor DNS aberto que a internet inteira possa abusar.

O AdGuard Home é um sumidouro DNS self-hosted e um resolvedor de estilo recursivo com interface web. Ele bloqueia anúncios, rastreadores e domínios de malware em todo aparelho que o use como DNS — celulares, notebooks, smart TVs e outros projetos no VPS. Diferente de uma extensão de navegador, funciona até para apps que ignoram arquivos hosts. Rodar isso num VPS ajuda quando você quer o mesmo filtro na estrada, ou quando não quer um Raspberry Pi na rede de casa.
O padrão perigoso que você não deve publicar é um resolvedor aberto: se UDP/TCP 53 for alcançável da internet inteira sem controle de acesso, desconhecidos vão usar o seu VPS para amplificação DNS e você vai receber reclamações de abuso. Este guia instala o AdGuard Home no Ubuntu, associa o DNS a localhost ou a uma interface WireGuard privada a menos que você exponha de propósito o DNS criptografado, coloca o painel em HTTPS e mostra como notebooks e celulares podem usar DNS-over-HTTPS (DoH) ou DNS-over-TLS (DoT) sem abrir a porta 53 clássica para o mundo.
Para que o AdGuard Home serve bem
O Pi-hole é a comparação usual. O AdGuard Home é um binário único com interface web embutida, front-ends DNS criptografados opcionais e ajustes por cliente. Você pode rodá-lo no Docker ou como serviço systemd. Num VPS Hiddence ele combina bem com uma VPN privada: os aparelhos entram no WireGuard, mandam DNS para o VPS pelo túnel e nunca expõem a porta 53 em público.
- Bloqueio em toda a rede sem instalar um app em cada aparelho
- DoH (443) e DoT (853) para o DNS não ir em texto puro no Wi-Fi público
- Log de consultas e estatísticas para ver qual aparelho fala com qual domínio
- Upstreams personalizados (Quad9, Cloudflare ou o seu próprio Unbound)
- Pegada pequena — um VPS de 1 GB filtra uma casa mais alguns clientes extras
Requisitos
Você precisa de um domínio se quiser um certificado confiável para DoH/DoT e para o painel. Dá para testar primeiro em HTTP e com o IP do servidor, mas não deixe assim. Se o systemd-resolved já estiver dono da porta 53 no Ubuntu, vamos liberá-la antes de o AdGuard Home associar o DNS.
- VPS Ubuntu 22.04 ou 24.04 com root/sudo
- 1 GB de RAM basta para uso pessoal
- Um domínio ou subdomínio (dns.example.com) com registro A para o VPS
- Acesso SSH; WireGuard opcional se você quiser DNS só dentro de um túnel
Passo 1: Liberar a porta 53 e instalar o AdGuard Home
O Ubuntu Server costuma rodar o systemd-resolved como stub em 127.0.0.53:53. O AdGuard Home quer a 53 nas interfaces que você escolher. O instalador pode cuidar disso, mas fazer de forma explícita evita um DNS pela metade no próprio VPS (o servidor ainda precisa resolver pacotes).
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 -- -vPasso 2: Assistente da primeira execução
O instalador imprime um URL, em geral http://YOUR_IP:3000/. Abra, crie um usuário administrador com uma senha longa e escolha os endereços de escuta. Para um VPS público, um primeiro setup seguro é: Admin Web em 127.0.0.1:3000 (Caddy na frente) ou em 80/443 depois do TLS; escuta DNS em 127.0.0.1:53 mais uma interface VPN, não em 0.0.0.0:53. Se você realmente precisa de DNS estilo LAN para amigos, prefira DoH/DoT em 443/853 com autenticação, não 53/udp aberto.
Escolha servidores DNS upstream em que você confie. Muita gente usa https://dns.quad9.net/dns-query ou Cloudflare. Ative requisições em paralelo se quiser failover mais rápido. Ligue as listas de filtro padrão e acrescente mais depois — cinquenta listas no primeiro dia tornam o debug impossível quando um site quebra.
Passo 3: Proxy reverso e HTTPS para o painel
Quando o assistente termina, o AdGuard Home costuma mover a interface para a porta 80. Isso colide com Caddy ou Nginx se você também hospeda sites. Um padrão limpo: web do AdGuard Home em 127.0.0.1:8080, DNS em 127.0.0.1:53, Caddy na 443 para o painel e o 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.comPasso 4: Ativar DNS-over-HTTPS e DNS-over-TLS
Nas configurações de criptografia, ative a criptografia, defina o nome do servidor como dns.example.com e aponte o AdGuard Home para os seus arquivos de certificado — os que o Caddy guarda, ou certificados que o AdGuard Home obtém sozinho se escutar na 443. O DoH costuma ser https://dns.example.com/dns-query. O DoT é dns.example.com:853. Se o Caddy já for dono da 443, deixe o Caddy encerrar o TLS e fazer proxy reverso do caminho DoH para a porta DoH HTTP em texto puro do AdGuard Home, ou deixe o AdGuard Home escutar na 443 e coloque o painel em outro subdomínio.
Confira com um cliente antes de mudar todos os aparelhos. Num notebook com um curl moderno:
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.comPasso 5: Apontar aparelhos reais para o seu resolvedor
O Windows 11 e as versões recentes do Android podem usar um modelo DoH. O iOS pode usar um perfil de configuração ou um cliente com DoH. Firefox e Chromium também aceitam um URL DoH personalizado. No roteador de casa, defina o DNS WAN só se o roteador suportar DoT/DoH; senão, rode WireGuard e aponte o DNS para o IP VPN do VPS para o DNS clássico nunca atravessar a internet.
- Android 9+: DNS privado (DoT) → dns.example.com
- Firefox: Configurações → Rede → DNS over HTTPS → URL personalizado https://dns.example.com/dns-query
- Aparelhos Apple: um mobileconfig assinado ou um app com DoH/DoT
- Outros VPS: configure resolv.conf ou systemd-resolved para o IP WireGuard desta instância AdGuard
- Evite definir o IP deste VPS como DNS em redes públicas aleatórias sem criptografia
Passo 6: Firewall — fechar o DNS recursivo aberto
Esta seção evita uma surpresa ruim. Libere SSH, HTTPS e, se quiser, 853/tcp para DoT. Não libere 53/udp a partir de 0.0.0.0/0 salvo um desenho bem específico, com limite de taxa e autenticado — e mesmo assim, provavelmente você não deveria.
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'Filtros, listas de permissão e clientes
Comece pelo filtro DNS padrão do AdGuard e por uma lista de malware. Quando um site se comportar mal, olhe o log de consultas e depois acrescente uma regra específica de allowlist em vez de desligar o bloqueio inteiro. Use nomes de cliente (por IP ou por ClientID no URL DoH) para aplicar listas mais rígidas a uma smart TV e mais folgadas a um notebook de trabalho. Ligue a busca segura só se você realmente quiser — isso surpreende quem não pediu resultados do Google reescritos.
- Log de consultas: ache o domínio bloqueado e coloque na allowlist se for falso positivo
- Ajustes de cliente: blocklists diferentes por aparelho
- Clientes não permitidos: bloqueie faixas que não são suas
- Limitação de taxa: ligue se um dia você expor mais do que um punhado de usuários
Solução de problemas
Se o próprio VPS não consegue fazer apt update, você quebrou o DNS local ao liberar a porta 53 — coloque um resolvedor estático em resolved.conf como mostrado acima. Se os aparelhos «têm internet» mas os anúncios ainda carregam, eles estão furando o seu DNS (resolvedores fixos, DoH no navegador ou um app com DNS próprio). Se o painel estiver vazio, você está olhando a instância errada ou ainda batendo na porta 3000 depois que o assistente moveu a interface.
- apt falha: verifique /etc/resolv.conf e systemd-resolved
- Porta 53 em uso: ss -tulpn, desative o listener stub
- Erros de certificado DoH: o hostname precisa bater com o SAN do certificado
- Anúncios ainda visíveis: o DoH do navegador para outro provedor sobrepõe o do sistema
- RAM alta: log de consultas + listas de filtro demais — corte listas e encurte a retenção de logs
Checklist de segurança
A interface web é um painel de administração. Senha única, só HTTPS e não publique o URL. Mantenha o AdGuard Home atualizado; o script de instalação e a interface mostram os dois um caminho de atualização. Restrinja a 443 se só os seus aparelhos devem usar DoH — autenticação HTTP básica no caminho DoH ou acesso só via WireGuard é bem mais seguro do que um resolvedor aberto famoso.
- Sem 53/udp público
- HTTPS no painel
- Senha de administrador forte, guardada num gerenciador de senhas
- Prefira WireGuard + DNS interno para aparelhos da família
- Backup do AdGuardHome.yaml fora do servidor
Dicas
- Faça backup de /opt/AdGuardHome/AdGuardHome.yaml antes de cada upgrade
- Use um subdomínio dedicado; não compartilhe com um CMS sem relação
- Se o Caddy já está rodando, deixe o Caddy dono da 443 e mantenha o AdGuard Home em localhost
- Documente o URL DoH dos seus aparelhos — você vai esquecer
- Combine com os guias de endurecimento SSH e firewall para o VPS não ser só «seguro no DNS»
AdGuard Home num VPS é direto: liberar a porta 53 localmente, rodar o instalador, terminar o assistente com uma senha de administrador forte, colocar a interface em HTTPS, ativar DoH/DoT e manter o DNS clássico fora da internet pública. Aponte os aparelhos para o seu endpoint criptografado ou para um IP VPN, comece com um conjunto pequeno de filtros e use o log de consultas quando algo quebrar. Isso é um resolvedor privado que você controla de verdade — não um DNS aberto público que vai colocar o seu VPS em bases de abuso.