Blocky vs Technitium: Which DNS Server?
Quick Verdict
Blocky is the better choice if you want a lightweight, config-file-driven DNS proxy for ad blocking in infrastructure-as-code setups. Technitium is better if you need a full DNS server with a web UI, zone hosting, DHCP, and advanced DNS features. They’re fundamentally different tools — Blocky is a DNS proxy, Technitium is a DNS server.
Overview
Blocky is a DNS proxy and ad blocker written in Go. It’s configured entirely via a YAML file with no web UI. It sits between your network and upstream DNS resolvers, caching responses and blocking unwanted domains. It’s built from a scratch Docker image (no OS, no shell), runs as UID 100, and uses about 30 MB of RAM. It’s ideal for declarative, version-controlled infrastructure.
Technitium DNS Server is a comprehensive authoritative and recursive DNS server with a full web UI. It can host zones, handle DNSSEC, serve DHCP, cluster for HA, and block ads — all from a browser-based admin panel. It’s built on .NET 9 and targets users who need real DNS server functionality.
Feature Comparison
| Feature | Blocky | Technitium |
|---|---|---|
| Type | DNS proxy | Full DNS server |
| Configuration | YAML file only | Web UI (after first boot) |
| Web UI | None (API + Prometheus metrics) | Comprehensive |
| Ad blocking | Core feature (filter lists) | Plugin-based (“Advanced Blocking” app) |
| DNS-over-HTTPS | Yes (client and server) | Yes |
| DNS-over-TLS | Yes | Yes |
| DNS-over-QUIC | No | Yes |
| Authoritative DNS | No | Yes |
| Zone hosting | No | Yes |
| Split-horizon DNS | No | Yes |
| DHCP | No | Yes |
| Clustering | Via Redis (sync blocklists/cache) | Built-in (v14+) |
| DNSSEC validation | Yes (v0.28+) | Yes |
| Conditional forwarding | Yes | Yes |
| Client-specific rules | Yes (per-client groups in YAML) | Yes (via web UI) |
| Prometheus metrics | Built-in | Built-in |
| Persistent storage | None needed (stateless) | Yes (/etc/dns) |
| Runtime | Go (scratch image) | .NET 9 |
| Docker image | spx01/blocky:v0.28.2 | technitium/dns-server:14.3.0 |
| License | Apache-2.0 | GPL-3.0 |
Installation Complexity
Blocky requires writing a YAML config file before it starts. There’s no setup wizard. You define upstream DNS servers, blocklists, client groups, and cache settings in config.yml, mount it into the container, and start. The upside: your entire DNS config is a single file you can version control.
Technitium starts with minimal configuration via environment variables on first boot. After that, everything is managed through the web UI. You click through settings rather than editing files. The UI has a learning curve due to the number of features.
Performance and Resource Usage
| Metric | Blocky | Technitium |
|---|---|---|
| RAM (idle) | ~30 MB | ~150 MB |
| RAM (with blocklists) | ~60 MB | ~250 MB |
| CPU | Very low | Low-Medium |
| Disk | 0 (stateless) | ~200 MB |
| Startup time | <2 seconds | ~10 seconds |
| Docker image size | ~15 MB (scratch) | ~200 MB (.NET runtime) |
Blocky is 5x lighter than Technitium. It’s stateless — no persistent volumes needed. Technitium stores all configuration, zones, and logs in /etc/dns.
Community and Support
Blocky has 5,200+ GitHub stars and active development. Releases are regular (v0.28.2 November 2025). The maintainer is responsive. Documentation is good, with clear YAML config reference and examples.
Technitium has 5,000+ GitHub stars and is developed by a solo developer. Regular releases, good documentation, and responsive community support. No GitHub Releases (versions tracked via Docker Hub and blog).
Use Cases
Choose Blocky If…
- You want DNS config as code (YAML file, version-controlled)
- You’re running in a Docker/Kubernetes environment with infrastructure-as-code practices
- You want the lightest possible DNS ad blocker
- You don’t need a web UI for day-to-day management
- You want to integrate with Prometheus/Grafana for monitoring
- You value simplicity — DNS proxy with blocking, nothing more
Choose Technitium If…
- You need authoritative DNS (host your own zones)
- You want a web UI for configuration and monitoring
- You need a DHCP server alongside DNS
- You want DNS-over-QUIC support
- You’re managing a more complex network
- You need DNS clustering for high availability
- You want point-and-click configuration vs. editing YAML files
Final Verdict
These tools complement different workflows rather than competing directly. Blocky is the minimalist’s choice — a single YAML file, stateless operation, minimal resources. Technitium is the power user’s choice — every DNS feature you could want in a web UI. Pick Blocky for a Kubernetes homelab or any setup where config-as-code matters. Pick Technitium when you need real DNS server features beyond proxying and blocking.
If your primary need is just ad blocking with a web UI, skip both and use AdGuard Home or Pi-hole instead.
FAQ
Can I migrate from Blocky to Technitium or vice versa?
There’s no migration path. Blocky uses a YAML config file and Technitium stores settings in its internal database. You’d need to manually recreate your configuration. Blocklists (URL format) are compatible between both.
Which is better for Kubernetes?
Blocky. It’s stateless, configured via a single file (perfect for ConfigMaps), lightweight, and built specifically for cloud-native environments. Technitium’s stateful nature and web UI-centric configuration are a worse fit for Kubernetes.
Can I use Blocky with Grafana?
Yes. Blocky exposes Prometheus metrics on port 4000 by default. Add it as a Prometheus scrape target and import the community Grafana dashboard. See our Grafana guide and Prometheus guide.
Related
Get self-hosting tips in your inbox
New guides, comparisons, and setup tutorials — delivered weekly. No spam.