Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/lissy93/adguardian-term/llms.txt

Use this file to discover all available pages before exploring further.

When running AdGuardian in Docker, all configuration is done via environment variables passed with -e. The container exposes no ports and requires no volumes — it is a single static binary running in a scratch image that writes only to the terminal attached to it.

Required: interactive terminal flags

AdGuardian renders a full-screen TUI, so the container must be started with -it (allocate a pseudo-TTY and keep stdin open). Without these flags the terminal will not render correctly.

Basic docker run — required variables only

docker run \
  -e "ADGUARD_IP=192.168.180.1" \
  -e "ADGUARD_PORT=3000" \
  -e "ADGUARD_USERNAME=admin" \
  -e "ADGUARD_PASSWORD=yourpassword" \
  -it lissy93/adguardian

Full docker run — all variables

The example below additionally sets every optional variable:
docker run \
  -e "ADGUARD_IP=192.168.180.1" \
  -e "ADGUARD_PORT=3000" \
  -e "ADGUARD_USERNAME=admin" \
  -e "ADGUARD_PASSWORD=yourpassword" \
  -e "ADGUARD_PROTOCOL=http" \
  -e "ADGUARD_UPDATE_INTERVAL=2" \
  -e "ADGUARD_TIMEOUT=5" \
  -e "ADGUARD_QUERYLOG_LIMIT=100" \
  -it lissy93/adguardian
VariableDefaultPurpose
ADGUARD_IPIP address or hostname of your AdGuard Home instance
ADGUARD_PORTPort AdGuard Home’s HTTP API listens on
ADGUARD_USERNAMEAdGuard Home username
ADGUARD_PASSWORDAdGuard Home password
ADGUARD_PROTOCOLhttphttp or https
ADGUARD_UPDATE_INTERVAL2Dashboard refresh rate, in seconds (minimum 1)
ADGUARD_TIMEOUT5Per-request HTTP timeout, in seconds (minimum 1)
ADGUARD_QUERYLOG_LIMIT100Max query log entries fetched per update cycle

Docker Compose

services:
  adguardian:
    image: lissy93/adguardian
    stdin_open: true
    tty: true
    environment:
      ADGUARD_IP: "192.168.180.1"
      ADGUARD_PORT: "3000"
      ADGUARD_USERNAME: "admin"
      ADGUARD_PASSWORD: "yourpassword"
      ADGUARD_UPDATE_INTERVAL: "5"
stdin_open: true is the Compose equivalent of -i, and tty: true is the equivalent of -t. Both are required.

Alternative registry: GHCR

The image is published to both Docker Hub and the GitHub Container Registry. If you experience pull-rate limits on Docker Hub, replace the image name with the GHCR equivalent:
docker run \
  -e "ADGUARD_IP=192.168.180.1" \
  -e "ADGUARD_PORT=3000" \
  -e "ADGUARD_USERNAME=admin" \
  -e "ADGUARD_PASSWORD=yourpassword" \
  -it ghcr.io/lissy93/adguardian
The Docker image is built on a scratch base — the smallest possible base image — containing only the statically compiled AdGuardian binary and the CA certificate bundle copied from the Alpine builder stage. The resulting image is approximately 12 MB. There is no shell, no package manager, and no OS userland inside the container.
Hardcoding ADGUARD_PASSWORD directly in a docker-compose.yml file that is committed to version control will expose your credentials in your repository history. Instead, reference the value from a .env file that is listed in .gitignore, or use Docker secrets if you are running in Swarm mode. A .env file sitting next to your docker-compose.yml is automatically picked up by Compose:
# .env  (do NOT commit this file)
ADGUARD_PASSWORD=yourpassword
# docker-compose.yml
environment:
  ADGUARD_PASSWORD: "${ADGUARD_PASSWORD}"

Build docs developers (and LLMs) love