A Flask web application to manage Kea DHCP and BIND/named DNS services running on the host. The app runs in a Docker container with host networking to communicate with the services.
Dashboard
- View / Add / Edit / Delete subnets (pools, options)
- View / Add / Delete reservations (MAC → IP mapping)
- View / Delete leases
- Service status dashboard
- Browse zone records (AXFR)
- Add / Edit / Delete records (A, AAAA, CNAME, MX, TXT, PTR, NS, SRV)
- PTR (reverse DNS) management
- rndc console (status, reload, flush, freeze/thaw, etc.)
On the host machine:
-
Kea DHCP with Control Agent enabled on port 8000:
systemctl enable --now kea-ctrl-agent systemctl enable --now kea-dhcp4-server
-
BIND/named with:
- Zone transfers (AXFR) allowed from localhost
- Dynamic updates enabled (or TSIG key configured)
rndckey available at/etc/bind/rndc.key
-
Docker (with compose plugin)
Pull and run directly without cloning the repository:
docker run -d \
--name dhcp-dns-manager \
--network host \
--restart unless-stopped \
ghcr.io/ftsiadimos/dhcp-named-manager:latestOr with Docker Compose:
# docker-compose.yml
services:
dhcp-dns-manager:
image: ghcr.io/ftsiadimos/dhcp-named-manager:latest
network_mode: host
restart: unless-stopped
volumes:
- ./data:/datadocker compose up -d