I wish I had Tailscale when I was at university

The files I forgot, and the desktop I couldn't reach from campus.

Elliot Blackburn ۵ دقیقه مطالعهمتن اصلی

I was at university in the mid-2010s, studying Computer Science and Games Development. I had a classic setup: a desktop in my room which was honestly more for gaming than studying, and an aging Windows 7 laptop that took many minutes to boot. I also had an early Raspberry Pi that I’d bought with big plans.

All my work moved between these machines through a mix of Git, Dropbox, and USB sticks. Games projects were the real issue for me. It was  painful putting binary assets like 3D models and textures into Git, and Git LFS wasn’t widely available yet. Dropbox’s storage limits and costs meant I was constantly shuffling projects on and off it, so more often than not I was using USB sticks to ferry assets back and forth between my desktop, laptop, and the high-spec lab machines at the university.

Tailscale didn’t exist back then. Looking back, it would have solved most of these for me and more. Here’s what I’d do differently if I was at university today.

My devices on one private network

My most powerful computer was sitting on my desk in my shared student house, but I spent at least half my day on campus. Getting access to it remotely could have meant a few tricky manoeuvres:

  • Port forwarding SSH: Except the router was the landlord’s, and I couldn’t control it.
  • Setting up a VPN server: Such as PiVPN on my Raspberry Pi. This still would have meant port forwarding, along with setting up dynamic DNS (DDNS).
  • DDNS setup: I’d also need this to keep a hostname pointed at a changing residential IP address.

None of those were particularly appealing, especially exposing SSH to the public internet.

With Tailscale, every device joins the same private network (a tailnet) and can reach other devices wherever they are. There’s no port forwarding, no issues with residential or campus IP addresses changing, no VPN server to power on or patch. And you don’t need to expose services to the public internet. It all works the same way whether in a lecture theater, library, lab, or the pub.

This would have opened up several interesting options for me:

  • A remote dev environment. I could have SSH-ed from my laptop into the desktop and picked up where I left off the previous evening, even if I hadn’t committed my work.
  • Offload long-running jobs. In that vein, the longer-running tasks, like scene renders or dataset processing, could have been offloaded onto my desktop and left running while I was moving to a different lecture hall.
  • Access during the holiday breaks. When term ended, there was always the question of whether I’d need my desktop for assignments during the holidays. That led to questions of whether to delay going home to family, or trying to transport it on a train. With it on my tailnet, it wouldn’t have mattered. As long as it was powered on, I could access it from my laptop back home.
      # from my laptop, on campus
ssh elliot@desktop
    

This would have been it. With MagicDNS enabled,

desktop

would resolve no matter where I was. Very useful when you’ve got a lot of other things on your mind.

“I left it on my other machine”

With my constant shuffling of files between different storage spots, it was common to find I was missing a file on campus which was on my machine back home. I’d then spend 10 minutes debating whether the 25-minute round trip was necessary, or if it was faster just to recreate it from memory.

I don’t think this ever caused me or a coursemate to miss a submission deadline. It definitely did cost us chunks of lab time we had to make up later.

Today I’d reach for Taildrive. I would share a few folders from my desktop, and browse it from my laptop whenever I needed. I could have skipped Dropbox and USB drives altogether.

Running servers without the scary parts

One benefit of being a student at the time was how much free compute the cloud providers would throw at you. DigitalOcean offered $100 of free credits, AWS had an extended free tier, and all the others had something similar. Companies were eager to get you using their product while you were still forming your opinions about technology.

We all made liberal use of that free capacity to run game servers, web projects, and silly social media bots. Doing so meant opening your server’s ports to the world and hoping your security was solid, or trying to cram OpenVPN onto an already very limited AWS t2.micro.

With Tailscale on the instance, you get a lightweight, easy to configure, secure connection. If you kept the instance’s public ports closed, you could reach unfinished projects over your tailnet, without worrying about strangers on the internet breaking in.

      # on the DigitalOcean droplet
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
    

Your shoddy custom game server, half-finished web app, or coursework database can only be reached by you, and other devices and users with access defined in your tailnet. If you then want to open something up to the wider world, you can expose it on purpose with Funnel.

Sharing with coursemates

Group projects were often where everything fell apart. Someone needed to host the demo service or asset bundles, and everyone else  needed access. So you’d either end up spending every afternoon in the lab together, waiting for that one member of your team to turn up, or going back to open ports, shared passwords, and hoping for the best.

Tailscale can’t fix your dysfunctional group schedules, but it can make sharing services easier. For a one-off project, node sharing from the admin console fixes the simple case: select a machine, invite a coursemate to access it, done. They can’t reach everything on your tailnet, just that machine, and you can revoke the share once the course module ends.

If you want to take it quite a few steps further, you could set up declarative node sharing. If, like me, you often ended up working in the same groups for projects, you can write the sharing relationship into each tailnet’s policy file. Once both sides opt-in, you can each share your own instances of the project with declarative access policies, referencing groups and tags between them, and avoiding a lot of console clicking.

If you’re a student now

With vibe coding rapidly on the rise, you’re going to be producing many more programmes than I did when I was at university. Accessing all of them securely will be a more frequent problem for you than it was for me. You don’t need an expensive homelab, complicated proxies and tunnels, or a networking degree to solve that. You just need a couple of devices and a Tailscale Personal plan. Install it on your devices, and watch your own version of this post disappear.

TB

منتشرشده در

Tailscale Blog

خواندن در منبع

ادامه مطالعه