Adguard Home di Docker: Blokir Iklan di Seluruh Jaringan Rumah

· Setup

Kenapa Blokir Iklan di Level DNS?

Ada tiga tempat umum untuk memblokir iklan di rumah:

CaraCakupanKelebihanKekurangan
Ekstensi browserPer browserMudah, tidak perlu infraCuma 1 perangkat, banyak yang lolos
DNS publik (misal Adguard DNS)Semua perangkatGratis, tanpa installTidak bisa kontrol, tidak ada statistik
Adguard Home di serverSemua perangkatKelola sendiri, statistik, filter per devicePerlu setup satu kali

Opsi ketiga paling masuk akal kalau kamu sudah punya server yang nyala 24 jam. Semua perangkat yang lewat router kamu — TV, HP, laptop anak, IoT — langsung kena filter tanpa install apa pun.

Yang penting dipahami: memblokir di DNS bekerja karena mayoritas iklan modern diambil dari domain yang bisa di-resolve ke server yang perlu di-block. Konten yang di-serve dari domain yang sama dengan konten sah (YouTube, Facebook) tidak bisa diblokir sepenuhnya oleh DNS saja. Jadi anggap ini lapisan pertama, bukan pengganti ad blocker di browser.

Cara Kerja Singkat

Alurnya cuma empat langkah:

Perangkat → Router (DNS DHCP) → Adguard Home (:53) → Internet
                        ←
              daftar blokir / filter
              tidak cocok → tolak (hanya 0.0.0.0)

Adguard Home listen di port 53 sebagai DNS server. Kamu set DHCP di router supaya semua perangkat dapat IP Adguard Home sebagai DNS. Kalau request-nya cocok dengan filter, Adguard tidak meneruskanya sama sekali — hanya balas alamat kosong. Kalau tidak cocok, diteruskan ke upstream.

Install dengan Docker Compose

Buat folder dan file compose:

mkdir -p /opt/adguard && cd /opt/adguard
# /opt/adguard/docker-compose.yml
services:
  adguardhome:
    image: adguard/adguardhome:latest
    container_name: adguardhome
    restart: unless-stopped
    ports:
      - "53:53/tcp"      # DNS via TCP (untuk koneksi besar / DoT)
      - "53:53/udp"      # DNS via UDP
      - "3000:3000"      # dashboard admin
      - "443:443/tcp"    # opsional: HTTPS untuk dashboard
    volumes:
      - ./work:/opt/adguardhome/work
      - ./conf:/opt/adguardhome/conf

Jalankan:

cd /opt/adguard
docker compose up -d
docker ps --filter name=adguardhome --format '{{.Status}}'

Port 53 adalah port sensitif. Kalau ada service lain yang juga pakai 53 di host — misalnya dnsmasq, systemd-resolved, atau Pi-hole yang sudah aktif — container gagal start dengan error bind: address already in use. Cek dulu:

sudo ss -lunp | grep ':53 '

Kalau nemu, stop service itu atau pindahkan port Adguard ke port lain yang tidak dipakai, lalu forward dari router.

Konfigurasi Awal

Buka http://IP-SERVER:3000 dari browser mana pun di jaringan lokal. Wizard cuma 4 layar: set port dashboard, buat user admin, tentukan upstream DNS, selesai.

Untuk upstream, pilih yang kamu percaya. Kombinasi yang sering dipakai:

UpstreamCatatan
https://dns10.quad9.net/dns-queryBlokir malware bawaan, tanpa log
https://dns.alidns.com/dns-queryCepat di Asia, tapi log dan konten filter
1.1.1.1 dan 8.8.8.8Netral, cepat, tanpa filtering

Kalau kamu pakai quad9 sebagai upstream dan mengaktifkan filter Adguard Home, hasilnya bagus — dua lapis independen.

Filter yang Wajib Dipakai

Buka menu Filters → DNS blocklists. Tambahkan dua daftar ini sebagai minimum:

https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt
https://adguardteam.github.io/HostlistsRegistry/assets/filter_2.txt

Lalu aktifkan Blocklists untuk memblokir domain iklan. Setelah menambah filter baru, klik Refresh Now supaya langsung berlaku — tidak perlu restart container.

Filter Per Perangkat

Ini bagian yang paling powerful dan paling sering dilewatkan. Buka Clients, lalu tambahkan identitas per perangkat:

192.168.1.10  laptop kerja      anak         blokir iklan + adult
192.168.1.50   HP ibu         ibu          blokir iklan
192.168.1.77   TV Samsung     tamu         tidak diblokir

Di kolom Blocked services (menu Settings → Blocked services) ada daftar bawaan dari Adguard: YouTube, Facebook, TikTok, dan puluhan lagi. Ini yang memblokir iklan di YouTube — filter DNS biasa tidak bisa, tapi blocked services bisa.

Dua Jebakan yang Sering Terjadi

** Jebakan 1: DHCP ganda.** Kalau router kamu masih jadi DHCP server DAN Adguard Home juga menjalankan DHCP, perangkat akan dapat IP dari dua sumber. Gejalanya: IP sering berubah, perangkat lambat konek. Pilih salah satu — rekomendasi: router tetap sebagai DHCP server, tapi DNS-nya saja diarahkan ke Adguard Home. Di router, set DHCP option DNS ke IP Adguard Home.

Jebakan 2: DNS loop. Kalau Adguard Home meneruskan query ke router, dan router meneruskan balik ke Adguard Home, kamu dapat loop dan seluruh jaringan mati. Selalu isi upstream dengan DNS publik atau DNS lain, bukan ke router sendiri.

Jebakan 3: perangkat yang pakai DoH/DoT. Chrome di Android memakai DNS-over-HTTPS secara bawaan, jadi query-nya langsung ke internet dan melewati filter. Matikan lewat chrome://settings/security → Use secure DNS → Off, atau pakai kebijakan AsyncDns untuk perangkat tertentu. TV biasanya sudah memakai DNS sendiri dari ISP — tidak bisa difilter dari server.

Verifikasi

# cek DNS jalan
dig @IP-SERVER:PORT google.com +short

# cek domain iklan diblokir (harus kosong / 0.0.0.0)
dig @IP-SERVER:PORT doubleclick.net +short

# cek statistik jumlah query
curl -s http://IP-SERVER:3000/control/stats | head -c 300

Di dashboard, menu Statistics akan menunjukkan berapa request yang diblokir per hari. Kalau angkanya nol padahal semua perangkat sudah diarahkan ke Adguard, biasanya masalahnya di DHCP router yang belum diganti.

Catatan Performa

Adguard Home ringan. Di mini PC N100 dengan RAM 1-2 GB, dia tetap sisa banyak. Query log disimpan 90 hari secara default di SQLite — kalau RAM atau disk kamu ketat, turunkan Statistics interval atau nonaktifkan query log di Settings → Query log.

Ringkasan

  • Pakai Docker Compose dengan volume persisten di folder work.
  • Set DHCP DNS di router ke IP Adguard, biarkan router yang pegang DHCP.
  • Isi upstream dengan DNS publik, jangan router sendiri.
  • Aktifkan blocked services untuk memblokir iklan YouTube dan media sosial.
  • Blokir DoH di perangkat yang bisa dikontrol.

Kalau sudah jalan, statistik di dashboard adalah bahan konten yang bagus untuk artikel berikutnya: misalnya berapa request yang diblokir dalam seminggu, dan device mana yang paling boros.