No description
  • Go 91.3%
  • Shell 5.9%
  • Dockerfile 2.8%
Find a file
2026-03-17 21:23:18 +07:00
.dockerignore feat: add Docker deployment and graceful shutdown 2026-03-13 09:33:18 +07:00
.gitignore feat: working dns and scraper 2026-03-13 09:08:50 +07:00
config.go feat: add router domain name && refacctor redis logic 2026-03-13 12:28:29 +07:00
dns.go fix: use DOH wire format to avoid changing types 2026-03-13 22:02:16 +07:00
docker-compose.dev.yml feat: add Docker deployment and graceful shutdown 2026-03-13 09:33:18 +07:00
docker-compose.yaml feat: add Docker deployment and graceful shutdown 2026-03-13 09:33:18 +07:00
Dockerfile feat: use comment as hostname if available 2026-03-17 21:23:18 +07:00
doh.go fix: dot use custom type 2026-03-13 22:12:10 +07:00
doh.sh feat: working dns and scraper 2026-03-13 09:08:50 +07:00
fetch-and-cache.go fix: TTL on router dns 2026-03-14 07:34:18 +07:00
go.mod feat: working dns and scraper 2026-03-13 09:08:50 +07:00
go.sum feat: working dns and scraper 2026-03-13 09:08:50 +07:00
main.go chore: forgor to use ttlminutes from args 2026-03-14 07:46:50 +07:00
README.md chore: add readme 2026-03-13 09:11:14 +07:00
scraper.go feat: use comment as hostname if available 2026-03-17 21:23:18 +07:00

Nomen

Local DNS server that resolves hostnames from Mikrotik DHCP leases.

Nomen is Latin for "name" — fitting for a DNS server that gives names to your local devices.

Features

  • Scrapes DHCP leases from Mikrotik routers via RouterOS API
  • Caches records in Redis with configurable TTL
  • Falls back to DNS-over-HTTPS (Cloudflare) for external queries
  • Supports custom TLDs for local domains
  • Multiple Mikrotik routers supported

Configuration

Edit config.yaml:

Mikrotik:
  - IP: "10.0.64.1"
    Port: 8728
    User: "admin"
    Password: "password"
    TLD: "alsut"          # Leave empty for no TLD

DohServer: "https://1.1.1.1/dns-query"
RedisURL: "localhost:6379"
Port: 53
Proto: "udp"
ScrapeIntervalMinutes: 5
DnsTTLMinutes: 10

Running

Start Redis:

docker compose up -d

Run the server:

go run .

Testing

Query your DNS server:

dig @localhost -p 53 creeprair.alsut

Requirements

  • Go 1.25+
  • Redis
  • Mikrotik router with API access