Personal VPN Server 101

Why?

Privacy

Development

Dodging Geo-Blocking

Enter Algo

Why algo?
OpenVPN has been broken recently and there's no unseeing the light.


I've been ranting about the sorry state of VPN svcs for so long, probably about time to give a proper talk on the subject. TL;DR: use Algo.
-- Kenn White
Before picking a VPN provider/app, make sure you do some research https://research.csiro.au/ng/wp-content/uploads/sites/106/2016/08/paper-1.pdf ... – or consider Algo
-- The Register
Algo is really easy and secure.
-- the grugq
I played around with Algo VPN, a set of scripts that let you set up a VPN in the cloud in very little time, even if you don’t know much about development. I’ve got to say that I was quite impressed with Trail of Bits’ approach.
-- Romain Dillet for TechCrunchIf you’re uncomfortable shelling out the cash to an anonymous, random VPN provider, this is the best solution.
-- Thorin Klosowski for Lifehacker
Install
Login into host/vpn via ssh (many windows users find putty helpful)
$ ssh username@<your_ip>
Ubuntu
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update && sudo apt-get install ansible
$ git clone https://github.com/trailofbits/algo
$ cd algo && ./algo
Debi
$ sudo apt-get install software-properties-common
$ echo 'deb http://ppa.launchpad.net/ansible/ansible/ubuntu xenial main' | sudo tee -a /etc/apt/sources.list.d/ansible.list
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudo apt-get update
$ sudo apt-get install ansible
$ git clone https://github.com/trailofbits/algo
$ cd algo && ./algo
SSH into Algo Server
$ ssh user@<your_ip> -i ~/.ssh/algo.pem
Adding or Removing Users
$ ./algo update-users
Setup an SSH Tunnel
$ ssh -D 127.0.0.1:1080 -f -q -C -N user@ip -i configs/ip_user.ssh.pem
VPN Client
If anyone has issues with the official instructions below, find me in chat and I'll try my best to offer assistance and if need be write a guide for the client in question.
Please Start with the Official Instructions:
Linux
Desktop - https://github.com/trailofbits/algo#linux-network-manager-clients-eg-ubuntu-debian-or-fedora-desktop
Server - https://github.com/trailofbits/algo#linux-strongswan-clients-eg-openwrt-ubuntu-server-etcWindows
Copy your PowerShell script windows_{username}.ps1 and p12 certificate {username}.p12 to the Windows client
Run the following command as Administrator to configure the VPN connection:
powershell -ExecutionPolicy ByPass -File windows_{username}.ps1 Add