🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Adguard

by @rowbotik

Control AdGuard Home DNS filtering via HTTP API. Use when managing blocklists/allowlists, checking domain filtering status, toggling protection, or clearing DNS cache. Supports blocking/allowing domains, viewing statistics, and protecting/disabling DNS filtering.

Versionv0.1.0
Downloads3,640
Stars⭐ 5
TERMINAL
clawhub install adguard

πŸ“– About This Skill


name: adguard description: Control AdGuard Home DNS filtering via HTTP API. Use when managing blocklists/allowlists, checking domain filtering status, toggling protection, or clearing DNS cache. Supports blocking/allowing domains, viewing statistics, and protecting/disabling DNS filtering.

AdGuard Home Controller

Manage AdGuard Home DNS filtering from the command line via the REST API.

Requirements

  • AdGuard Home running with web interface
  • Admin username and password
  • curl installed (usually default on macOS/Linux)
  • Quick Start

    # Set password once
    export ADGUARD_PASSWORD=your_admin_password

    Use commands

    ./adguard.sh status ./adguard.sh check example.com ./adguard.sh allow broken-site.com ./adguard.sh block malware.ru

    Configuration

    Set environment variables for your AdGuard instance:

    export ADGUARD_URL="http://192.168.1.100:3000"      # Your AdGuard IP and port
    export ADGUARD_USERNAME="admin"                     # Usually 'admin' (default)
    export ADGUARD_PASSWORD="your_admin_password"       # REQUIRED
    

    Add to ~/.bashrc or ~/.zshrc for persistence.

    Config File Alternative

    Create ~/.adguard/config.json (optional):

    {
      "url": "http://192.168.1.100:3000",
      "username": "admin"
    }
    

    Then set ADGUARD_PASSWORD separately for security.

    Commands

    check

    Check if a domain is currently blocked or allowed.

    ./adguard.sh check doubleclick.net
    

    βœ— doubleclick.net IS BLOCKED

    Blocked by: Adblock Plus filter

    ./adguard.sh check example.com

    βœ“ example.com is NOT blocked (allowed)

    allow | whitelist

    Add a domain to the allowlist (whitelist). Creates an exception rule that overrides blocklists.

    ./adguard.sh allow broken-site.com
    

    βœ“ Added rule: @@||broken-site.com^

    Domain: broken-site.com

    Action: allow

    block | blacklist

    Add a domain to the blocklist. Creates a custom blocking rule.

    ./adguard.sh block spyware-domain.ru
    

    βœ“ Added rule: ||spyware-domain.ru^

    Domain: spyware-domain.ru

    Action: block

    status | stats

    Display DNS filtering statistics and protection state.

    ./adguard.sh status
    

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    AdGuard Home Status

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    Protection: βœ“ ENABLED

    #

    DNS Queries: 1,234

    Blocked by rules: 156

    Blocked by safe browsing: 23

    Safe search replacements: 5

    Block rate: 14%

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    toggle | protection

    Enable or disable DNS protection. Useful for temporarily disabling filtering.

    ./adguard.sh toggle
    

    Disabling protection...

    βœ“ Protection is now false

    cache-clear

    Clear the DNS cache to apply rule changes immediately.

    ./adguard.sh cache-clear
    

    Clearing DNS cache...

    βœ“ Cache cleared

    Finding Your AdGuard Home Device

    If you don't know your AdGuard URL:

    1. Router admin panel β€” Look for a device named "AdGuard Home" or check for port 3000 2. Local network scan β€” Use nmap or check "Connected Devices" 3. If running on same machine β€” Default is http://localhost:3000 4. mDNS/Bonjour β€” Try http://adguard-home.local:3000 (depends on network)

    Filtering Rules Syntax

    AdGuard uses a DNS filtering rule syntax:

    | Rule | Effect | |------|--------| | \|\|example.com^ | Block example.com and subdomains | | @@\|\|example.com^ | Allow example.com (exception/whitelist) | | example.com | Block exact domain only | | \|\|ad.example.com^ | Block only ad.example.com |

    See API Reference for complete syntax.

    Common Scenarios

    Allow a site that's blocked by accident

    adguard.sh allow my-bank.com
    

    Block a known malware domain

    adguard.sh block malicious-tracker.xyz
    

    Check if a domain is being filtered

    adguard.sh check ads.google.com
    

    View today's statistics

    adguard.sh status
    

    Temporarily disable filtering (e.g., for troubleshooting)

    adguard.sh toggle
    

    Troubleshooting

    Error: Failed to authenticate β†’ Check ADGUARD_PASSWORD is correct and set β†’ Verify ADGUARD_URL points to the right IP and port

    Error: API call failed (HTTP 401) β†’ Authentication failed, check credentials

    Rules don't take effect β†’ Run adguard.sh cache-clear to flush DNS cache β†’ Wait 5+ minutes for clients to refresh their cache β†’ Restart your device's network connection

    Can't connect to AdGuard β†’ Verify device is on the same network β†’ Check firewall isn't blocking port 3000 β†’ Ping the device: ping

    Advanced: Batch Operations

    Block multiple domains:

    for domain in tracker1.com tracker2.com tracker3.com; do
        adguard.sh block "$domain"
    done
    

    Check multiple domains:

    for domain in example.com test.org my-site.net; do
        echo "Checking $domain..."
        adguard.sh check "$domain"
    done
    

    API Reference

    See references/api.md for complete AdGuard Home API documentation.

    πŸ’‘ Examples

    # Set password once
    export ADGUARD_PASSWORD=your_admin_password

    Use commands

    ./adguard.sh status ./adguard.sh check example.com ./adguard.sh allow broken-site.com ./adguard.sh block malware.ru

    βš™οΈ Configuration

    Set environment variables for your AdGuard instance:

    export ADGUARD_URL="http://192.168.1.100:3000"      # Your AdGuard IP and port
    export ADGUARD_USERNAME="admin"                     # Usually 'admin' (default)
    export ADGUARD_PASSWORD="your_admin_password"       # REQUIRED
    

    Add to ~/.bashrc or ~/.zshrc for persistence.

    Config File Alternative

    Create ~/.adguard/config.json (optional):

    {
      "url": "http://192.168.1.100:3000",
      "username": "admin"
    }
    

    Then set ADGUARD_PASSWORD separately for security.

    πŸ“‹ Tips & Best Practices

    Error: Failed to authenticate β†’ Check ADGUARD_PASSWORD is correct and set β†’ Verify ADGUARD_URL points to the right IP and port

    Error: API call failed (HTTP 401) β†’ Authentication failed, check credentials

    Rules don't take effect β†’ Run adguard.sh cache-clear to flush DNS cache β†’ Wait 5+ minutes for clients to refresh their cache β†’ Restart your device's network connection

    Can't connect to AdGuard β†’ Verify device is on the same network β†’ Check firewall isn't blocking port 3000 β†’ Ping the device: ping