A Flask web application to manage ISC Kea DHCP and BIND/named DNS services — subnets, reservations, leases, zones, and records — all from a single UI.
View, create, edit, and delete Kea subnets including pools and DHCP options.
Add and manage static MAC → IP reservations for predictable host addressing.
View and delete active DHCP leases returned by the Kea Control Agent API.
Browse forward and reverse zones via AXFR and manage records interactively.
Add, edit, and delete A, AAAA, CNAME, MX, TXT, PTR, NS, and SRV records.
Run rndc commands — status, reload, flush, freeze/thaw — directly from the UI.
Kea Control Agent must be running on port 8000 on the host (kea-ctrl-agent & kea-dhcp4-server).
Zone transfers (AXFR) from localhost must be allowed, dynamic updates enabled, and /etc/bind/rndc.key accessible.
The app runs in a Docker container with host networking to reach both services.
Option 1 — pull the pre-built image directly:
docker run -d \
--name dhcp-dns-manager \
--network host \
--restart unless-stopped \
ghcr.io/ftsiadimos/dhcp-named-manager:latest
Option 2 — Docker Compose:
services: dhcp-dns-manager: image: ghcr.io/ftsiadimos/dhcp-named-manager:latest network_mode: host restart: unless-stopped volumes: - ./data:/data
docker compose up -d