Recently, I started using Tailscale, and I have to confess: I think I’m obsessed.
It’s not just because the product is amazing. Tailscale solved a problem I didn’t even know I had, but what impressed me most was how the solution was built. It reminded me that technical products can still just work.
I haven’t felt that way in a while. A lot of technical tools make you read extensive documentation and work through several layers of complexity before you reach the aha moment. With Tailscale, that moment came almost immediately.
A random recommendation
I think I first heard about Tailscale through a random post by Pieter Levels (@levelsio). I don’t remember the exact post, but he mentioned using it as part of a very minimal server setup, possibly with Hetzner.
I’m not saying Pieter is my main reference for technical decisions. What caught my attention was his usual commitment to minimalism. He’s known for building things with tools like PHP and jQuery, so seeing him mention another tool made me curious enough to try it.
The basic description sounded almost too simple: Tailscale creates a private network between my devices. My first reaction was: why should I be excited about that?
Then I installed it.
Discovering a problem I didn’t know I had
At home, I have a modest desktop computer running Omarchy, DHH’s Arch Linux-based setup. It’s the machine I use in my home office, and I’d never seriously considered connecting to it while working somewhere else.
Adding it to Tailscale took only a few commands. The computer appeared as a device on my private network with its own IP address. Then I added my laptop, and suddenly both machines could communicate as if they were on the same local network.
At first, I still wasn’t sure how useful that would be. Then I tried SSH. I could connect to my desktop without exposing it publicly or spending time thinking about routing and network configuration.
That was nice, but things became genuinely interesting when I added my server.
Simplifying access to my server
I have a small Hetzner server hosting three or four applications in Docker containers. After adding it to Tailscale, I was able to close every public port except 443. I no longer expose SSH publicly. I connect through Tailscale instead.
I don’t have to think about SSH ports or complicated access rules. The connection is fast, and everything just works.
That simplicity has changed how I work. If I’m at a café and need a file or secret stored on my home computer, I can run a command as simple as:
ssh my-user@my-computer
And I’m there.
This probably feels even more natural because I use the terminal and Neovim extensively. But the idea isn’t limited to that setup. The same private connection could work with VS Code Server or another remote development environment.
Routing traffic through an exit node
Tailscale’s exit nodes have also been useful. If I’m working from a café and need to enter payment information somewhere, I know HTTPS should protect the connection. Even so, I sometimes prefer to route my traffic through my computer at home.
I just select that computer as an exit node, and my laptop’s traffic goes through it before reaching the internet. There’s no need to manually configure a traditional VPN.
Complexity without the complicated experience
Tailscale is built on WireGuard, and I know there’s a lot of technical complexity behind what it does. But as a user, that complexity doesn’t become my burden.
That may be what I appreciate most. Tailscale doesn’t make me study the underlying networking problem before I can benefit from the solution. I install it, add my devices, and they can communicate.
It solved a problem I didn’t know I had and made the solution feel obvious. More than anything, it reminded me that even deeply technical products can deliver an immediate aha moment. They can be powerful without forcing all that complexity onto the people using them.
That’s why I think I’m obsessed.