Do I need a VPN?
I probably don’t need a personal VPN. I don’t travel a great deal but, if I do, the company I work for takes care of a VPN for me. For personal use, I don’t regularly find myself needing or wanting to connect to public wifi – a 4G phone connection provides most of what I need.
I was listening to an episode of Changelog with the creator of Algo, and heard quite a few arguments against a lot of people’s (or VPN companies’) reasons for using a VPN. It’s an interesting discussion and I won’t do it justice by talking about it here so listen to it if you’re interested. Anyway, whilst I probably don’t need a VPN, Algo sounded interesting and useful in case my situation changed, so I thought I’d give it a go.
Set up on ChromeOS
The GitHub page for Algo contains great documentation, but I did hit a snag trying to set it up on my Pixelbook. Although I have Python 3 installed, the default setup only includes python-3.5.3, but Algo requires 3.6 or later.
There are a couple of options for installing a later version of Python. Unfortunately, I couldn’t find Python 3.6 in the Debian repos, so I considered building it from source, or installing a package like Anaconda.
Building from source
The only gotcha with this method is that without changing the bash environment the
python3 command defaults to the system python-3.5 installation.
I first found out about Anaconda when I was interested in scientific applications of Python. It is a self-contained environment that is quite portable – it allows me to install a full Python environment on my locked-down corporate Windows laptop. It also supports multiple Python environments and has a package manager called Conda. Download and setup is easy – just grab the shell installer from the website and run it.
Setting up Algo
With a suitable version of Python installed, the instructions on the Algo GitHub page should work without any problems. Since I built Python from source but only installed it locally, without changing any bash environment variables I modified the virtual environment setup command to:
$HOME/.local/bin/python3 -m virtualenv .env && source .env/bin/activate && python3 -m pip install -U pip virtualenv && python3 -m pip install -r requirements.txt
Starting a VPN
Once it’s installed, you can just run
algo and follow the on-screen instructions. Guides are provided on GitHub for various providers. I’ve tried DigitalOcean and Google Compute Engine so far. DigitalOcean is very easy – once you’ve set up an account you just need to copy your API key and Algo will do the rest. I had a problem with Google Compute Engine works that I haven’t solved yet, and similarly with Microsoft Azure. I’ll update this once I get them working.
Update on GCE
I was able to get this working by setting up the service using the Google Cloud Shell. I don’t know quite what wasn’t working by running the process on my Chromebook (or desktop), but it may have been due to the versions of Python used/required.
Using the VPN
Actually using a VPN was one of the biggest pains I had when I previously dabbled with OpenVPN. Fortunately this part is easy. Install Wireguard (from Google Play Store), and either import the config file generated by Algo (on ChromeOS), or scan the QR code (Android). It works a treat.