I’d like to show you how I use Tailscale and a Mac mini in my office to achieve some nifty things.
Tailscale is marketed as a zero-config VPN built on top of WireGuard that securely connects devices and manages firewall rules etc. While all of that might be true, think of it this way: Tailscale allows you to securely connect to a machine at home from anywhere on the internet. This includes your mobile phone, tablet, or laptop.
Tailscale allows you to connect to a machine at home from anywhere on the internet (securely) from your phone/tablet/laptop.
For me, that “machine” is a souped-up Mac mini sitting on an office shelf at home that is never turned off. This Mac mini is the linchpin of my setup, really.
I install1 Tailscale on this Mac mini and all the other devices I wish to connect from. With the magic of Tailscale ✨, all these devices are now connected like they were on the same network! If that hasn’t sunk in:
I could literally connect to the Homebridge server on my Mac mini in California from an Android phone while traveling in India.
Let’s talk about some services you could run leveraging this setup.
Private blog server
Hugo has this nifty feature called live reload when you run it on a local machine. If I change any part of my website2, it instantly shows me an up-to-date preview. I typically edit my “draft” blog posts like this, so I can see the changes right away. But you don’t run your real website like this3.
Gosh, if only I had a private server that only I could connect to on the internet.
With Tailscale on my Mac mini, I now do.
For the technically curious: I edit files directly on a folder on the mini using VSCode4. I then run a hugo server5 which watches for changes in this folder. Hugo picks it up and serves a live preview on a private port on the Mac mini. And because this is just a “local” address & port (courtesy Tailscale), I can connect to it from any of my devices.
I’m sipping coffee in hipster cafes editing my site, then clinging on to dear life in a Muni bus, reading that draft on a phone browser. Magical!
FreshRSS (RSS feed) server
RSS is old but remarkable technology. I use it as my throttled way of consuming the internet (blog posts, youtube videos, podcasts, etc.).
I previously used Feedly but then switched to iCloud6. But iCloud is dog slow for this. So I spent a few hours one weekend installing FreshRSS on my Mac mini. I now have an open source, super fast RSS service accessible (to me) from anywhere on the internet.
After purchasing a home recently, I set out on a mission to smartify all the things. Lights, doorbells, smart locks, window shades, garages, security cameras, alarm systems, and even the washing machine!
I use a Homebridge server on the Mac mini to connect all these devices. One of the problems though is you can typically only access homebridge from within the same wifi network (which is usually a good thing). But occasionally, I’d love to turn off my light switches or lower the shades as I rush to the airport. Turn on Tailscale, and I can connect to the Homebridge server directly from my phone.
Plex media server
Plex is a media server that allows you to “stream” content from a local disk or hard drive to any network. This includes (massive) family photo albums, high-quality Blu-ray rips7 of my favorite movies, audio music that isn’t on Spotify from artists I’ve worked with, etc.
Plex, in theory, allows you to expose this media server to the internet directly (and this is how most people use it). For obvious reasons, I prefer not exposing this server to the internet, even with authentication. Instead, I now connect to this Plex server via Tailscale. I can stream it on my phone and then just Airplay/Google Cast it to a hotel TV.
Tailscale is magical technology. It feels like the iPhone in a VPN world of flip-phones.
I’ll keep updating this post as I come up with more use cases.
The installation really is “zero-config”. I still don’t understand how easy it is to install it. I’m not even going to talk about it in this post cause you can just look at the official instructions. ↩︎
like css styles or markdown post content ↩︎
this would require a “server” that’s costly + requires more resources. The whole point of Hugo is to “statically” generate pages that are much lighter. ↩︎
via ssh ↩︎
that runs inside a docker container ↩︎
free & no ads ↩︎
that obviously fell out of a truck ↩︎