Introduction

I was recommended some videos and I’ve been very interested to watch them. However they’re not available outside of a specific country due to geographic restrictions. This is a common problem and pretty much every commercial VPN service advertises this as a major reason to use their VPN.

So I embarked on what should have been a simple journey. Sign up for a VPN, choose an end point in the country I need, and watch the videos. Alas, this turned out not to be so simple.

My (bad) Experience with Some Commercial VPNs

I looked at several commercial VPNs and they all had similar problems. Thankfully, they all offer money back guarantees so I was able to cancel them pretty quickly. It was surprising how bad they can be. I’m not going to name which ones I tried because this isn’t a through review of their services. Also, while they didn’t work for my needs, they’d probably work in other contexts. I’m confident they do work for the needs of many people, just not mine.

In my case, I’m in the US and need to appear in a different and much smaller country. Due to needing to appear in a smaller country, the commercial VPN providers had very few endpoints to choose from there, 1 to 3. Additionally, I’m using a small and niche (legal) streaming service.

Performance

The performance was bad. Even basic web browsing was unacceptably slow. While I know there is a performance penalty for using a VPN, due to both the VPN protocol and routing across the world, this was far worse than I it should have been.

The providers performance claims from their advertisements where vastly different than what I experienced. I’m not at all surprised, especially with some claiming their VPN can speed up streaming and make it even faster than it would be otherwise. But still, it was slow to the point of being unacceptable.

I’m not a BOT!

The first, but not the only, end point I tried was basically unusable. Everything would flag me as a bot and either have me enter a captcha on every page or it would flat out deny me access saying I’m a bot.

Even google.com wouldn’t load until I solved their captcha. I didn’t even know Google would show you a blank page with just a reCaptcha if it thinks your a bot. It wasn’t just one time, it was everything I tried to do. Go to google.com, captcha, type in your search and press enter, captcha, press next to see the next page of results, captcha. New search, another captcha to solve.

Multiple end points did this. Which isn’t ideal when there are a limited number of endpoints available.

Oh and streaming didn’t work on the end points where I was flagged as a bot.

Streaming Services Detecting and Blocking VPNs

The handful of endpoints that at least worked for general browsing had another issue. Streaming services don’t like VPNs and actively try to block them. Which kept happening to me. I’d verify the VPN was working and that I had an IP address for the country I need. But the streaming service would give me an error trying to watch videos. It was a different error than the licensing error due to being in the wrong country.

To be fair, I found 1 endpoint on one provider that worked. However, I can’t rely on that one end point working long term when all of the others don’t work.

VPN Service Streaming Promises

I was curious about the, “use us to get around geo blocking for streaming” advertisements and looked into it a little bit. The commonality I found is, they have a list of streaming services they will ensure work with their VPN. They will do various things to get around streaming services knowing a given IP address is owned by a VPN service. But they only take action if one of the streaming services on their list starts blocking them.

Since I’m using a niche streaming service, they’re not in any of the VPN provider’s guaranteed streaming service lists. So I’m out of luck if the VPN gets blocked. I don’t have much confidence about this being a viable for me.

My Solution

At this point I was ready to give up because I couldn’t find a commercial VPN that I felt confident in using long term. That said, I did have one final idea. Setup my own server in a data center in the country I’m trying to stream from. Then VPN through the server.

This way, I’d have a dedicated IP address that only I would be using. So there would be little to no chance of being mistaken for a bot. Also, the IP shouldn’t be on any VPN lists the streaming services use for blocking VPNs. Finally, data centers typically have excellent performance.

DigitalOcean

I chose to use DigitalOcean’s VPS product. My go to is Linode, who I’ve been using for nearly 15 years, but they don’t have a data center in the country I need. DigitalOcean, on the other hand, does.

Overall, I’m happy with what I’ve used from DigitalOcean. Their documentation is good. The web interface for managing VMs and DNS is easy to use. I also like their cloud firewall you can put in front of your VM. In addition to any firewall you would (should) setup on the VM itself. I have no complaints at this point but I haven’t used them enough to give a review. So far my experience has been very positive.

The Server

I decided to use Ubuntu Linux on the server. Normally I’d choose Arch Linux, which I use with Linode but it isn’t offered by DigitalOcean. This isn’t a problem, because I’m just as comfortable with Ubuntu. I prefer the rolling release nature of Arch vs the big update that you need to do every few years with Ubuntu.

DigitalOcean provides very nice documentation for initially setting up an Ubuntu Server. As well as a guide for enabling and setting up ipv6 on your account and in the VM.

The VPN

For the VPN I decided to use WireGuard because it’s secure, has great performance, and is built into the Linux kernel. It has clients for pretty much everything including mobile. So I can use the VPN on my laptop and phone.

Once again, DigitalOcean has a very nice guide for setting up WireGuard. It’s very easy to follow and took very little time to get it setup for both IPv4 and IPv6.

DNS

When you create your VM, it will assign a random IP address from a pool. Thankfully, their DNS service is free and allows you to choose set the A and AAAA records to your VM, instead of specifying the IP address manually. This is just a nice touch that makes it less likely to typo the IP address when setting up the records.

Cost

So the cost of running my own VPN server. Time wise, it’s negligible. Setting it up took about half an hour. Keeping the server up to date won’t take more than a few minutes to install monthly updates and verify everything looks good.

Money wise, I’m paying for the $6 a month plan and the domain name I’m using cost me $17.75 for 1 year. I don’t anticipate any bandwidth overage costs because the outbound data limit is 1 TB and my home internet’s bandwidth cap is 1.25 TB. Which I don’t even come close to reaching.

At $6 a month over 12 months with the one time $17.75 domain name, that come out to ~$7.48 a month. It’s a little more than the per month price for a 1 year plan from most commercial VPNs, but not by much.

I could save some money by combining my blog with this DigitalOcean VPS I’ve setup to use as a VPN. Also, reusing my existing domain name, or using a sub domain name, instead of buying a new one dedicated to the VPN server would have saved more money. Total cost would be $1 a month because I already pay $5 with Linode and DigitalOcean is $1 more expensive for the equivalent plan. At $1 a month, this would be much cheaper than any commercial VPN service.

However, for security, I subscribe to the idea that servers should be dedicated to a single purpose. I’d rather not use the same server to host multiple things and increase my potential vulnerability footprint. If one server gets compromised the damage is limited. Granted, none of my use cases are critical. It’s all personal hobby use.

Conclusion

Using DigitalOcean’s VPS to have an Ubuntu server with WireGuard as my VPN solution has been great. I can’t perceive a performance penalty, I haven’t been told I’m a bot, and videos stream perfectly. It does everything I need and does is far better than any of the commercial VPNs I tried.

That said, running my own VPN server doesn’t provide me with everything a commercial VPN does. Specifically, the same level of anonymity. However, that’s not the reason I want to use a VPN. The one thing I want is streaming and the commercial can’t provide that. Running my own VPN server does.

I’m extremely happy with this solution and I’ve been enjoying watching the shows that were recommended to me.