Self-hosted coordination server for Tailscale clients on a private WireGuard mesh
CIS Level 1 hardened Ubuntu 24.04 LTS image by Lynxroute · unique credentials at first boot · CVE-scanned · SBOM and CIS report inside
| Cloud | Version | Software price | Last build | |
|---|---|---|---|---|
| AWS Marketplace EC2 AMI · all commercial regions | 0.29.6 | $0.03/hr Recommended instance: t3.small · 5-day free trial | 2026-10-25 | Listing ↗ |
| Azure Marketplace VM image · plan payg-gen2 · Gen2 | 0.29.4 | $0.028/vCPU/hr Recommended VM: Standard_D2s_v3 | 2026-10-03 | Listing ↗ |
Software price only; cloud infrastructure is billed separately by the provider. Prices in USD.
| Base OS | Ubuntu 24.04 LTS |
| Hardening | CIS Level 1, Ubuntu 24.04 LTS (tailored) |
| License | BSD-3-Clause |
| Upstream | juanfont |
| Machine-readable | product.json · catalog.json |
Headscale is an open-source, self-hosted implementation of the Tailscale coordination server. It speaks the same control protocol as Tailscale's hosted SaaS, so any standard tailscale client (Linux, macOS, Windows, iOS, Android) can register against it and join a private WireGuard-based mesh VPN.
By running your own control plane you keep node metadata, auth flows, and ACL evaluation inside your own AWS account - none of it transits controlplane.tailscale.com. Headscale supports MagicDNS, ACLs, pre-auth keys, ephemeral nodes, route advertisement, and tag-based authorization. BSD-3-Clause license, written in Go, single statically linked binary.
Security hardening:
OS hardening (CIS Level 1):
Compliance artifacts:
Credentials are generated at first boot and written to /root/headscale-credentials.txt.
# subscribe once on the AWS Marketplace listing, then:
aws ec2 run-instances \
--image-id resolve:ssm:/aws/service/marketplace/prod-przu65jbhgd3m/latest \
--instance-type t3.small --key-name my-key --security-group-ids sg-xxxxxxxx# accept the plan terms once, then:
az vm image terms accept --publisher lynxroute --offer headscale --plan payg-gen2
az vm create -g my-rg -n headscale --size Standard_D2s_v3 \
--image lynxroute:headscale:payg-gen2:latest --admin-username azureuser --generate-ssh-keys
The most recent release with notes; the full release history is in product.json.