88c3508f92d0784091fa049edf66aefa995653ed
AdGuard Monitor
Monitoring service for AdGuard DNS queries with notifications sent to Home Assistant.
Who is this for?
This is for me mainly, so let's see if you need it too. Adguard Monitor is designed for openclaw, which should usually NEVER make a request that needs to be blocked. If it does, I want to know about it immediately.
Features
- Multi-Client Support: Monitor specific IP addresses and receive nicknamed notifications (e.g., "BLOCKED: My Laptop").
- Strict Configuration: Fails fast if environment variables are missing.
- Home Assistant Notifications: Native mobile push messages for blocked queries.
- Custom Domain Monitoring: Monitor specific domains using list.txt (wildcards supported).
- Structured Logging: UTF-8 encoded logging for unicode emoji support.
Setup
-
Clone the repository.
-
Install dependencies:
pip install -r requirements.txt -
Configure environment: Copy
.env.exampleto.envand fill in your details:cp .env.example .env -
Custom Domains (Optional): Copy list.example.txt to
list.txtand add domains:cp list.example.txt list.txt- Lines starting with
!are negative filters (they will be ignored). - Wildcards like
*.example.comare supported.
- Lines starting with
-
Run the monitor:
python monitor.py --interval 15
Environment Variables
ADGUARD_URL: Full URL of your AdGuard instance (e.g.,http://192.168.1.50).ADGUARD_USER/PASSWORD: API credentials.CLIENTS: A JSON-formatted dictionary mapping IPs to display names.HASS_URL/TOKEN: Home Assistant mobile notification endpoint and Long-Lived Access Token.HASS_TITLE_TEMPLATE: (Optional) Template for notification title. Available:{event_type},{client_name},{host},{reason}. Default:{event_type}.HASS_MSG_TEMPLATE: (Optional) Template for notification body. Available: same as title. Default:{client_name} tried to access "{host}".
Description
Languages
Python
100%