Docked-VPN - A Docker-based proxy with VPN support
Docked-VPN is a Docker-based proxy with support for OpenVPN. It enables you to route only the applications of your choice through a VPN. For example, you can add VPN to Firefox but not Chrome. With Docked-VPN, using VPN is as simple as connecting to a Proxy. Docked-VPN can be used with any software that supports a proxy.
How to Use
Starting Docked-VPN
You can start Docked-VPN with the following command:
docker run -v $(pwd)/<path-to-config-dir>:/vpn --privileged seedbits/docked-vpn:latest
Breaking down the above command:
docker run : The command to run the Docker container.-v $(pwd)/<path-to-config-dir>:/vpn : This option makes your config directory accessible to the Docked-VPN container. The path to this directory inside the container will be/vpn . Your config directory is expected to contain a bash filerun.sh and any configuration files required byrun.sh . Docked-VPN will executerun.sh to start OpenVPN with the configuration of your choice. Typically,run.sh contains the following single command:openvpn --config my-config.conf --auth-user-pass my-creds.txt"
where,my-config.conf is the OpenVPN configuration of your VPN provider andmy-creds.txt contains the username and password for your VPN.--privileged : Flag that grants Docker the privilege to createtun interface.seedbits/docked-vpn : The Docker image name.
Connecting to Docked-VPN
Once the container starts up, you can use port 3128 of the container to connect to the proxy. Configure your browser/software to use this proxy to route your traffic through the VPN.
What's inside?
The following diagram shows how Docked-VPN works.
Docked-VPN has two main components. The Squid proxy and OpenVPN. The Squid proxy accepts connections from outside the container through port 3128 and routes it through OpenVPN.
A setup without Docker
If you like to create the above setup without using Docker and Squid proxy, please refer to the article "Working on and off VPN simultaneously (Linux)". The article discusses how you can manually create the setup that Docker creates for you.
The end