AdGuard Home numa VPS Google Cloud Free Tier (Grátis)
Bloqueio de anúncios, trackers e malware na rede doméstica sem custos mensais
O AdGuard Home é um servidor DNS que permite bloquear anúncios, trackers, malware e domínios maliciosos ao nível da rede. Neste tutorial vamos criar uma VPS gratuita no Google Cloud Free Tier, configurar o AdGuard Home e aplicar medidas de segurança adicionais:
✅ AdGuard Home
✅ Firewall restritiva
✅ DNS acessível apenas a IPs autorizados
✅ Actualização automática das regras via DDNS
✅ Swap de 2 GB
✅ SSH apenas através do Google IAP (recomendado)
📋 Pré-requisitos
Antes de começar, é necessário ter:
- Conta Google
- Projecto criado no Google Cloud
- Facturação activada (não serão cobrados valores se permanecer dentro dos limites Free Tier)
- Nome DDNS (opcional, para actualização automática da Firewall)
1️⃣ Criar a Máquina Virtual
Machine Configuration
Name: VPS-AdGuard
Region: us-west1 ou us-east1 ou us-central1
Zone: any
Machine Type: E2-micro (2 vCPU, 1 Core, 1GB RAM)
💡 Nota
Estas regiões permitem usufruir da camada gratuita (Free Tier) da Google Cloud.
OS and Storage
Operating System: Debian
Boot Disk Type: Standard Persistent Disk
Size: 30 GB
Data Protection
Backups: No backups
Networking
Firewall:
✅ Allow HTTP Traffic
✅ Allow HTTPS Traffic
Em: Network Interfaces → nic0 default IPv4 → Network Service Tier
Alterar de: Premium
para: Standard
Observability
Ops Agent (Recommended):
Remover o visto - Install Ops Agent for Monitoring and Logging
(Isto reduz consumo de recursos numa VM com apenas 1 GB de RAM e possiveis custos adicionais)
2️⃣ Actualizar o Sistema
sudo apt update
sudo apt upgrade -y
3️⃣ Instalar Utilitários
sudo apt install -y curl dnsutils net-tools util-linux
4️⃣ Instalar o AdGuard Home
Transferir
wget https://github.com/AdguardTeam/AdGuardHome/releases/latest/download/AdGuardHome_linux_amd64.tar.gz
Descompactar
tar xvf AdGuardHome_linux_amd64.tar.gz
cd AdGuardHome
Instalar Como Serviço
sudo ./AdGuardHome -s install
5️⃣ Primeira Configuração
Aceder a:
http://IP_DA_VPS:3000/install.html
Seguir o assistente até ao final.
6️⃣ Resolver Conflito na Porta 53
❌ Erro
validating ports:
listen tcp 0.0.0.0:53:
bind: address already in use
Verificar Quem Está a Utilizar a Porta:sudo netstat -tulpn | grep :53
Normalmente será:
systemd-resolved
Desactivar systemd-resolved
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
Recriar resolv.conf
sudo rm /etc/resolv.conf
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf
echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf
echo "nameserver 9.9.9.9" | sudo tee -a /etc/resolv.conf
Confirmar porta 53 livre
sudo netstat -tulpn | grep:53
Resultado esperado: (não aparecer nada)
Reiniciar o AdGuard
sudo systemctl restart AdGuardHome
abrir endereço: http://IP_da_VPS:3000/install.html
7️⃣ Criar Utilizador Administrador
Definir:
para acesso ao painel de administração.
8️⃣ Confirmar o Serviço
sudo systemctl status AdGuardHome
Resultado esperado: active (running)
✅ Serviço activo
9️⃣ Criar 2 GB de Swap
Uma VM E2-Micro possui apenas 1 GB de RAM, pelo que a criação de swap é recomendada.
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Tornar permanente:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Verificar:
swapon --show
free -h
🔟 Instalar Google Cloud CLI
Adicionar repositório:
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" \
| sudo tee /etc/apt/sources.list.d/google-cloud.list
sudo apt update
sudo apt install -y google-cloud-cli
1️⃣1️⃣ Login no Google Cloud
efectuar login:
gcloud auth login
depois definir o projecto:
gcloud config set project PROJECT_ID
1️⃣2️⃣ Permissões IAM da Organização
⚠️ Esta secção apenas é necessária se o passo anterior não for concretizado.
Sintoma
Required 'compute.organizations.listAssociations' permission
ou
"You don't have required permissions to view inherited firewall policies"
Solução
Na Organização: IAM & Admin > IAM
Adicionar ao utilizador: Compute Organization Resource Admin
Role: roles/compute.orgSecurityResourceAdmin
1️⃣3️⃣ Actualização Automática da Firewall (DDNS)
Uma funcionalidade extremamente útil para quem possui IP dinâmico em casa.
Editar o ficheiro 'update-adguard-firewall.sh':
nano ~/update-adguard-firewall.sh
inserir:
#!/bin/bash
DDNS_HOST="ddns-host.com"
FIREWALL_RULE="adguard-dns-port53"
PROJECT_ID="abcd-0123-4567-89"
NEW_IP=$(dig +short $DDNS_HOST | tail -n1)
if [ -z "$NEW_IP" ]; then
exit 1
fi
CURRENT_IP=$(gcloud compute firewall-rules describe $FIREWALL_RULE \
--project $PROJECT_ID \
--format="get(sourceRanges[0])" | sed 's/\/32//')
if [ "$NEW_IP" != "$CURRENT_IP" ]; then
gcloud compute firewall-rules update $FIREWALL_RULE \
--project $PROJECT_ID \
--source-ranges=$NEW_IP/32
fi
No final das alterações, alterar as permissões ao ficheiro:
chmod +x~/update-adguard-firewall.sh
Executar:
./update-adguard-firewall.sh
1️⃣4️⃣ Automatizar com Cron
Editar:
crontab -e
Adicionar no final do ficheiro:
*/5 * * * * /bin/bash /home/dpeixoto/update-adguard-firewall.sh > /dev/null 2>&1
✅ Verifica alterações de IP a cada 5 minutos.
1️⃣5️⃣ Firewall Recomendada
DNS
Permitir:
TCP 53
UDP 53
Origem: IP_DA_CASA/32
SSH
Desactivar: default-allow-ssh
Recomendado: allow_iap_ssh
Origem: 35.235.240.0/20
Porta: 22
✅ Apenas acessível através do Google IAP.
1️⃣6️⃣ Comandos Úteis
Versão AdGuard:
./AdGuardHome --version
Estado do Serviço:
sudo systemctl status AdGuardHome
Logs em tempo real:
sudo journalctl -u AdGuardHome -f
Firewall - listagem das regras:
gcloud compute firewall-rules list
Mostrar a swap:
swapon --show
Utilização da memória: