---
title: "AdGuard — Two Parallel Instances, Identifying the Real Production One"
aliases: [adguard-duplicate-instances, adguard-shadow-instance, adguard-homelab-diagnostic]
tags: [adguard, homelab, dns, proxmox, lxc, docker, diagnostic]
sources:
  - "daily/2026-05-03.md"
created: 2026-05-03
updated: 2026-05-03
---

# AdGuard — Two Parallel Instances, Identifying the Real Production One

In a Proxmox homelab with LXC containers, it is possible to end up with two AdGuard Home instances running simultaneously on different IPs — one empty/unconfigured (a forgotten placeholder CT) and one fully configured production instance. The router may point DNS to the wrong one, silently making all filtering ineffective.

## Key Points

- **Two AdGuard instances can coexist on different IPs** — router DNS points to only one; if it points to the wrong one, filtering is silently disabled
- **The empty instance shows no query log** — open both UIs, check the query log; the real one will have active queries
- **Check the blocklist count** — the production instance has imported blocklists; the placeholder shows 0 lists
- **The fix is router-side** — update the DNS server IP in router settings to point to the production AdGuard; then destroy the placeholder CT

## Details

### How This Happens

During homelab setup, a new LXC container (CT101) was created as a placeholder for AdGuard. Later, a Docker-based AdGuard was deployed inside CT102 for better maintainability alongside the rest of the monitoring stack. CT101 was never configured or destroyed. Both were reachable:

| Instance | IP | Type | State |
|----------|----|------|-------|
| CT101 | 192.168.1.62 | LXC native | Empty — no blocklists, no rewrites |
| CT102 Docker | 192.168.1.225 | Docker in CT102 | Production — full config, blocklists, DNS rewrites |

The router was pointing to `192.168.1.62` (CT101), so all DNS queries bypassed filtering entirely.

### How to Identify the Real Instance

1. **Open both UIs** — `http://192.168.1.62` and `http://192.168.1.225`
2. **Check the Dashboard query log** — the production instance shows live queries within seconds; the placeholder shows zero
3. **Check Filters → DNS blocklists** — production has multiple lists enabled; placeholder shows none
4. **Check DNS rewrites** — production has all internal service rewrites; placeholder has none

### Fix

1. Update router DNS: `Advanced → DNS` (varies by router) → Primary DNS: `192.168.1.225`
2. Verify filtering is working: query a known blocked domain; should return `0.0.0.0`
3. Destroy placeholder CT: Proxmox UI → CT101 → Stop → Destroy

### Prevention

- Destroy placeholder CTs as soon as the real service is deployed elsewhere
- Document which IP each AdGuard instance (or any duplicate service) runs on in a homelab inventory
- Use distinct hostnames (`adguard.local` vs `adguard-old.local`) to make both UIs accessible without remembering IPs

## Related Concepts

- [[wiki/concepts/adguard-dns-rewrites-homelab]] — DNS rewrites and blocklist configuration for the production AdGuard instance
- [[wiki/concepts/adguard-blocklist-setup]] — blocklist selection and Custom filtering rules
- [[wiki/homelab/_index]] — homelab infrastructure overview; CT102 is the monitoring stack container

## Sources

- [[daily/2026-05-03.md]] — Security audit revealed CT101 (192.168.1.62) was an empty AdGuard placeholder; CT102 Docker (192.168.1.225) was the real production instance with all config; router DNS was pointing to the wrong one; CT101 scheduled for destruction
