[{"data":1,"prerenderedAt":115},["ShallowReactive",2],{"seo-verification":3,"marketplace-app-en-headscale":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"slug":7,"name":8,"description":9,"phase":10,"docsUrl":11,"logo":12,"github":13,"tagline":14,"longDescription":15,"features":16,"useCases":25,"steps":35,"faq":51,"specs":70,"compatibleOs":79,"relatedApps":81,"relatedPosts":109,"category":112},"headscale","Headscale","Self-hosted Tailscale control server — replace the Tailscale cloud with your own zero-trust mesh network. Full WireGuard-based overlay, magic DNS, ACLs and DERP relay under your control.",1,"https:\u002F\u002Fservorbit.com\u002Fblog\u002Fself-host-headscale-tailscale-vps","https:\u002F\u002Fcdn.jsdelivr.net\u002Fgh\u002Fselfhst\u002Ficons\u002Fsvg\u002Fheadscale.svg","https:\u002F\u002Fgithub.com\u002Fjuanfont\u002Fheadscale","Self-host your Tailscale control server — full mesh VPN under your control, no cloud dependency.","Headscale is an open-source, self-hosted implementation of the Tailscale control server. Where Tailscale's free tier limits you to 3 users and stores your network map in the cloud, Headscale runs the coordination server on your own VPS — your keys, your ACLs, your logs. Clients are standard Tailscale apps for every platform (Linux, macOS, Windows, iOS, Android), so your team needs zero new software.\n\nUnder the hood, every connection is a direct WireGuard tunnel. Headscale only handles key exchange and ACL distribution — once peers discover each other, traffic flows peer-to-peer with WireGuard's minimal footprint. The Go binary idles under 50 MB RAM. BSD-3-Clause licensed, ~41 k GitHub stars.",[17,18,19,20,21,22,23,24],"Full Tailscale-compatible control plane: use the official Tailscale client on every platform — no custom fork required.","Unlimited users and devices: no 3-user cloud limit, no per-seat cost, your network scales with your team.","WireGuard peer-to-peer tunnels: Headscale only coordinates key exchange; actual traffic is direct WireGuard, not proxied.","Magic DNS: resolve every node in your mesh by hostname (machine.yourtailnet) without touching your public DNS.","ACL-based access control: define which users and devices can reach which services using the same HuJSON policy format as Tailscale.","DERP relay support: configure your own DERP relay servers or use Tailscale's public DERP map for NAT traversal fallback.","REST + CLI management: create namespaces, generate auth keys and manage peers via the headscale CLI or the HTTP REST API.","Under 50 MB RAM at idle — run it on any VPS alongside your existing workloads.",[26,29,32],{"title":27,"body":28},"Remote access to internal services","Put your VPS fleet, your office NAS and every team laptop on the same private mesh, and internal dashboards, databases and admin panels stop needing a public port at all. A service bound to a mesh address is reachable by your team from anywhere and invisible from the internet — which removes an entire class of exposure without a single firewall rule to maintain per service.",{"title":30,"body":31},"Private links between servers","Connect servers hosted in different places — a ServOrbit VPS, a machine at another provider, a rack in an office — into one flat network with stable addresses. Application-to-database traffic then travels over a direct WireGuard tunnel rather than the public internet, and the address a service uses to reach another does not change when either machine moves or its public IP changes.",{"title":33,"body":34},"Leave the Tailscale free tier without changing clients","The Tailscale free plan caps you at a small number of users and keeps your network map in someone else's cloud. Headscale speaks the same protocol, so the official clients on Linux, macOS, Windows, iOS and Android connect to it unchanged — you point them at your own `--login-server` and the number of users and devices becomes your business, at the fixed cost of one small VPS.",[36,39,42,45,48],{"title":37,"body":38},"Order a ServOrbit VPS","512 MB of RAM is plenty: Headscale only coordinates key exchange and distributes the network map, so the control server is idle most of the time. It is not in the data path — traffic between your nodes flows peer-to-peer — so its bandwidth needs are minimal and it happily shares a VPS with other services.",{"title":40,"body":41},"Point a domain at the VPS","Headscale needs a domain: `server_url` is baked into the configuration and every client is registered against that exact HTTPS address. Create an A record such as `vpn.example.com` pointing to your VPS IP before deploying — the certificate is issued and renewed automatically. Changing the domain afterwards means re-registering every node, so choose one you will keep.",{"title":43,"body":44},"One-click deploy from the marketplace","Open your ServOrbit dashboard → Marketplace → Network → Headscale → Deploy. An init container writes the configuration on first start — the `100.64.0.0\u002F10` address range, Magic DNS, SQLite storage and Tailscale's public DERP map for NAT traversal — then `headscale serve` starts and answers on port 8080 behind the HTTPS vhost.",{"title":46,"body":47},"Create a user and an authentication key","Management is done through the CLI inside the container. Create a user with `docker exec \u003Ccontainer> headscale users create ops`, then issue a key for it: `docker exec \u003Ccontainer> headscale preauthkeys create --user \u003Cid> --reusable --expiration 24h`. Reusable keys let you enrol several machines during one session; short expirations keep a leaked key from being useful later.",{"title":49,"body":50},"Connect your machines","Install the standard Tailscale client on each device and point it at your server instead of the cloud: `tailscale up --login-server https:\u002F\u002Fvpn.example.com --authkey \u003Ckey>`. On mobile, enter the same server URL in the app's account settings. Check the result with `docker exec \u003Ccontainer> headscale nodes list` — every registered machine appears with its mesh address, and the nodes can reach each other immediately.",[52,55,58,61,64,67],{"q":53,"a":54},"Do I use a special client with Headscale?","No — that is the whole point. Headscale reimplements the Tailscale control server, so the official Tailscale clients for Linux, macOS, Windows, iOS and Android connect to it unmodified. The only difference for your users is the `--login-server` flag (or the custom server URL field in the mobile app) pointing at your own domain instead of Tailscale's cloud.",{"q":56,"a":57},"Does all my traffic go through the VPS?","No. Headscale only handles registration, key exchange and distribution of the network map and ACLs; once two nodes know about each other they open a direct WireGuard tunnel and traffic flows peer-to-peer without touching your VPS. The exception is when both peers sit behind NATs that block direct connection, in which case the traffic falls back to a DERP relay — and even then it stays end-to-end encrypted, so the relay carries ciphertext it cannot read.",{"q":59,"a":60},"Do I need a domain name?","Yes. `server_url` is written into the Headscale configuration and every client registers against that HTTPS address, so it must be a real, stable domain with a valid certificate. Point an A record such as `vpn.example.com` at your VPS before deploying. Changing it later invalidates existing registrations and forces every node to enrol again.",{"q":62,"a":63},"Is there a web interface?","Not in Headscale itself: the project ships a CLI and a REST\u002FgRPC API, and administration happens through `headscale users`, `headscale preauthkeys` and `headscale nodes` commands run inside the container. Several third-party web UIs exist and talk to the API, but they are separate community projects — if you want one, deploy it yourself alongside and treat it as an extra piece of exposed surface to secure.",{"q":65,"a":66},"How do Magic DNS and the address range work?","Nodes receive addresses from the `100.64.0.0\u002F10` range (plus an IPv6 range), which is reserved for carrier-grade NAT and therefore does not collide with the usual private networks. With Magic DNS enabled, each machine is also resolvable by name under the mesh's base domain, so you can reach a server as `db.headnet.local` instead of memorising its address — without touching your public DNS zone.",{"q":68,"a":69},"What are the limits compared to Tailscale's own service?","Headscale implements the core of the protocol — mesh connectivity, Magic DNS, ACLs in the same HuJSON policy format, subnet routers and exit nodes — but it is a community reimplementation, not a feature-for-feature clone. Some of Tailscale's higher-level and enterprise features have no equivalent, and you take on operating the control server yourself: backing up its SQLite database, keeping the container updated, and being the reason your mesh works. In exchange you get unlimited users and devices and a network map that never leaves your VPS.",{"ram":71,"cpu":72,"stack":73,"port":78},"512 MB","1 vCPU",[74,75,76,77],"Docker","Go","SQLite","WireGuard","8080",[80],"ubuntu-24.04",[82,91,100],{"name":83,"slug":84,"categorySlug":85,"categoryName":86,"categoryColor":87,"logo":88,"tagline":89,"description":90},"WireGuard Server","wireguard-server","reseau","Networking & VPN","text-sky-400 bg-sky-500\u002F10","https:\u002F\u002Fcdn.simpleicons.org\u002Fwireguard","Modern, ultra-fast VPN — secure connections for your teams with minimal latency.","Modern, high-performance and minimal VPN. Secure connections for your teams and infrastructure with near-zero latency.",{"name":92,"slug":93,"categorySlug":94,"categoryName":95,"categoryColor":96,"logo":97,"tagline":98,"description":99},"Authelia","authelia","cybersecurity","Cybersecurity & Bastion","text-red-400 bg-red-500\u002F10","https:\u002F\u002Fcdn.simpleicons.org\u002Fauthelia","Add MFA, SSO and fine-grained access control in front of any app — no code changes required.","Open-source authentication and authorization gateway — add MFA, SSO and fine-grained access control in front of any app without touching its code.",{"name":101,"slug":102,"categorySlug":103,"categoryName":104,"categoryColor":105,"logo":106,"tagline":107,"description":108},"Beszel","beszel","monitoring","Monitoring & Observability","text-amber-400 bg-amber-500\u002F10","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F157537876","Multi-server monitoring hub — real-time CPU, RAM, disk and Docker stats across all your VPS instances in one lightweight dashboard.","Lightweight multi-server monitoring hub. Real-time CPU, RAM, disk and Docker stats across all your VPS instances — single PocketBase dashboard, under 50 MB RAM.",[110,111],"self-host-wireguard-vps-wg-easy","self-host-authelia-vps",{"key":85,"slug":85,"name":86,"objective":113,"icon":114,"color":87},"Secure access and connect teams.","network",1785628478869]