DNS Panel
DNS Panel
A Next.js panel for managing a Technitium DNS Server, with per-zone permissions, passkey login, and an audit log.
DNS Panel is a Next.js 16 panel for managing a Technitium DNS Server. Multiple panel users share a single central Technitium API token, while per-zone access control happens inside the panel itself.
What it does
- Sign in via passkey (WebAuthn) or password. Passkeys are registered per user inside the panel; a password login is also available.
- User management. Create panel users and toggle each user's role between
adminanduser, with guards against self-demotion and removing the last admin. - Per-zone permissions as a 4-level ladder:
none→view→edit→full(view / edit / delete). - Zones & records viewed and edited through the Technitium API. Record names are
entered relative —
testinstead oftest.example.com,@for the zone apex. - Audit log of all security-relevant actions, plus a DNS query log.
- Bilingual (German / English), switchable per user.
How access works
Communication with Technitium runs through one central, non-expiring API token.
The panel does not give each user their own Technitium credentials. Instead, per-zone
access control lives in the panel's database (the zone_permissions table):
- Admins see all zones, manage users, toggle roles, and set the zone permission per user.
- Users only see the zones they are authorized for; records can be viewed, added, changed, or deleted depending on their permission level.
Tech stack
- Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS
- Drizzle ORM + PostgreSQL (users, passkeys, permissions, audit log)
- @simplewebauthn/server for passkey registration and login, bcryptjs for password hashing