Tutorial #10: OpenVPN on a VPS with Ubuntu 16.04

As you may have read in my previous post, I was more than a tad disappointed by the performance of PIA. The inconsistent speeds along with geo-blocking made it really difficult to stream HD content. For me, it became a case of "if you want it done right, then do it yourself" and hence I went about setting up my own OpenVPN server. As always, I am not reinventing the wheel here by rewriting what is already well written, but recounting my experience of it. This should be of some assistance to anyone looking to get their hands dirt as well.

Step 1: Get a virtual private server (VPS)

As with real estate, selecting a VPS can turn out to be all about "location, location, location". One of the reasons might be to ensure a low ping which is a necessity for audio, video services as well as for gaming. The other one would be about the identity that you want to assume "virtually". With geo-blocking, you might want to be based off a specific location that offers some advantages in terms of the services you can access in that country.

Having decided the server location, the next factor would be the cost. If running a VPN server and some other personal services is the priority, then you can get away with having a single virtual core processor and half a gig of RAM. The storage available will vary on whether it is hard disk space or SSD cached or SSD itself. I wouldn't recommend hosting anything off such a server and hence tens of gigs of storage space is usually more than sufficient. Pricing for such a configuration is unlikely to lighten your wallet by more than $1/month, so it might be a case of money well spent.

Once you have the server in place, most service providers offer one-click OS installations. Debian is undoubtedly a popular choice but I found its repository to be outdated compared to Ubuntu. Since we are not running a really professional operation here, we can make do with the stability of Ubuntu at the benefit of having access to newer software packages through apt.

Step 2 (optional): Get a domain

This step is purely optional as such a setup is unlikely to be broadcasted to the world and you can make do with using just the IP address. Having a domain then is just a matter of convenience. For me, namecheap's $0.88 offer was too good to pass. An alternative would be to use DDNS services, in which case you might have to renew the address periodically.

Step 3: Setup the OpenVPN server

I usually end up perusing the tutorials put up by DigitalOcean for setting up various aspects of a VPS and this time it was no different. Hence, I will just share the link to the tutorial.

However, there are a couple of things that have to be kept in mind:
1. Although the tutorial is written for a non-root user, there are some instances where the "sudo" command is omitted and you have to take care to include it, barring which the commands will simply fail.
2. Even after following the tutorial to a tee, you might encounter errors when starting the service using systemctl in Step 9. This is resolved by commenting out the line mentioned here.

In terms of performance, there is no bottleneck or geo-blocking that I have encountered till date which is an instant improvement over PIA. Of course, having a VPN service with servers in multiple countries is still beneficial but then a VPS allows you to do a lot more things through remote shell access. The two simply complement each other and is a good toolkit to have on your side in this age of constant data accumulation and monitoring.