Headscale vs Netmaker: Self-Hosted VPN Compared

Quick Verdict

Headscale is the better choice for most self-hosters. It’s a single binary or container, uses standard Tailscale clients on every platform, and takes 15 minutes to deploy. Netmaker is more powerful — kernel WireGuard performance, multiple isolated networks, built-in dashboard, and managed DNS — but requires 5 containers, wildcard DNS, and a custom client agent. Choose Headscale for simplicity and ecosystem compatibility. Choose Netmaker if you need multi-network isolation or maximum throughput.

Overview

Headscale is a self-hosted implementation of the Tailscale coordination server. It doesn’t handle VPN traffic — that flows directly between peers via WireGuard. Headscale only manages key exchange, node registration, and routing rules. It uses official Tailscale clients on all platforms, which means you get the same apps, MagicDNS, and ACL system as Tailscale but with your own control server.

Netmaker is a full WireGuard networking platform. It uses kernel WireGuard (not userspace) for near-native performance, supports multiple isolated overlay networks from one deployment, includes a web dashboard, managed DNS via CoreDNS, egress gateways, relay servers, and ACLs. It requires its own netclient agent rather than standard WireGuard or Tailscale clients.

Feature Comparison

FeatureHeadscaleNetmaker
WireGuard modeUserspace (via Tailscale client)Kernel (native performance)
ThroughputGood (~800 Mbps typical)Excellent (~950+ Mbps, near wire speed)
ClientOfficial Tailscale clientsCustom netclient agent
Platform supportLinux, macOS, Windows, iOS, AndroidLinux, macOS, Windows, Docker
iOS/Android appTailscale app (mature)NetMaker Remote Access Client
Multiple networksNo (flat tailnet model)Yes (multiple isolated networks)
Web dashboardNo (third-party headscale-ui available)Built-in ReactJS dashboard
Managed DNSMagicDNS (via Tailscale client)CoreDNS (auto <device>.<network> names)
NAT traversalDERP relays (Tailscale infrastructure)STUN + custom relay servers
ACLsTailscale-compatible policy engineNetwork-level ACLs
Egress gatewayTailscale exit nodesBuilt-in egress gateway
SSO integrationOIDC supportOkta, OIDC (Pro/Enterprise)
LicenseBSD-3-ClauseSSPL (Server Side Public License)
Docker containers15 (server, UI, Caddy, MQTT, CoreDNS)
RAM usage~50-100 MB~500 MB - 1 GB

Installation Complexity

Headscale is a single Go binary or Docker container. The entire setup:

services:
  headscale:
    image: headscale/headscale:0.25.1
    container_name: headscale
    restart: unless-stopped
    volumes:
      - ./headscale-config:/etc/headscale
      - headscale-data:/var/lib/headscale
    ports:
      - "8080:8080"
    command: serve

Netmaker requires 5 containers, wildcard DNS or 3 subdomain A records, a Caddyfile, and a Mosquitto config. Setup takes 30-45 minutes vs Headscale’s 15 minutes.

MetricHeadscaleNetmaker
Containers15
DNS records1 (optional)3 (or wildcard, required)
Config files13 (compose, Caddyfile, mosquitto.conf)
Setup time15 minutes30-45 minutes
MaintenanceMinimalModerate (5 services to update)

Performance and Resource Usage

ResourceHeadscaleNetmaker
RAM (idle)~50-100 MB~500 MB
RAM (100 nodes)~150-200 MB~1 GB
CPUVery lowLow-medium
Disk~50 MB~200 MB
Throughput~800 Mbps (userspace WG)~950+ Mbps (kernel WG)

Netmaker’s kernel WireGuard gives it a measurable throughput advantage, especially on high-bandwidth links. For typical self-hosting (remote access, file sync), both are more than fast enough — the difference matters for large file transfers or media streaming between sites.

Community and Support

Headscale has 25,000+ GitHub stars, active development with regular releases, and a growing community. It benefits from Tailscale’s ecosystem — the official Tailscale clients are well-maintained, polished, and available on every platform.

Netmaker has 10,000+ GitHub stars and is backed by Gravitl (a venture-funded company). It has professional documentation, a Discord community, and enterprise support tiers. The SSPL license is more restrictive than Headscale’s BSD-3-Clause — it prevents cloud providers from offering Netmaker as a service without a commercial agreement.

Use Cases

Choose Headscale If…

  • You want the simplest possible self-hosted mesh VPN
  • You need iOS/Android clients that work flawlessly (Tailscale apps are excellent)
  • You prefer standard Tailscale clients over a custom agent
  • You run on limited hardware (Raspberry Pi, small VPS)
  • You want a permissive open-source license (BSD-3-Clause)
  • You don’t need multiple isolated networks

Choose Netmaker If…

  • You need multiple isolated overlay networks (e.g., separate dev/staging/prod)
  • Maximum WireGuard throughput matters (kernel vs userspace)
  • You want a built-in web dashboard without third-party tools
  • You need managed DNS with automatic device naming
  • You need egress gateways or relay servers for complex network topologies
  • You’re building a production infrastructure with 50+ nodes

Final Verdict

Headscale wins for most self-hosters. The combination of a single-container deployment, official Tailscale clients on every platform, and near-zero maintenance makes it the obvious choice for personal and small-team use. Tailscale’s mobile apps are polished, MagicDNS works seamlessly, and the ACL system is flexible enough for most access control needs.

Netmaker wins for network professionals and complex setups. If you need multiple isolated overlay networks, kernel WireGuard performance, or a full-featured dashboard with egress gateways and relay servers, Netmaker is the more capable platform. The cost is complexity — 5 containers, DNS setup, custom client agent, and more maintenance.

For a middle ground between the two, consider NetBird — it uses kernel WireGuard like Netmaker but with a simpler deployment and standard WireGuard peers.

Comments