I have set up VPN on my virtual private servers before, but the experience has never been easy.

Recently, I tried again, using Docker approach, and it is amazingly smooth. Done in 5 minutes!

Stop spending a fortune on paid VPN services. You can get one at $5/month on Digital Ocean. For me, I didn’t spend a cent, since I am using existing instance that already runs my stuff (:

The Pre-requisite

First you need a DigitalOcean account.

I have been using Digital Ocean for a long time, and I recommend anyone who requires a dedicated server to use it. Register an account with my referral link, and get FREE $10 (that’s 2 months!) to start with.

Set up a droplet running Ubuntu 14.x, in a geographical location of your liking. I actually have 2 droplets with this VPN setup, 1 in Singapore and 1 in US.

Then install Docker.

Setting Up OpenVPN

We are using the work of kylemanna/docker-openvpn dockerfile.

To setup the docker container (change to your domain/IP):

docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

You will be prompted to enter your EasyRSA passphrase. These are kept in your data volume ovpn-data.

Run the docker container:

docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn

Next, generate the ovpn file for your computer to connect to the VPN later.

Change CLIENTNAME to your computer name (eg. MacBook-Supreme for me ^^).

docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn

Setting up your Client

CLIENTNAME.ovpn is generated on your server.

You need to transfer the file to your computer, eg. via SSH or Cyberduck.

Down a VPN software. For Mac, we can download TunnelBlick.

Drag the CLIENTNAME.ovpn file to TunnelBlick in the menu, and you should be good to use!




Back to Home