ZeroTier Home VPN

I've recently been playing around with setting up a home VPN (virtual private network) using ZeroTier, which is a free, widely used, and longstanding VPN service. I've gotten 11 devices networked (ZeroTier provides client software for all of these devices):

  • 5 laptops, all Linux

  • 2 phones, all Android

  • 1 Chromebook

  • 1 cloud server, Linux

  • 1 Raspberry Pi 4

  • 1 Raspberry Pi Zero

The laptops/servers are all are running linux, the phones and the chromebook additionally run f-droid & termux. This means I can get to a linux command line on all devices; I can ping any device from any other device; I can install most linux software on any device; and and most importantly I can ssh into any device from any other device. This all takes place within the boundaries of the private network.

Of course the benefit of networked linux devices is quickly realized since they all by default can ping each other, can ssh each other, can rsync each other, etc. This wouldn't normally be a big deal since devices on a local network can do all of this already. However, not all devices are always on the same locally geographic network. For example, mobile phones while away from home are no longer connected to the home network, but they remain connected to the VPN. SImilary, my linode server has never been connected to my home network, but since it's now on the VPN, it appears to be just another device on my home network. One real game changer for me was running linux using termux on the android mobile phones (and the chromebook), in addition to the VPN software running on these devices.

One example of a quick benefit I've realized from the combination of VPN on Android, along with Termux on Android, is that now I'm able to quickly/painlessly move files around between my main laptop (or any other network device) and my main mobile phone. I was able to access the main media folders (podcasts, audiobooks, etc). This just is a much faster, more friction-less, more flexible scenario than trying to moving files around the more conventional way by plugging the phone into the usb port, etc.