Headscale: A Self-hosted Tailscale Alternative for Private Cloud Access
In Post 2 of this series we introduced Tailscale as the UX gold standard in the mesh VPN segment. With one honest caveat: The control plane is proprietary, runs

In Post 2 of this series we introduced Tailscale as the UX gold standard in the mesh VPN segment. With one honest caveat: The control plane is proprietary, runs on AWS in the United States, and is officially not self-hostable. If you want the feature set and full sovereignty at the same time, you end up looking at a different solution.
That solution is Headscale. It is the open-source community reimplementation of the Tailscale coordination server API, BSD-3 licensed, compatible with the official Tailscale clients, and fully self-hostable.
That brings us to the most honest part of this series: We use Headscale at Infralovers ourselves. Our internal Infralovers Cloud has been running with Headscale as its control plane for over a year. This post is therefore not just an evaluation, but also a field report from our own operations.
As of May 2026, Headscale v0.28.0
Headscale is an open-source reimplementation of the Tailscale control plane, written in Go and released under a BSD-3 license. It is not the thing you install to connect to a network. It is the thing you run so that others can connect.
Three properties define the project:
A clear differentiation from Tailscale Cloud and NetBird: With Headscale there is no hosted offering, no subscription, and no commercial hotline. What you get instead is full control.
Five points explain the setup:
tailscale up --login-server=https://hs.example.com).Because Headscale only handles coordination, it runs on surprisingly little hardware. A small VM is enough for mid-sized setups.
What Headscale ships today:
tag:server for VMs, tag:ci for ephemeral CI runners).An honest word on the gaps, before we get to the field report:
We picked Headscale over a year ago when we wanted to put our internal Infralovers Cloud on a clean, sovereign foundation. Here is the honest architecture:
Hosting: A dedicated instance hs-control runs only the Headscale control plane. Other VMs carry the applications. The separation is deliberate: an application issue must not take down VPN availability, and the blast radius of an incident stays small.
IaC: The entire setup is configured with Terraform and provisioned with Ansible. The repository lives in Git, changes go through pull requests, and CI deploys automatically.
Container runtime: Podman, not Docker. In front of Headscale, Caddy runs as a TLS reverse proxy. Caddy has excellent support for Headscale and handles Let's Encrypt certificate issuance without configuration acrobatics.
VPN-first security: SSH (port 22) on both VMs is only reachable through the VPN. Direct SSH from the internet is blocked at the firewall. Anyone doing maintenance enters the VPN first. For emergencies there is a console available in case the VPN itself has issues.
CI/CD integration: GitHub Actions runners connect as ephemeral nodes to the tailnet, equipped with the tag:ci tag. They get only the permissions the tag grants in the ACL, deploy, and disappear again. There are no persistent credentials in the CI configuration, which massively simplifies auth-key rotation and incident response.
MagicDNS: Hostnames are resolved automatically across the VPN. We get the same comfort as on Tailscale, but entirely under our own control and inside our own DNS zone.
Backups: The Headscale SQLite database, the ACL file, and the rest of the configuration live on a persistent volume. Restic backs the volume up daily to S3-compatible storage, with a "retention policy" and health checks.
Important: Headscale is classified as "Lab / Semi-Production" in our setup. We use it to distribute admin access to infrastructure and to protect internal services. We do not market our Headscale as an external service, and we deliberately do not use it for customer workloads.
If you find this stack interesting: We are currently also evaluating a migration to NetBird for parts of the setup, because the mobile experience there is smoother. The beautiful thing about this setup is that such a migration stays evaluable without any vendor dictating it. If you want to read more about NetBird, we have a good post about it.
Sovereignty is the thread running through this series, and Headscale is the piece where the answer ends up entirely in your hands:
For NIS2 and DORA contexts this means a clean mapping: The VPN vendor is you, which simplifies vendor assessment significantly. What remains is the classic sub-processor assessment of the compute hoster.
headscale-ui as a third-party solution.Four scenarios where Headscale clearly moves to the front of the field:
That is exactly what Headscale was built for. You keep the mesh VPN comfort, MagicDNS, and the official clients, and you take over the control plane entirely yourself.
With Hetzner, IONOS, or OVH plus Headscale, you get a fully EU-operated mesh access path with no third party in the data flow. That is exactly our own stack for the Infralovers Cloud.
Terraform, Ansible, Podman, and Headscale together make a GitOps-friendly VPN stack. Ephemeral nodes for deployment pipelines are a killer feature, and we use it every day.
Headscale is free. You only pay for the VM and your time. For small teams, the total cost of ownership is significantly below what Tailscale Standard ($8/user) or NetBird Team ($5/user) generate over the course of a year.
Headscale is the right choice when you like the comfort of the Tailscale ecosystem, but want to keep the control plane and the connection data in your own hands. We have used it at Infralovers for over a year and run our own private cloud on Hetzner with it. The trade-offs (no official web UI, rough mobile login, operational responsibility) are real, but for teams with an IaC and CI/CD mindset they are very manageable.
That makes this series complete from a content perspective. The closing direct comparison of NetBird, Tailscale, and Headscale along the axes of self-hosting, private cloud access, license cost, client comfort, and EU-first follows in Post 4.
If you are planning a sovereign private cloud, setting up a NIS2 or DORA program, or implementing a concrete Headscale deployment, we at Infralovers are happy to support you. We share our own experience from the Infralovers Cloud architecture and combine that with our training portfolio on Sovereign Cloud, NIS2 Compliance, and Cloud Native Essentials.
You are interested in our courses or you simply have a question that needs answering? You can contact us at anytime! We will do our best to answer all your questions.
Contact us