Tailscale connects people, servers, and applications through encrypted private networks, giving businesses and individuals access to resources across clouds and physical locations. Its software uses WireGuard to encrypt traffic and connects devices directly where network conditions allow, with encrypted relay paths for harder connections. Administrators use identity services and access policies to manage who reaches each resource, without exposing every system to the public internet. The company sells business subscriptions priced by seats, with additional controls for larger teams and a free plan for personal use. Founded in 2019, Tailscale is headquartered in Toronto, Ontario, Canada.
Work here?Claim your company
Industries
Company Size
201-500
Company Stage
Series C
Total Funding
$275M
Headquarters
Toronto, Canada
Founded
2019
See people who can refer or advise you
Help us improve and share your feedback! Did you find this helpful?
Total Funding
$275M
Above
Industry Average
Funded Over
4 Rounds
Industry standards
I got tired of remembering ports for 30 Docker apps in my homelab. Here's how I fixed it. Stop bookmarking IP:ports. Tailscale Services gives every Docker container in your homelab its own HTTPS name on your tailnet, without a reverse proxy or a sidecar per container. My homelab runs on 5 machines with around 30 Docker containers. For a long time, the way I reached them was a bookmarks folder full of entries like http://100.101.12.4:8096. Tailscale took care of getting me into my network from anywhere, but once I was in, I was back to remembering which box ran what on which port. The usual fixes each have a catch. A reverse proxy with your own domain works, but it's one more thing to maintain, and every new app means touching two config files instead of one. Giving each container its own Tailscale sidecar gets you nice names, but it also turns the Machines page into a list of containers, each with its own auth key and state volume. When Tailscale released Services, it looked like the thing I had actually wanted: names for apps, not for machines. I've been running my containers that way since, and this is a write-up of how it works, how to set it up by hand, and the two things worth knowing before you start. What a tailscale Service actually is. A Service is a name plus a virtual IP on your tailnet, for example jellyfin.your-tailnet.ts.net. It doesn't belong to a device. Instead, one or more of your machines advertise it, and Tailscale routes clients to them. So your Docker host stays a single machine in the tailnet, and the apps on it become Services. Access rules can point at a Service directly, so you can let someone reach Jellyfin without giving them the whole host. Here is what a request looks like once it's set up: Two details in that picture matter later: tailscaled on the host terminates HTTPS and talks plain HTTP to your app, and it adds an X-Forwarded-For header. To your app, Tailscale behaves like a reverse proxy. Setting one up by hand. Before automating anything, it's worth doing it manually once for a single container. You need three things. 1. A tagged host. Services are advertised by tagged machines, so give your Docker host a tag: sudo tailscale up -advertise-tags=tag:server -reset 2. A policy that allows it. In the admin console under Access controls, the tags must exist, and an auto-approver saves you from clicking "Approve" for every Service: { "tagOwners": {"tag:server": ["autogroup:admin"], "tag:container": ["tag:server"]}, "autoApprovers": {"services": { "tag:container": ["tag:server"]}}} 3. The Service itself. On the Services page of the admin console, choose Advertise, then Define a Service, name it jellyfin and give it the tag:container tag. Then, on the host, point it at the app: tailscale serve -service=svc:jellyfin -https=443 127.0.0.1:8096 This assumes Jellyfin publishes port 8096 on the host. If HTTPS certificates are enabled for your tailnet (DNS page in the admin console), https://jellyfin.your-tailnet.ts.net now works from every device that runs Tailscale. For one app, that's fine. For 30, it gets old quickly: one definition in the console and one serve command per app, plus published ports again. And nothing updates by itself when you add, remove or move a container. Why I ended up scripting it. The part that bothered me most was that the configuration lived in two places. The app was defined in a Compose file, and how to reach it was defined somewhere in the admin console and in tailscaled's state. Remove a container and its Service just stays there. Traefik solved the same problem for reverse proxies years ago with Docker labels, and I didn't find anything like that for Tailscale Services. So I wrote a small Go program that does it, DockTail. It runs as one container per host, watches Docker events, and turns labels like these into the steps above: services: docktail: image: ghcr.io/marvinvr/docktail:latest restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /var/run/tailscale:/var/run/tailscale environment: - TAILSCALE_OAUTH_CLIENT_ID=${TAILSCALE_OAUTH_CLIENT_ID} - TAILSCALE_OAUTH_CLIENT_SECRET=${TAILSCALE_OAUTH_CLIENT_SECRET} jellyfin: image: jellyfin/jellyfin:latest restart: unless-stopped volumes: - ./config:/config - ./cache:/cache - /path/to/media:/media:ro labels: - "docktail.service.enable=true" - "docktail.service.name=jellyfin" - "docktail.service.port=8096" - "docktail.service.service-port=443" With an OAuth client (Services: Write, Devices Core: Write, scoped to tag:server) it also creates the Service definition, so the manual console step goes away. Note that Jellyfin has no ports: section: the traffic goes straight to the container's IP on its Docker network. That's also why this needs something that watches Docker. If you skip published ports and point serve at a container IP by hand, it breaks the next time the container is recreated: DockTail is open source (AGPL-3.0). You don't need it to use Services, though, and everything in the next section applies either way. Two things worth knowing. If a Service doesn't show up, it's almost always the tag. The host needs to be tagged (check tailscale status), and if you haven't set up an auto-approver, the Service waits for you on the Services page. Apps that check proxy headers may complain at first, because Tailscale adds an X-Forwarded-For header. Home Assistant answers with "400: Bad Request" until you trust the proxy in configuration.yaml: http: use_x_forwarded_for: true trusted_proxies: - 127.0.0.1 On a Docker bridge network, use the address Home Assistant names in its log instead of 127.0.0.1. Jellyfin has the same setting under Dashboard | Networking | Known proxies, but it works fine without it. Was it worth switching? For me, yes. What I like most is that the network config now sits right next to the app in the same Compose file. Adding an app means adding labels, removing it takes its Service with it, and my Machines page shows machines again. I'd still use a reverse proxy for anything public with my own domain. Tailscale Funnel is great for a webhook or sharing one thing with a friend, but it's not a replacement for that. And if you run a handful of containers that rarely change, the manual tailscale serve route above is perfectly fine and needs no extra tool. If you want to try the label approach, the code and docs (including complete guides for Jellyfin and Home Assistant) are at github.com/marvinvr/docktail and docktail.org/docs. The article is contributed by Marvin von Rappard, creator of open source project Docktail.
Tailscale patches SSH flaws that could let hacked devices gain root access on other servers. Byadmblake October 28, 2026 Tailscale has released version 1.104.4 to fix flaws in its built-in SSH server that could let an attacker reach services and files on other servers that only the root user should be able to touch. The flaws are in how Tailscale SSH forwards network connections, a job the Tailscale background process carries out with root privileges. To use them, an attacker... Tailscale has released version 1.104.4 to fix flaws in its built-in SSH server that could let an attacker reach services and files on other servers that only the root user should be able to touch. The flaws are in how Tailscale SSH forwards network connections, a job the Tailscale background process carries out with root privileges. To use them, an attacker must
Tailscale rushes patches after uncoordinated disclosure of 'Tailworm' flaws. Tailscale is preparing a patch for Tailscale SSH flaws whose details went public over the weekend, before any fixes had been released. | October 27, 2026 (11:26 AM ET) Tailscale is getting ready to ship a client update that addresses privilege escalation weaknesses in Tailscale SSH. Details of the bugs went public over the weekend. Tailscale provides a mesh VPN service that uses the WireGuard protocol to connect an organization's devices and services over a private, peer-to-peer network. The Tailscale vulnerabilities, dubbed Tailworm, are described in a report from Cyberdione Labs. It lists 11 findings affecting version 1.104.2 of the Tailscale client and version 0.29.5 of headscale, an open source control server that organizations can host themselves. Cyberdione Labs published the report before any patches were available, drawing criticism on social media, though the researchers argued that rapid awareness would speed up remediation. Six of the findings are rated high severity, and four of them concern Tailscale SSH, which grants access based on device identity and network policy instead of passwords or keys. According to the Tailworm report, Tailscale SSH performs some forwarding operations with root privileges, and the safeguards meant to restrict them can be bypassed. An attacker who has compromised one device could exploit this against any server that device is permitted to reach over Tailscale SSH, as long as the access rule allows forwarding. In lab tests, this resulted in root access on target servers and the theft of keys that can be used to add rogue devices to the network. That initial foothold could come from common methods such as phishing, a vulnerable web application or a malicious software package. Researchers showed that these SSH flaws are wormable. Since no user credentials are involved, an automated attack chaining these bugs moved from machine to machine across every server the policy granted SSH access to, at under a second per hop and with no user interaction. The report also describes flaws in an experimental app connector feature, the Serve feature, headscale and the client's relay component that could be exploited to reach cloud metadata services and internal networks while bypassing access rules, expose a node's administrative interface to remote peers, or cause denial-of-service (DoS) conditions. Tailscale says fixes are close. Responding on Reddit, Tailscale VP of Engineering Mike Shaver said the company was already running its own investigation, with input from outside security specialists, when the report came in. "Most of the issues we've identified so far concern what happens after someone has been authorized to connect, particularly how Unix privileges and SSH forwarding are handled. In some cases, a session may be able to do more than the configured local user should be allowed to do," Shaver said. "While it's a serious concern, it isn't the same as an unauthenticated attacker being able to connect to arbitrary machines, but the potential impact depends on how SSH access is configured," he added. In an update shared on Monday, Tailscale said fixes were in place for most of the issues and that it was aiming to release a patched client by the end of Tuesday, October 27, pending testing. A security advisory and a technical write-up will follow once the update is out. The Tailworm report, updated on Tuesday, says fixes for several findings have landed in Tailscale's public code repositories. None had made it into a numbered release at that point. "Based on our current assessment, we're not recommending that everyone disable Tailscale SSH," the vendor said. Until the patch arrives, Tailscale advises organizations to review their SSH access policies and disable SSH forwarding where it isn't needed, which it says mitigates several of the more serious findings. Neither Tailscale nor the Tailworm report mentions in-the-wild exploitation. Eduard Kovacs (@EduardKovacs) is senior managing editor at SecurityWeek. He worked as a high school IT teacher before starting a career in journalism in 2011. Eduard holds a bachelor's degree in industrial informatics and a master's degree in computer techniques applied in electrical engineering.
Tailscale warns of SSH flaws allowing root privilege escalation. By Sergiu Gatlan Tuesday, October 27, 2026 BleepingComputer Tailscale has disclosed 11 vulnerabilities in its SSH implementation that could allow attackers to escalate privileges to root, crash nodes, or hijack sessions. Because Tailscale bridges private networks, these flaws are particularly dangerous, potentially turning a single compromised client into a gateway for lateral BleepingComputer
Tailscale patches SSH flaws that could let hacked devices gain root access on other servers. By [email protected] (The Hacker News) Tuesday, October 27, 2026 The Hacker News Tailscale has patched critical vulnerabilities in its built-in SSH server that allowed compromised nodes to escalate privileges and gain root access to other servers. By exploiting flaws in how the background process handles network forwarding, attackers could bypass security boundaries. This fix is vital for zero-trus The Hacker News
Find jobs on Simplify and start your career today
Don't see your dream role? Check out thousands of other roles on Simplify.Browse all jobs
Industries
Company Size
201-500
Company Stage
Series C
Total Funding
$275M
Headquarters
Toronto, Canada
Founded
2019
Find jobs on Simplify and start your career today
Don't see your dream role? Check out thousands of other roles on Simplify.Browse all jobs