DEV Community

selfhosting.sh
selfhosting.sh

Posted on • Originally published at selfhosting.sh

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

Top comments (0)