AdGuard Home — a network-wide DNS server that blocks ads, trackers, and malware for every device on your network, with a web dashboard, filter lists, and per-client rules. Deployed as a single host-networked Nomad service with work and config volumes.
Save as values.hcl, edit, then run:
# The name of the Nomad job.
job_name = "adguardhome"
# The Nomad namespace to deploy into.
namespace = "default"
# The datacenters to deploy to.
datacenters = ["*"]
# The AdGuard Home container image. Pin a tag in production.
image = "adguard/adguardhome:latest"
# Host port for the DNS server (TCP and UDP).
dns_port = 53
# Host port for the first-run setup wizard.
setup_port = 3000
# Host port for the admin dashboard (choose this same value in the setup wizard).
web_port = 80
# Named volume for runtime data — query log, stats, filters (/opt/adguardhome/work).
work_volume = "adguardhome_work"
# Named volume for the configuration file (/opt/adguardhome/conf).
conf_volume = "adguardhome_conf"
# Placement constraints. Pin to the node holding the volumes. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []
# The task resources.
resources = {
cpu = 300
memory = 256
}
| Name | Type | Default | Description |
|---|---|---|---|
| job_name | string | "adguardhome" | The name of the Nomad job. |
| namespace | string | "default" | The Nomad namespace to deploy into. |
| datacenters | list | ["*"] | The datacenters to deploy to. |
| image | string | "adguard/adguardhome:latest" | The AdGuard Home container image. Pin a tag in production. |
| dns_port | number | 53 | Host port for the DNS server (TCP and UDP). |
| setup_port | number | 3000 | Host port for the first-run setup wizard. |
| web_port | number | 80 | Host port for the admin dashboard (choose this same value in the setup wizard). |
| work_volume | string | "adguardhome_work" | Named volume for runtime data — query log, stats, filters (/opt/adguardhome/work). |
| conf_volume | string | "adguardhome_conf" | Named volume for the configuration file (/opt/adguardhome/conf). |
| constraints | list | [] | Placement constraints. Pin to the node holding the volumes. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". |
| resources | object | {
cpu = 300
memory = 256
} | The task resources. |
No variables match.
AdGuard Home — a network-wide DNS server that blocks ads, trackers, and malware for every device on your network, with a web dashboard, filter lists, DNS-over-HTTPS/TLS, and per-client rules.
Single host-networked Nomad service with work and conf volumes.
nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run adguardhome --registry=nomploy
| Variable | Default | Description |
|---|---|---|
dns_port |
53 |
DNS server port (TCP + UDP). |
setup_port |
3000 |
First-run setup wizard port. |
web_port |
80 |
Admin dashboard port (pick this in the wizard). |
work_volume |
adguardhome_work |
/opt/adguardhome/work — query log, stats, filters. |
conf_volume |
adguardhome_conf |
/opt/adguardhome/conf — configuration. |
image |
adguard/adguardhome:latest |
Container image. Pin a tag in production. |
resources |
{ cpu = 300, memory = 256 } |
Task resources. |
Open http://<node-ip>:3000, run the wizard, keep the admin interface on web_port and DNS on
dns_port, and create your login. Then set your router's (or devices') DNS to <node-ip>.
Port
53must be free on the host — asystemd-resolvedstub listener commonly holds it; disableDNSStubListeneror choose anotherdns_port. Pin the job to the node holding the volumes withconstraints.