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

O AdGuard Home é um sumidouro DNS autoalojado e um resolvedor de estilo recursivo com interface web. Pode bloquear anúncios, rastreadores e domínios de malware em todos os dispositivos que o usem como DNS — telemóveis, computadores portáteis, televisores inteligentes e outros projetos no VPS. Ao contrário de uma extensão do browser, funciona mesmo para aplicações que ignoram ficheiros hosts. Executá-lo num VPS é útil quando quer a mesma filtragem em viagem, ou quando não quer um Raspberry Pi na rede doméstica.
O valor predefinido perigoso que não deve publicar é um resolvedor aberto: se UDP/TCP 53 for alcançável a partir de toda a internet sem controlo de acesso, estranhos usarão o seu VPS para amplificação DNS e receberá queixas de abuso. Este guia instala o AdGuard Home no Ubuntu, associa o DNS a localhost ou a uma interface WireGuard privada salvo se expuser de propósito o DNS cifrado, coloca o painel em HTTPS e mostra como computadores e telemóveis podem usar DNS-over-HTTPS (DoH) ou DNS-over-TLS (DoT) sem abrir a porta 53 clássica ao mundo.
Para que serve bem o AdGuard Home
O Pi-hole é a comparação habitual. O AdGuard Home é um único binário com interface web integrada, frontais DNS cifrados opcionais e definições por cliente. Pode executá-lo no Docker ou como serviço systemd. Num VPS Hiddence combina bem com uma VPN privada: os dispositivos entram no WireGuard, enviam o DNS para o VPS pelo túnel e nunca expõem a porta 53 em público.
- Bloqueio em toda a rede sem instalar uma aplicação em cada dispositivo
- DoH (443) e DoT (853) para o DNS não circular em claro em Wi-Fi públicas
- Registo de consultas e estatísticas para ver que dispositivo fala com que domínio
- Upstreams personalizados (Quad9, Cloudflare ou o seu próprio Unbound)
- Pegada pequena — um VPS de 1 GB pode filtrar um agregado familiar mais alguns clientes extra
Requisitos
Precisa de um domínio se quiser um certificado de confiança para DoH/DoT e para o painel. Pode testar primeiro em HTTP e com o IP do servidor, mas não deixe assim. Se o systemd-resolved já possuir a porta 53 no Ubuntu, libertamo-la antes de o AdGuard Home associar o DNS.
- VPS Ubuntu 22.04 ou 24.04 com root/sudo
- 1 GB de RAM chega para uso pessoal
- Um domínio ou subdomínio (dns.example.com) com um registo A para o VPS
- Acesso SSH; WireGuard opcional se quiser DNS só dentro de um túnel
Passo 1: Libertar a porta 53 e instalar o AdGuard Home
O Ubuntu Server corre muitas vezes o systemd-resolved como stub em 127.0.0.53:53. O AdGuard Home quer a 53 nas interfaces que escolher. O instalador pode tratar disto, mas fazê-lo de forma explícita evita um DNS a meio no próprio VPS (o servidor ainda precisa de 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 do primeiro arranque
O instalador imprime um URL, normalmente http://YOUR_IP:3000/. Abra-o, crie um utilizador administrador com uma palavra-passe longa e escolha os endereços de escuta. Para um VPS público, uma primeira configuração segura é: Admin Web em 127.0.0.1:3000 (Caddy à frente) ou em 80/443 após TLS; escuta DNS em 127.0.0.1:53 mais uma interface VPN, não em 0.0.0.0:53. Se realmente precisar de DNS ao estilo LAN para amigos, prefira DoH/DoT em 443/853 com autenticação, não 53/udp aberto.
Escolha servidores DNS a montante em que confie. Muita gente usa https://dns.quad9.net/dns-query ou Cloudflare. Ative pedidos em paralelo se quiser uma comutação mais rápida. Ligue as listas de filtros predefinidas e acrescente mais mais tarde — cinquenta listas no primeiro dia tornam a depuração impossível quando um sítio se parte.
Passo 3: Proxy inverso 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 também alojar sítios. 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 definições de cifra, ative a cifra, defina o nome do servidor para dns.example.com e aponte o AdGuard Home para os seus ficheiros de certificado — os que o Caddy guarda, ou certificados que o AdGuard Home obtém ele próprio se escutar na 443. O DoH é normalmente https://dns.example.com/dns-query. O DoT é dns.example.com:853. Se o Caddy já possuir a 443, deixe o Caddy terminar o TLS e fazer proxy inverso do caminho DoH para a porta DoH HTTP em claro do AdGuard Home, ou deixe o AdGuard Home escutar na 443 e coloque o painel noutro subdomínio.
Verifique com um cliente antes de alterar todos os dispositivos. Num computador portátil 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 dispositivos 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 suporte DoH. O Firefox e o Chromium também permitem um URL DoH personalizado. Num router doméstico, defina o DNS WAN só se o router suportar DoT/DoH; caso contrário, execute WireGuard e defina 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: Definições → Rede → DNS over HTTPS → URL personalizado https://dns.example.com/dns-query
- Dispositivos Apple: um mobileconfig assinado ou uma aplicação com DoH/DoT
- Outros VPS: defina 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 cifra
Passo 6: Firewall — fechar o DNS recursivo aberto
Esta secção evita uma surpresa desagradável. Permita SSH, HTTPS e, opcionalmente, 853/tcp para DoT. Não permita 53/udp a partir de 0.0.0.0/0 salvo um desenho muito específico, com limite de taxa e autenticado — e mesmo assim, provavelmente 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 predefinido do AdGuard e por uma lista de malware. Quando um sítio se comportar mal, consulte o registo de consultas e acrescente uma regra específica de lista branca em vez de desativar todo o bloqueio. Use nomes de cliente (por IP ou por ClientID no URL DoH) para aplicar listas mais estritas a um televisor inteligente e mais folgadas a um portátil de trabalho. Ative a pesquisa segura só se realmente a quiser — surpreende quem não pediu resultados do Google reescritos.
- Registo de consultas: encontre o domínio bloqueado e coloque-o na lista branca se for um falso positivo
- Definições de cliente: listas de bloqueio diferentes por dispositivo
- Clientes não permitidos: bloqueie intervalos que não lhe pertencem
- Limitação de taxa: ative-a se alguma vez expor mais do que um punhado de utilizadores
Resolução de problemas
Se o próprio VPS não conseguir fazer apt update, partiu o DNS local ao libertar a porta 53 — coloque um resolvedor estático em resolved.conf como mostrado acima. Se os dispositivos «têm internet» mas os anúncios continuam a carregar, estão a contornar o seu DNS (resolvedores fixos, DoH no browser ou uma aplicação com DNS próprio). Se o painel estiver vazio, está a olhar para a instância errada ou ainda a bater na porta 3000 depois de o assistente ter movido 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 nome de anfitrião tem de coincidir com o SAN do certificado
- Anúncios ainda visíveis: o DoH do browser para outro fornecedor sobrepõe-se ao do sistema
- RAM elevada: registo de consultas + demasiadas listas de filtros — reduza as listas e encurte a retenção de registos
Lista de verificação de segurança
A interface web é um painel de administração. Palavra-passe única, só HTTPS e não publique o URL. Mantenha o AdGuard Home atualizado; o script de instalação e a interface expõem ambos um caminho de atualização. Restrinja a 443 se só os seus dispositivos devem usar DoH — autenticação HTTP básica no caminho DoH ou acesso só por WireGuard é bem mais seguro do que um resolvedor aberto famoso.
- Sem 53/udp público
- HTTPS no painel
- Palavra-passe de administrador forte, guardada num gestor de palavras-passe
- Prefira WireGuard + DNS interno para dispositivos da família
- Cópia de segurança do AdGuardHome.yaml fora do servidor
Dicas
- Faça cópia de /opt/AdGuardHome/AdGuardHome.yaml antes de cada atualização
- Use um subdomínio dedicado; não o partilhe com um CMS alheio
- Se o Caddy já corre, deixe o Caddy possuir a 443 e mantenha o AdGuard Home em localhost
- Documente o URL DoH dos seus dispositivos — vai esquecê-lo
- Combine com os guias de endurecimento SSH e firewall para o VPS não ser só «seguro no DNS»
O AdGuard Home num VPS é direto: liberte a porta 53 em local, execute o instalador, termine o assistente com uma palavra-passe de administrador forte, coloque a interface em HTTPS, ative DoH/DoT e mantenha o DNS clássico fora da internet pública. Aponte os dispositivos para o seu extremo cifrado ou para um IP VPN, comece com um conjunto pequeno de filtros e use o registo de consultas quando algo se partir. Isso é um resolvedor privado que controla de verdade — não um DNS aberto público que meterá o seu VPS em bases de abuso.