← all SaaS

Self-host Tailscale

Mesh VPN / zero-config networking

Tailscale wraps WireGuard with magic identity + NAT traversal. The leading self-hostable replacement (Headscale) is a drop-in coordination server — your Tailscale clients keep working, just talking to your control plane.

Tailscale pricing anchor: Free for personal (3 users / 100 devices); $6/user/mo for Premium.

Headscale juanfont/headscale alive

GitHub
★ 38.2k · last commit today · 132 open issues
License
BSD-3-Clause
Setup time
20min (single Go binary + reverse proxy)
Monthly cost
$5 VPS — coordination only, traffic is peer-to-peer.
Migration sketch. Stand up Headscale at a public hostname. On each Tailscale client: `tailscale up --login-server=https://your-headscale.example`. The clients stay the same; only the control server changes. ACL/SSO replacements need to be set up (Headscale supports OIDC).
Good fit forTeams that already love Tailscale UX but don't want a SaaS dependency.
Weak atNo web admin UI in core — third-party UIs (headplane, headscale-ui) fill the gap.

Netbird netbirdio/netbird alive

GitHub
★ 25.1k · last commit 1d ago · 1518 open issues
License
BSD-3-Clause
Setup time
30min docker-compose (management + signal + relay)
Monthly cost
$5-10 VPS for the management plane.
Migration sketch. Different client — install netbird daemon on each device. Identity via OIDC (Authentik, Keycloak). No data to migrate from Tailscale; just add devices.
Good fit forTeams who want a Tailscale-shaped product + web admin UI in one self-hosted package.
Weak atSmaller community than Tailscale/Headscale.

Innernet tonarino/innernet alive

GitHub
★ 5.47k · last commit 7w ago · 92 open issues
License
MIT
Setup time
20min (single Rust binary per host)
Monthly cost
$5 VPS for the coordination server.
Migration sketch. No client compatibility with Tailscale — you swap the whole stack. Generate invitation tokens per device; clients connect once, then peer-to-peer over WireGuard.
Good fit forStatic, server-to-server meshes (small fleet, infra-only).
Weak atNo mobile client; no MagicDNS-style identity.

In a terminal? npx os-alt tailscale prints this table — how the CLI works →