mrkeyoor.com_
Tue 01 Sept 17:40 UTC
Self-Hostedevaluationupdated 26 Aug 2026

tailscale review

Tailscale connects computers, phones, servers, and private networks through encrypted WireGuard links without making you configure a traditional VPN gateway. This repository contains most of its open-source client, including the `tailscaled` service and `tailscale` command, while Tailscale operates the proprietary coordination service that helps devices find each other and receive access rules.

+341stars / 7d
Verdict

Our Tailscale run installed 1,012 packages and built in 427 seconds, but 2 of 119 test packages failed, so source packagers should investigate the full suite before shipping commit de9ec7e. The managed product remains the first private-networking service most developers should try because device enrollment is far easier than hand-built WireGuard coordination. Choose Headscale or NetBird when owning the control plane matters more than that convenience.

We ran it

Lab card: what happened when we ran tailscaleScreenshot of tailscale (tailscale.com)
Install✓ · 192s1012 packages
Build✓ · 427s
Tests✗ · 405s117 passed · 2 failed of 119 (go test)
Repo2775 files~594,387 lines of source · 21.3 MB · 24 CI workflows · Dockerfile

Answers from our run

Does tailscale build from source?

Dependencies installed in 192 seconds (1012 packages), and the build succeeded in 427 seconds. We cloned commit de9ec7e into a clean Debian container with 3 CPUs and no project-specific setup.

Do tailscale's tests pass?

Not all of them: 117 of 119 passed and 2 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use tailscale?

Organizations that require the entire networking control plane to be open source and self-hosted: Tailscale says its coordination server is proprietary, and this repository does not contain it.

What are the alternatives to tailscale?

Headscale, NetBird, ZeroTier One. Our Tailscale run installed 1,012 packages and built in 427 seconds, but 2 of 119 test packages failed, so source packagers should investigate the full suite before shipping commit de9ec7e.

Setup5/5Managed setup is fast; source builds and policy work add effort
Docs5/5Excellent product docs, though the repository README is brief
Community5/5Large adoption, daily code activity, and busy public issue tracking
Maturity5/5Established cross-platform client with frequent production releases

Discussed on

  1. hnTailscale SSH759 points
  2. hnTailscale Funnel666 points
  3. hnTailcat – Like netcat, but over Tailscale’s data plane665 points
  4. hnAdd ability to choose a custom coordination server530 points
  5. hnHeadscale: Open-source implementation of the Tailscale control server363 points

Who it’s for

Developers who want private access to home labs, cloud machines, and internal tools without exposing ports to the public internet.
Small teams that value a managed control plane and identity-based device access more than owning every service component.
Infrastructure teams connecting hosts across clouds, offices, Kubernetes clusters, and difficult NAT boundaries.
Go developers and package maintainers who need inspectable client and relay code under a BSD license.

Who it’s NOT for

Organizations that require the entire networking control plane to be open source and self-hosted: Tailscale says its coordination server is proprietary, and this repository does not contain it.
Developers expecting complete open-source desktop applications: the README says the macOS and Windows GUI wrappers are not open source, even though their daemon code is.
Operators standardizing on non-systemd Linux distributions who need an officially smooth package path: support for Devuan and other non-systemd Linux remains an open feature request with discussion continuing in August 2026.
Kubernetes teams that adopt new releases without staged testing: an open report against operator 1.102.2 describes an egress ProxyGroup service repeatedly losing its configured state until the user rolled back.
Anyone who wants source compilation to be the easy install route: the repository requires the latest Go release, currently Go 1.26, and distribution packages need an additional build script to embed useful version data.

Setup reality

Our sandbox installed 1,012 Go packages in 192 seconds and built successfully in 427 seconds. Tests ran for 405 seconds and failed with 117 passed and 2 failed out of 119. The supplied tail shows several successful packages and ends with FAIL, without naming the failed packages or assertions.

Normal use is easier: install an official package or app, create an account, and authenticate devices. Building this repository requires the latest Go release, currently Go 1.26, while distribution packaging should use build_dist.sh for version metadata.

Production work includes access policy, tags, key expiry, DNS, subnet and exit-node design, upgrade testing, and checking direct versus relayed paths. Compiling the client does not supply Tailscale's proprietary coordination service.

Managed coordination removes most WireGuard bookkeeping

Tailscale connects devices across routers, offices, and cloud networks without asking users to maintain a traditional VPN gateway. Install a client, authenticate it, and the device joins a private network called a tailnet. WireGuard protects the data path, while Tailscale handles identity, addresses, keys, peer discovery, access rules, NAT traversal, and relay fallback.

Peers communicate directly when network conditions allow. If firewalls prevent that, traffic can pass through a DERP relay. A connection can therefore work while performing worse than expected, and operators should learn to inspect whether a path is direct or relayed. The product removes most tunnel configuration, but it does not remove network diagnosis.

The repository excludes the coordination service and some GUIs

