User Guide

DHCP Server — install & user guide

DHCP Server is a free, self-hosted web console for the industry-standard ISC Kea DHCP engine. This guide takes you from a bare Ubuntu machine to a running dashboard with a single command, then walks through every module you'll use day to day.

Product
DHCP Server
Prepared by
Optimus Secure
Version
1.0 — August 2026
Overview

What it is

One dashboard for your whole DHCP service — instead of hand-editing config files and reading logs over SSH.

Under the hood it drives ISC Kea, the modern DHCP server used by ISPs and enterprises. The GUI talks to Kea's control agent, so every change you make in the browser is applied to the live server and saved to its configuration. It runs entirely on your own machine — no cloud, no account, no cost.

Subnets & pools Live leases Reservations IP allow-list Syslog & NTP Backup & restore Diagnostics
DHCP Server dashboard overview

The dashboard — subnet, lease and pool counts, Kea version, and a per-subnet overview.

Installation

Before you start

You need one Ubuntu server and about three minutes. Everything else is installed for you.

Operating systemUbuntu 22.04 LTS or 24.04 LTS (a fresh server is ideal)
AccessA user with sudo / root privileges
NetworkOutbound internet (to fetch Kea & dependencies) and a free TCP port 5000
Kea, Python, etc.Not required beforehand — the installer adds them all
⚠️
Run the installer on a machine that will be your DHCP server. It configures and starts the Kea DHCP service on that host.
Installation

Install in one command

Copy this into your Ubuntu terminal. It downloads the package, installs Kea and every dependency, and starts the dashboard.

root@ubuntu — install
$ curl -fsSL https://opsec.co.in/opsec/get.sh | sudo bash
That single line does everything — there is no second step to run. When it finishes it prints the URL to open.
1

Run the command

Paste it and press Enter. You'll see progress as it installs Kea 2.4, writes the configuration, and enables the service.

2

Wait for "Installation complete"

The whole build takes about two to three minutes on a fresh server.

3

Open the dashboard

Browse to the address it prints — http://your-server-ip:5000.

🔥
If a firewall (UFW) is active, allow the port: sudo ufw allow 5000/tcp
Installation

What gets installed

The one command sets up the full stack — you don't install Kea or Python separately.

ComponentDetails
Kea DHCP 2.4 LTSisc-kea-dhcp4-server, isc-kea-ctrl-agent, isc-kea-hooks from ISC's official repository
Python runtimepython3-flask, python3-requests, python3-werkzeug
Kea configurationControl agent on port 8000, DHCPv4 config, command socket and lease database
The GUIEncrypted application installed to /opt/kea-manager
System servicekea-manager on port 5000, auto-starting on every reboot
🔒
The client never receives readable source code — the application ships encrypted and is decrypted only in memory at run time.
Installation

First login

Sign in, then immediately set your own password.

URLhttp://your-server-ip:5000
Usernameadmin
Passwordadmin123 — you'll be prompted to change it on first login
🔑
Change the default password right away. Anyone who can reach port 5000 can otherwise sign in with the defaults.
Using the Console

Dashboard & modules

Nine modules cover everything you'd otherwise do by hand. Here's what each one is for.

ModuleWhat it does
DashboardLive counts of subnets, leases and pools, the Kea version, and a per-subnet overview
SubnetsAdd / edit / delete IPv4 subnets, pools, routers, DNS and lease options
LeasesSearch active leases by IP, MAC or hostname; release a lease
ReservationsPin a fixed IP to a MAC address, per subnet
Allow ListRestrict console access to approved IP addresses
SyslogForward DHCP events to a remote syslog server (with a test button)
NTPConfigure the server's time source
Backup / RestoreDownload a full Kea config snapshot and restore it later
DiagnosticsHealth-check Kea, the control agent and sockets; pinpoint failures
Active leases page

Active Leases — search and release.

Subnet management page

Subnets — pools, routers and DNS.

Reservations page

Reservations — fixed IP per MAC.

Diagnostics page

Diagnostics — one-page health check.

Using the Console

Managing the service

The GUI runs as a normal systemd service. Handy commands:

$ sudo systemctl status kea-manager # is it running? $ sudo systemctl restart kea-manager # restart the GUI $ sudo systemctl stop kea-manager # stop it $ sudo journalctl -u kea-manager -n 50 # view logs

The Kea DHCP engine itself:

$ sudo systemctl status isc-kea-dhcp4-server $ sudo systemctl status isc-kea-ctrl-agent
🩺
If anything looks off, open the Diagnostics page in the GUI first — it names the exact cause.
For Publishers

Encrypted deployment

This part is for whoever hosts the installer — how the single command above is built and served.

The client-side code is shipped obfuscated with PyArmor: the Python source and its string literals are encrypted and only decrypted in memory at run time, so an end user can't read, copy or edit the application. Building and publishing is a two-step flow on an Ubuntu machine:

# 1. Build the encrypted package $ bash opsec-package/build/protect.sh # 2. Publish it to the server (/var/www/opsec) $ bash opsec-package/server/deploy-to-server.sh
ℹ️
Obfuscation is strong protection against copying and tampering, but no code that runs on a client is 100% uncopiable. For a hard guarantee, keep logic server-side. Optional hardening (build expiry, device binding) is available in the build script.
Reference

Troubleshooting

Quick fixes for the things that occasionally go wrong.

SymptomFix
Dashboard won't loadCheck the service: sudo journalctl -u kea-manager -n 50, then open the in-app Diagnostics page
Can't reach port 5000Open the firewall: sudo ufw allow 5000/tcp
"Active Leases" is emptyInstall the hooks: sudo apt-get install -y isc-kea-hooks then restart Kea
Locked out by the Allow ListAccess from the server itself (localhost is always allowed) and remove your rule
Forgot the admin passwordDelete /opt/kea-manager/gui_auth.json and restart the service to reset to defaults
Support

Getting help

We build and support this ourselves — reach out any time.