Voltar ao blog
Agosto 19, 2026Guias

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.

Como configurar o AdGuard Home em um VPS

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

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

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

Se você não conseguir abrir a porta 3000 do notebook, use um túnel SSH: ssh -L 3000:127.0.0.1:3000 root@YOUR_VPS_IP e acesse http://127.0.0.1:3000/

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.

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

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

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

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

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'

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.