As a backend project, lissy93/AdGuardian-Term has picked up 1.7k stars on GitHub (Rust). π‘οΈ Terminal-based, real-time traffic monitoring and statistics for your AdGuard Home instance
Snapshot summary built from the project's own GitHub metadata β there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then β see the READ ME tab for the original README in full.
Terminal-based, real-time traffic monitoring and statistics for your AdGuard Home instance
About
AdGuardian Terminal Eddition - Keep an eye on your traffic, with this (unofficial) buddy for your AdGuard Home instance
Features
Real-time Query Monitoring: Fetches and displays all DNS queries in real time, letting you see exactly what's happening on your network at any given moment
Block and Allow Stats: Get a quick overview of the number of queries that have been allowed, filtered or blocked by AdGuard
Historical Query Counts: Analyze network activity over time with historical query count data. This lets you track trends and spot any unusual activity
Filter Lists: AdGuardian displays your active filter lists, showing which ones are doing the most work
Top Domain Statistics: See which domains are getting the most queries (blocked, allowed and otherwise) in your network
Easy and Lightweight: AdGuardian can be run either with a super tiny Docker image, or directly with the zero-dependency executable
Good and Safe: Written in Rust and unit tested, the app runs locally with no external requests, and (of course) it's fully open source
About AdGuard
AdGuard Home is a free and open source self-hosted (or managed) network-wide ad + tracker blocker. It operates as a DNS server that re-routes tracking domains to a "black hole", thus preventing your devices from connecting to those servers. It makes your internet, faster, safer and gives you a bunch of useful features, like encrypted DNS (DoH, DoT, DNSCrypt), parental controls, blocking of malware / phishing, per-device configs, custom DNS rules, etc.
Contents
About
Getting Started
Docker
Executable
Install from Crates.io
Build from Source
One-Liner
Configuring
With Flags
With Env Vars
In Docker
Troubleshooting
Web Mode
Development
Prerequisites
Run
Technical Docs
Testing and Quality
Building
Credits
Contributors
Sponsors
Dependencies
Mirror
Alterntives
Contributing
License
Getting Started
There are several options for running...
Docker
docker run -it lissy93/adguardian
You may also pass in your AdGuard info with env vars (using -e), see the Configuring section for an example, and list of available config params.
If you experience issues with DockerHub, or would rather use a different registry, the image is also available via GHCR - just replace the image name with: ghcr.io/lissy93/adguardian. Alternatively, if you'd like to build it yourself from source, you can do so with docker buildx build -t adguardian . then run it with docker run -it adguardian.
In the above example, don't forget to update the URL to download the latest stable version for your operating system
You may also just head over the the Releases tab, download the latest executable, and double-click on it to run
Install from Crates.io
cargo install adguardian
adguardian
AdGuardian is published as a crate to crates.io/crates/adguardian. So providing you've got Cargo installed, you can pull the binary directly, and then execute it as above. Again, see the Configuring section below for how to pass in your AdGuard info.
Build from Source
git clone [email protected]:Lissy93/AdGuardian-Term.git && \
cd AdGuardian-Term && \
make
You'll need git, cargo and make (see here for installation notes). You can also run the cargo commands defined in the Makefile directly, e.g. cargo run
Scoop
scoop install extras/adguardian
For Windows users, AdGuardian is available via the Scoop package manager, as part of the extras bucket - You'll need Scoop installed, then follow these instructions. This was contributed by @kzshantonu in ScoopInstaller/Extras#11386
AUR
paru -Syu adguardian
# or
yay -Syu adguardian
# or
git clone https://aur.archlinux.org/adguardian.git && cd adguardian && makepkg -si
This will run the quick-start.sh Bash script, which downloads and executes the latest binary for your system type. Be sure to read and understand the file first
Not sure which method to choose?
Docker is the easiest but needs to be installed, and adds a bit of overhead (12Mb, to be precise)
Whereas using the executable won't require any additional dependencies
If you've got Rust installed, fetching from crates.io will also be both easy and performant
If your system architecture isn't supported you'll need to build from source, as you also will if you wish to run a fork or make amendments to the code
Configuring
The app requires the details of an AdGuard instance to connect to.
This info can be provided either as environmental variables, or passed in as flag parameters.
If any of these fields are missing or incomplete, you'll be prompted to enter a value once the app starts.
The following params are accepted:
ADGUARD_IP / --adguard-ip - The IP address of your local AdGuard Home instance
ADGUARD_PORT / --adguard-port - The port that AdGuard is running on
ADGUARD_USERNAME / --adguard-username - An AdGuard Home username
ADGUARD_PASSWORD / --adguard-password - An AdGuard Home password
There's also some additional optional environment variables that you may set:
ADGUARD_PROTOCOL - The protocol to use when connecting to AdGuard (defaults to http)
ADGUARD_UPDATE_INTERVAL - The rate at which to refresh the UI in seconds (defaults to 2)
ADGUARD_TIMEOUT - The per-request timeout when contacting AdGuard, in seconds (defaults to 5)
ADGUARD_QUERYLOG_LIMIT - The number of query log entries to fetch per update (defaults to 100)
The chart is drawn with Unicode braille characters, so you'll need a braille-capable console font which might not be pre-installed on some Debian-based systems (like DietPi). Install console-braille, set FONT="Lat15-Fixed16.psf.gz brl-16x8.psf" in /etc/default/console-setup, then run sudo setupcon --save.
Authentication fails on a GL.iNet router
GL.iNet routers run AdGuard Home with --glinet, and since AdGuard Home v0.107.65 that mode only accepts the router's own login, not a username and password (AdguardTeam/AdGuardHome#8446). To use AdGuardian, add a user to AdGuard Home's config.yaml, then remove the flag with sed -i "s/--glinet //g" /etc/init.d/adguardhome and restart it. AdGuard Home will then ask for that login separately, instead of using your router session.
Web Mode
The terminal dashboard can also be viewed via a browser, thanks to ttyd.
Quick Start with Pre-built Docker Image
The easiest way to run AdGuardian in web mode is using a pre-built Docker image:
Note: This is a third-party Docker image (sdjnmxd/adguardian-web) and is not officially maintained by the AdGuardian-Term project. Use at your own discretion.
Then access it in your browser at http://localhost:7681
Manual Setup
AdGuardian is fully compatible with ttyd, so once you've installed it, you can just precede your run command with ttyd.
E.g. ttyd docker run -it lissy93/adguardian or ttyd adguardian
This might be useful for embedding into another app or dashboard (like Dashy π - although Dashy already has an AdGuard widget!)
Another great option is gotty, which works in a similar way. Note that if you want to allow user input, you'll need to pass the -w option.
You can also combine this with a service like ngrok to forward the port, and access the dashboard from anywhere. But be careful to apply the correct access controls!
Another fun idea, could be to display it on a little screen, either attached or SSH'd into your AdGuard box.
Development
Prerequisites
You'll need Rust installed. Run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - see the installation docs. You'll also need Git, if you don't already have it.
Then clone the repo, and cd into it, with: git clone [email protected]:Lissy93/AdGuardian-Term.git && cd AdGuardian-Term
You can view the full list of available project commands in the Makefile
Run
To build and run the project for development, run cargo run
Technical Docs
The documentation can be viewed at: lissy93.github.io/AdGuardian-Term
Testing and Quality
cargo test - Run unit tests
cargo check - Ensure app is compilable
cargo bench - Execute benchmarks
cargo clippy - Analyse areas for improvement
cargo doc - Generate the documentation
Building
Once your finished developing, you can build the project for production with: cargo build --release
The binaries for your system will then be available in the ./target/release/ directory of the project.
You can execute this directly, e.g. by running ./target/release/adguardian (add .exe if on Windows)
CI / CD
The testing, building, and publishing of the app is done with GitHub Actions.
Below is an outline + current status of each workflow.
Workflow
Status
Run quality + security checks on each PR and push
Bump version and push git tag on merge to main
Compile binaries and draft a release on each tag
Publish compiled app to crates.io
Build Docker image and push to registry
Generate documentation from Rustdoc, upload to GH pages
Sync repo with downstream codeberg mirror
Credits
Contributors
Sponsors
Dependencies
This project was made possible by the maintainers of the following dependencies
anyhow - Error objecr for idiomatic error handling
base64 - Base 64 encoding
chrono - Date + time parsing and manipulating
colored - Handling of terminal colors
crossterm - Term manipulation for kb + mouse events
futures - Extension of futures for async computation
reqwest - HTTP client
serde - Decerilization of JSON responses
tokio - Improved futures
tui-rs - Terminal graphing
Mirror
A mirror of this repository is published at: codeberg.org/alicia/adguardian
Alterntives
This project was heavily inspired by PADD - terminal status for Pi-Hole users. If you're running Pi-Hole instead of AdGuard, I highly recommend you check that out, as it's awesome.
Other developers have built similar AdGuard Home monitoring programs for mobile, including:
iOS app: AdGuard Home Remote by RocketScience IT
Android app: AdGuard Home Manager by JGeek00
If you're looking for more AdGuard add-ons, then check this section of their repo.
If you're running Dashy (a Homelab Dashboard app (which I am the author of)), then there's also 4 AdGuard Home Widgets.
Before I created this, I first built the same product in Go Lang. You can view that here - it's fully functional, but not as good as the Rust version (There were some valuable lessons that I learnt the hard way about choosing the right tech stack).
Contributing
Contributions of any kind are very welcome (and would be much appreciated!)
For Code of Conduct, see Contributor Convent.
For project setup, see the Development section.
Not a coder? You can support the project in other ways too, drop us a star, consider sponsoring us on GitHub, share within your network, and report any bugs you come across.
The MIT License (MIT)
Copyright (c) Alicia Sykes <[email protected]>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sub-license, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included install
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANT ABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
How does lissy93/AdGuardian-Term compare to other Backend projects?
lissy93/AdGuardian-Term is tracked by TopGit in the Backend category, with 1.7k GitHub stars and written in Rust. Browse the Backend topic page on TopGit to compare it against similar projects by stars and activity.
How many stars does lissy93/AdGuardian-Term have?
lissy93/AdGuardian-Term has 1.7k GitHub stars β refresh the page for the live number, or check github.com/lissy93/AdGuardian-Term. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is lissy93/AdGuardian-Term open source?
Yes β lissy93/AdGuardian-Term ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/lissy93/AdGuardian-Term.
What else is in the Backend space?
lissy93/AdGuardian-Term is tracked by TopGit under the Backend category, alongside 5 GitHub-tagged topics. Trending and Topics pages list peer repositories of comparable stars and language.
What is lissy93/AdGuardian-Term?
lissy93/AdGuardian-Term (lissy93/AdGuardian-Term) is a Rust project on GitHub. From the project's own README: π‘οΈ Terminal-based, real-time traffic monitoring and statistics for your AdGuard Home instance
Where can I see lissy93/AdGuardian-Term in action?
The project maintains a homepage at https://adguardian.as93.net. The README tab on this page also usually contains screenshots and a quickstart.
Where do I read more about lissy93/AdGuardian-Term?
This TopGit page is a snapshot β the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/lissy93/AdGuardian-Term is the definitive source.
Read full README in the tab above.
Still deciding about AdGuardian-Term?
One click hands the question to an AI along with this page β see what it says about AdGuardian-Term.