Skip to main content

Technitium

@thomas/technitiumv2026.05.24.1· 1d agoMODELS
01README

Management of a Technitium DNS Server via its HTTP API — built-in ad-blocking control (enable/disable, temporary disable, allow/block list URLs), authoritative zone + record lifecycle, allowed/blocked custom domains, dashboard stats, DNS client + query-log debugging, cache flush, and settings backup/restore.

02Models1
@thomas/technitiumv2026.05.24.1technitium.ts

Global Arguments

ArgumentTypeDescription
baseUrlstringTechnitium base URL including port, e.g. https://dns.example:5380
apiTokenstringPermanent Technitium API token. Supply via vault: ${{ vault.get(technitium, api_token) }}
skipTlsVerifybooleanAccept self-signed certs (default false — a valid cert is expected)
fn blocking_get_settings()
Get the blocking-relevant server settings (enable state, temp-disable expiry, list URLs).
fn blocking_set_state(enable: boolean)
Enable or disable DNS blocking permanently (writes only `enableBlocking`).
ArgumentTypeDescription
enableboolean
fn blocking_temporary_disable(minutes: number)
Temporarily disable blocking for N minutes; it re-enables automatically afterwards.
ArgumentTypeDescription
minutesnumberMinutes to disable blocking (e.g. 5, 15, 30, 60, 1440)
fn blocking_set_lists(blockListUrls?: array, allowListUrls?: array)
Set the block-list and/or allow-list URLs (comma-joined; only the lists you provide are changed).
ArgumentTypeDescription
blockListUrls?array
allowListUrls?array
fn blocking_force_update_lists()
Force an immediate refresh of all configured block-list URLs.
fn zone_list()
List all zones (factory: one `zone` per entry, keyed by zone name).
fn zone_create(zone: string)
Create an authoritative zone.
ArgumentTypeDescription
zonestringZone name, e.g. lab.example.com
fn zone_delete(zone: string)
Delete a zone.
ArgumentTypeDescription
zonestring
fn zone_enable(zone: string)
Enable a previously disabled zone.
ArgumentTypeDescription
zonestring
fn zone_disable(zone: string)
Disable a zone without deleting it.
ArgumentTypeDescription
zonestring
fn record_list(zone: string)
List all records in a zone (factory: one `zoneRecord` per record).
ArgumentTypeDescription
zonestring
fn record_get(zone?: string, domain: string)
Read the live records at a single domain straight from Technitium (factory: one `zoneRecord` each). Ground-truth read-back for one name — unlike `record_list` it queries a single domain rather than the whole zone.
ArgumentTypeDescription
zone?stringZone name; inferred by Technitium if omitted
domainstringRecord owner FQDN to read live
fn record_add(zone?: string, domain: string, type: string, ttl?: number)
Add a record. `rData` carries the type-specific fields (e.g. { ipAddress } for A, { cname } for CNAME, { exchange, preference } for MX).
ArgumentTypeDescription
zone?stringZone name; inferred from domain if omitted
domainstringRecord owner FQDN
typestringA | AAAA | CNAME | TXT | MX | SRV | NS | PTR | ...
ttl?number
fn record_update(zone?: string, domain: string, type: string, ttl?: number, newDomain?: string)
Update a record. `rData` identifies the existing record; `newRData` carries the new values (mapped to Technitium's new* params).
ArgumentTypeDescription
zone?string
domainstring
typestring
ttl?number
newDomain?stringRename the record owner, if set
fn record_delete(zone?: string, domain: string, type: string)
Delete a record. `rData` identifies which record (e.g. { ipAddress }).
ArgumentTypeDescription
zone?string
domainstring
typestring
fn allowed_add(domain: string)
Add a domain to the built-in Allowed zone.
ArgumentTypeDescription
domainstring
fn allowed_delete(domain: string)
Remove a domain from the built-in Allowed zone.
ArgumentTypeDescription
domainstring
fn allowed_list(domain?: string)
List domains in the built-in Allowed zone (factory: one `listEntry` per domain).
ArgumentTypeDescription
domain?stringSub-tree to list; root if omitted
fn allowed_flush()
Remove all domains from the built-in Allowed zone.
fn blocked_add(domain: string)
Add a domain to the built-in Blocked zone.
ArgumentTypeDescription
domainstring
fn blocked_delete(domain: string)
Remove a domain from the built-in Blocked zone.
ArgumentTypeDescription
domainstring
fn blocked_list(domain?: string)
List domains in the built-in Blocked zone (factory: one `listEntry` per domain).
ArgumentTypeDescription
domain?stringSub-tree to list; root if omitted
fn blocked_flush()
Remove all domains from the built-in Blocked zone.
fn client_resolve(domain: string, type: string, server: string, protocol: enum, dnssecValidation?: boolean)
Resolve a domain via the server's DNS client, for debugging. Output is ephemeral.
ArgumentTypeDescription
domainstring
typestring
serverstringthis-server | recursive-resolver | system-dns | <ip/hostname>
protocolenum
dnssecValidation?boolean
fn logs_query(appName: string, classPath: string, pageNumber?: number, entriesPerPage?: number, descendingOrder?: boolean, start?: string, end?: string, clientIpAddress?: string, protocol?: string, responseType?: string, qname?: string, qtype?: string, qclass?: string)
Query recent DNS query logs (factory: one `queryLog` per entry). Requires the Query Logs (Sqlite) DNS app to be installed.
ArgumentTypeDescription
appNamestringDNS app providing query logs (override if your install differs)
classPathstringApp class path (override if your install differs)
pageNumber?number
entriesPerPage?number
descendingOrder?boolean
start?stringISO 8601 start time
end?stringISO 8601 end time
clientIpAddress?string
protocol?string
responseType?string
qname?string
qtype?string
qclass?string
fn cache_flush()
Flush the entire DNS cache.
fn cache_list(domain?: string)
List cached zones/records under a domain (factory: one `cacheEntry` per name).
ArgumentTypeDescription
domain?stringSub-tree to list; root if omitted
fn cache_delete(domain: string)
Delete a cached domain entry.
ArgumentTypeDescription
domainstring
fn dashboard_stats(start?: string, end?: string)
Get dashboard query statistics for a time range.
ArgumentTypeDescription
start?stringISO 8601 start (when type=Custom)
end?stringISO 8601 end (when type=Custom)
fn settings_backup(options?: record)
Download a full settings backup (zip) and store it as a `backup` file. May contain secrets.
ArgumentTypeDescription
options?recordSection flags (blockLists, zones, allowedZones, blockedZones, scopes, apps, dnsApps, authConfig, logs, stats). Defaults to a config-only backup.
fn settings_restore(filePath: string, options?: record, deleteExistingFiles?: boolean)
Restore settings from a local backup zip (multipart upload). Verify the file before running this.
ArgumentTypeDescription
filePathstringAbsolute path to the backup zip on the swamp host
options?recordSection flags controlling what to restore (mirrors settings_backup).
deleteExistingFiles?booleanDelete existing config files not present in the backup

Resources

zone(infinite)— An authoritative DNS zone
zoneRecord(30d)— A resource record within a zone
settings(infinite)— Blocking-relevant server settings (enable state, temp-disable, list URLs)
stats(1d)— Dashboard query statistics for a time range
listEntry(infinite)— A domain in the built-in Allowed or Blocked zone
dnsResponse(ephemeral)— Result of a DNS client resolve (debugging — ephemeral)
queryLog(7d)— A query-log entry (requires the Query Logs (Sqlite) app)
cacheEntry(1h)— A cached zone or record name
operationResult(infinite)— Result of a one-shot operation (flush, temp-disable, restore, ...)

Files

backup(application/zip)— A full Technitium settings backup (zip). May contain secrets — short-lived.
03Previous Versions1
2026.05.23.1May 23, 2026
04Stats
A
100 / 100
Downloads
0
Archive size
31.3 KB
  • Has README or module doc2/2earned
  • README has a code example1/1earned
  • README is substantive1/1earned
  • Most symbols documented1/1earned
  • No slow types1/1earned
  • Dependencies pass trust audit2/2earned
  • Has description1/1earned
  • Platform support declared (or universal)2/2earned
  • License declared1/1earned
  • Verified public repository2/2earned
05Platforms
06Labels