Headscale is an open-source, self-hosted implementation of the Tailscale control server, written in Go and maintained by Juan Font and Kristoffer Dalby. In a Tailscale-style mesh the clients talk to each other directly over WireGuard, but they need a control server to exchange public keys, hand out the virtual IP addresses and decide who is allowed to reach whom. Tailscale’s clients are open source; that coordination service is not. Headscale replaces it with a server you run yourself.
Point any official Tailscale client at your own server with --login-server and your machines join a tailnet whose keys, user accounts and ACL policy never leave your infrastructure. The project deliberately keeps a narrow scope — a single tailnet, aimed at self-hosters, homelabs and small open-source organisations rather than multi-tenant enterprise deployments. It ships as a single static binary, keeps state in SQLite or PostgreSQL, and is developed in the open with a release roughly every few weeks (v0.29.5, October 2026).
tests and sshTests to verify the rules you wrote.headscale health check for your monitoring stack.Headscale exists for people who want the convenience of a WireGuard mesh without handing the control plane to a third party. Because the coordination server is the component that knows every node, its keys and its addresses, self-hosting it keeps that map inside your own network — the traffic itself was always end-to-end encrypted, but the metadata is worth owning too.
It is genuinely open: BSD 3-Clause, no open-core edition and no feature gating behind a subscription, with a single-binary deployment that fits a small VPS or a spare machine. Development is active and the docs are thorough, covering registration, DNS, routes, DERP and policy. The honest limits: it is not a complete reimplementation of every Tailscale feature — Funnel, Serve and network flow logs are still in progress — the policy file will not accept OIDC groups in ACLs, and the project targets one tailnet, so it is not a drop-in replacement for the hosted service in a large organisation. The maintainers also advise against running it behind a reverse proxy or in a container in production.
Server: Linux (x86_64, arm64), FreeBSD, macOS and Windows builds, plus a Docker image — although the project advises against reverse proxies and container deployments for anything serious. Clients: the last 10 releases of the official Tailscale client on Linux, Windows, macOS, iOS, tvOS, Android, OpenBSD and FreeBSD (Windows, Android and Apple platforms need a little extra configuration described in the docs).
BSD 3-Clause — fully open source, with no commercial edition or paid tier. The licence is in the repository: LICENSE.
headscale.net — documentation for the stable and development versions, plus github.com/juanfont/headscale for the source and releases.