Know who uses your DNS, see every cluster node side by side, and jump anywhere with Ctrl K. Every feature of the stock console works as before, through the same API: checked against Technitium DNS Server 15.6.2. Beside them, this release adds screens the stock console never had. Each one only uses calls the stock console already makes, and each is written down, with its limits, in CONVENTIONS.md.
New
- A Clients page, first under Monitoring. A strip counts the clients and names the most active and the most blocked, with the blocked share of the latest 1,000 queries; a bar shows the busiest clients side by side by their share, a click opening one. The list shows every client of the period (the stock Dashboard's Top Clients, up to 1,000) with its queries, how much of its latest queries was blocked and a
High block ratetag, with a search, filters (High block rate,Quiet) and an order, all kept in the address bar. A client opens as a card beside the list on a wide screen, or as its own page on a narrow one: its DHCP lease (MAC address, host name, scope), its last query, Show Query Logs and Copy IP, and from its latest 500 queries the blocked share, the cache hit rate, the median response time, its activity over time, its top and top blocked domains, its protocols and record types and its latest queries. Without a query logging app it still lists the clients and says why the rest is missing. - Act on a client from its card: let it bypass blocking or exempt it from rate limiting (Settings' Blocking Bypass List and QPM Limit Bypass List, after a confirmation), and reserve its DHCP lease or make it dynamic again, as DHCP › Leases does.
- A command palette: Ctrl+K (⌘K on a Mac), or the search field at the top of the sidebar, jumps to any page, Settings pane or zone, and takes a typed name straight to Blocking's check, DNS Client, Query Logs, the cache, your rules or the settings search. It remembers the last entries you ran.
- Response Time on the Dashboard: the median, the 95th percentile, the share over 100 ms and a histogram of the upstream round trips among the latest 1,000 logged queries. The card says first how many of them went upstream, and with fewer than 20 the second figure is the slowest one. Query Logs shows each answer's round trip under its response type again, as the stock console does.
- From query to answer, on the Dashboard: beside Response Time, a flow of the latest logged queries from how the server answered them to what it answered; each kind and code opens Query Logs filtered by it.
- Choose a window on the Queries chart: dragging across it opens Query Logs from the start of its first point to the end of its last, as clicking one point opens that point. It works with the mouse, a pen or a finger.
- Query Logs' Live Update looks live: a beating dot beside the switch counts the logs that arrived since it was turned on, and each new row flashes once as it comes in.
- Blocking › Settings: the blocking options have their own page in the Blocking section, and
/settings/blocking/still lands there. - Blocking › Lists remembers and saves in one step: the Next update cell says when the lists were last updated, a Block list growth cell keeps the Block List Domains count each time it changes (in this browser only) with what each update added or removed, and Save and Update Now saves and then asks to update. The Block, Allow and Check bar says as you type whether one of your own rules, the name or a parent, already blocks or allows it.
- Blocking's Overview shows more: whether blocking is on sits in the header beside the period, as a pill (green, amber with the time it comes back, red) with the same Disable menu; checking, blocking or allowing a domain is one bar across the page; Total Queries and Blocked show their change against the previous period; and Blocked by client lists the clients behind the latest 1,000 blocked queries, with the query types they asked for.
- Quick add of a host record: a name and an address in the zone list's toolbar add an A or AAAA record to the zone the name belongs to, with the reverse (PTR) record if you tick it, and the notice opens that zone.
- Zones at a glance: the zone list opens with cards for all zones by type, their health, how many are signed and the last change; a zone opens with cards for its records, its SOA, its name servers and its DNSSEC. The open zone, the list's page and filters, and a zone's records page are in the address bar, so a reload, a bookmark or a shared link returns to them.
- DHCP scope usage: each enabled scope shows how many of the addresses in its range are leased, Dynamic and Reserved, as a share and a bar that turns amber above 80%.
- The login's password field can show what was typed and says when Caps Lock is on.
On a cluster
Each node keeps its own cache, query log, DHCP leases and copy of the block lists, and the stock console shows one node at a time. On an initialised cluster, All nodes lays them side by side. A node that does not answer is named once with the server's message and left out of the comparison. These views are new: if you run a cluster, a report of how they behave on yours is welcome.
- Zones: every zone with its type and serial on each node, and whether it is healthy, only on some nodes, has a serial that differs or is disabled on a node, with filters for each.
- Cache: how many records each node holds at the domain you are browsing, one row per record with each node's time left (or
not cached here), and filters for the records on every node or on some only. Flush Cache and Delete still act on the node chosen. - Query Logs: the query sent to every node, the newest entries of all of them in one table with a Node column and each node's own total for the filters. Only the newest page is offered in this view, and Live Update follows every node.
- DHCP: every node's leases and scopes together with a Node column. Converting or removing a lease and enabling, disabling, editing or deleting a scope act on the row's node, and a scope of the same name on two nodes counts as two.
- Block lists: each node's Block List Domains, when it last updated its lists and when it updates them next. Update Now becomes Update Now on All Nodes, the same call: the server already passes it on to every node.
- Administration › Cluster splits a period's Total Queries by node and compares a curated set of the nodes' settings side by side, the ones that differ first, with "Show only differences".
- The Dashboard's Queries can draw one line per node with
Compare nodes.
These views keep their choice in the address bar (?nodes=all), and each node has the same colour in all of them.
Every screen redrawn
- A sidebar grouped by task: Monitoring, DNS, Network, Tools and System, with Query Logs and View Logs as entries of their own; Blocking, DHCP and Administration unfold their screens in the sidebar instead of tabs under the title, and the page you are on is always in view. The top reads Technitium Console with the console's version, beside Technitium's mark redrawn in a blue tile; the server's domain and version sit in a card above the account, each with its Update mark. The same mark is on the login, About and the browser tab.
- The account menu reads in groups, each entry with an icon and Logout apart, in red.
- The login screen: the form on a floating card beside a cover that names the console, in both themes and at phone width. Nothing the form sends has changed.
- The Dashboard's figure cards drop their curved coloured edge for a straight bar and mark the latest reading on each trend; Last Hour shows a live dot while it refreshes by itself.
- Zones: the list keeps only Name and Type above it and puts every action in one row menu in the stock order, split into groups with an icon each. A zone shows its state, type, serial and last change under its title, a summary of its records by type that filters when pressed, and compact records. Disable Zone and Delete Zone move to the foot of the zone's page, and Delete Zones waits for a selection.
- Cache reads like a zone: the open node is the header, with its path, Refresh, Delete and Flush Cache, then cards for its records by type, the time left before the next one expires, how many are stale, their DNSSEC states and the servers that answered; a record kept past its TTL is marked
Stale. The open node and the record type are in the address bar. - Apps opens with four cards (installed apps and their store status, classes by kind, what serves Query Logs, what APP records can use), and the installed apps and the App Store are tables with a search and More Details under the row. App Config numbers its lines and says whether the text is valid JSON.
- DNS Client draws the answer: cards for the response code, the answer by record type, the server and the header flags; the Question, Answer, Authority, Additional and Extended DNS Errors sections as tables; the JSON as its own tab; and the query in the address bar so a link repeats it. The empty card lists your recent queries to run again with one press.
- DHCP reads like Cache and Zones: one line per lease and per scope with the rest under Details, a search and a State filter, and a scope that opens as its own page with cards for its pool, leases, reservations and options.
- Logs reads like Cache: View Logs opens with cards for the log folder over a one-line-per-file table, and an open file becomes its own page. Query Logs opens with cards for the page on screen that set the matching filter, keeps its filters inside the results card, and keeps the query in the address bar.
- Settings reads as one form: one menu at the left with the sub-sections, a search that narrows the rows and counts matches in every sub-section, each field's help under its label, and a save bar at the foot of the window that says what would change. Backup, Restore and Flush Cache move to the header.
- Administration reads like the rest: Permissions is one matrix of sections by groups and users, about a third of its old height; Users, Groups and Sessions are data tables with a search; SSO and LDAP show whether they are enabled and configured.
- Blocking reads like Cache and Administration: Overview and Lists open with a strip of figures, every list is one card with its controls in the toolbar and its count in the foot, and Rules' tree is the same card with a trail to the node.
- My Profile is a page (
/profile/) instead of a dialog: your sessions in a filterable table where you can also create an API token, beside your profile, password and two-factor, groups, last logins and the theme. - About: the server is the header, with the console's mark, its domain and what is running on one line; Technitium's sections are blocks of link rows, every sentence as the stock console writes it. The console's column starts with Support the Console, in its own colour, saying that these donations go to the console's author while Technitium's Donate supports the DNS server.
- Every dialog reads like Add Zone: labels above their fields, short fields in pairs, choices as tiles, one surface without lines under the title or over the buttons, and a red warning sign on a confirmation that deletes. Choosing a file is a drop zone.
- Tables, buttons and states: lighter table headers and flat pagination; flat buttons, with icons on the main actions; destructive buttons outlined in red on a page and solid red in the dialog that confirms; states as a dot and a word; the period picker as a joined group; results that float in the bottom right corner; skeleton bars while loading; and every save bar with its buttons at the right and Save last.
Fixed
- Zones: a zone that does not exist shows the server's own message, as the stock console does, instead of "Unable to connect to the server". On the way: the refresh beside a zone's title, the IDN title, the status colours, the expiry with its seconds, the catalog's own name,
Propertiesin the DNSSEC menu and thesecondsafter the SOA timers. - Query Logs: the pages do nothing while Live Update is on, as in the stock console.
- DNSSEC Properties: the three notes under the keys are the stock console's own, the key generation choice has its Key Generation label, the DNSKEY TTL says its default and is saved with Update TTL, the warning about waiting for the old TTL is back, and the NSEC3 fields say their valid ranges.
- DNS Client: Import asks first, as the stock console does. Enter resolves, a pasted URL is cut to its host, choosing the recursive resolver or the system DNS sets the protocol to UDP, a server typed by hand joins the list, and an error shows the reason under it too.
- DHCP Leases: converting or removing a lease on a sorted table acts on the row clicked. It could act on another lease.
Install or update: run the one-line installer from the README again. Which console goes with which server: CHANGELOG.
On Docker: docker compose pull technitium-console && docker compose up -d technitium-console, or pin ghcr.io/bygarcia/technitium-console:1.4.0. See Docker.
What's Changed
Full Changelog: v1.3.4...v1.4.0