This checkout contains the tailscaled daemon, the tailscale command, and most cross-platform client code. The daemon runs on Linux, Windows, and macOS, with varying FreeBSD and OpenBSD support. Mobile apps reuse code from here, though their interface code lives in separate repositories. The client carries a BSD 3-Clause license.

Two omissions determine whether the project fits strict open-source requirements. The graphical wrappers for macOS and Windows are closed source. More importantly, Tailscale's coordination server is proprietary. The open DERP relay is present, but compiling the daemon does not reproduce the service that distributes peer and policy state. Headscale exists for users who want an independently maintained replacement control server.

What happened when we ran it

Our sandbox installed 1,012 Go packages in 192 seconds at commit de9ec7e. The build succeeded in 427 seconds. The checkout itself held 2,775 files, roughly 594,387 source lines, and occupied 21.3 MB. Source compilation is straightforward in shape, but it is not a tiny dependency or time commitment.

Tests ended with exit code 1 after 405 seconds. The harness counted 117 passed and 2 failed out of 119. The supplied tail lists successful packages such as wgengine/magicsock, wgengine/netstack, wgengine/router, and wgengine/wgcfg, then ends with FAIL. It does not identify the failed packages or assertions, so we cannot responsibly name a cause.

We ran this in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, no secrets, and the Go 1.24 Bookworm image. The repository scan found 24 CI workflow files and a Dockerfile, but no conventional tests directory. The README now requires Go 1.26, which differs from our sandbox image. The provided log does not establish whether that difference caused either failure.

Official packages are easier than the 619-second build and test cycle

Tailscale publishes packages and applications for common systems, which is the right first route for users. Creating an account and authenticating devices gets a small tailnet working quickly. Source builders need the current Go release, and distribution maintainers are asked to use build_dist.sh or reproduce its version stamping so bug reports carry commit details.

The serious work begins after enrollment. Replace any permissive starting policy, map users and devices, decide how tags are assigned, and plan key expiry. Subnet routers, exit nodes, split DNS, unattended servers, and automation credentials each add a lifecycle. None of this is unusual for network access, but the short demo should not be confused with a finished security design.

Open reports justify staged infrastructure upgrades

Open issue 20916 describes an egress ProxyGroup service on operator v1.102.2 repeatedly losing its Configured state after an upgrade. The reporter saw a sibling cluster behave correctly and rolled the affected cluster back. That is one environment, not proof of a universal regression, but Kubernetes traffic paths deserve canary upgrades and a tested rollback.

Key lifecycle also needs rehearsal. Issue 10776 reports tags disappearing after a device was reauthenticated following key expiry. The report covers Windows and Linux clients and remains open. A large tailnet should test expiration on tagged non-production nodes before applying the same policy everywhere.

Non-systemd Linux users face a less polished path. Issue 9502 requests support for Devuan and similar distributions, with discussion still updated in August 2026. Operators on such systems should confirm service management, startup, upgrades, and log collection before assuming a Debian-family package is enough.

Version 1.102.3 is current, with a very large public queue

GitHub showed 35,580 stars and 4,484 combined open issues and pull requests when fetched. The repository was pushed on August 26, 2026, and v1.102.3 was released on August 20. Same-day issue and pull-request activity covered exit-node selection, Linux network hardware, Kubernetes traffic, Android DNS, and connection handling.

The large open count is not a bug count. It reflects public support across desktop, mobile, servers, containers, networking hardware, and the hosted service. The 24 CI workflow files and frequent releases show sustained engineering, while our 2 failed test packages are still a reason for a packager to inspect the full log.

Tailscale is easiest to recommend when managed coordination is an advantage. It gives developers private access without publishing ports or maintaining peer lists. Strict self-hosters may reasonably reject the proprietary control plane. Everyone else should use official packages, write least-privilege policy, stage upgrades, and verify whether important traffic uses a direct path.

Alternatives

ProjectWhat it isPick it when
HeadscaleAn independent, self-hosted implementation of the Tailscale coordination server.pick this instead when owning the control plane matters more than receiving Tailscale's managed service, governance features, and support.
NetBird gh↗A WireGuard-based private networking platform with open-source management components and a hosted option.pick this instead when you want a more fully self-hostable management stack with an admin interface.
ZeroTier OneA virtual networking client that creates software-defined networks across devices and sites.pick this instead when virtual Ethernet behavior and ZeroTier's network model fit better than a WireGuard-based tailnet.

What people are saying

  1. [github-trending] tailscale/tailscale
  2. [hackernews] Tailscale Traces Database Corruption to 16y/o SQLite WAL-Reset Bug
  3. [hackernews] Tailscale didn't stop the Hugging Face intrusion

Sources

  1. Tailscale GitHub repository
  2. Tailscale open-source components
  3. What is Tailscale?
  4. Using Tailscale with your firewall
  5. Tailscale v1.102.3 release
  6. Non-systemd Linux support request
  7. Kubernetes operator egress regression report
  8. Tag loss after key-expiry reauthentication report

More self-hosted reviews

v2 · OpenShell · wigolo · Mindwtr · club-3090 · reclip · the whole board →