This repository is a support-repo for: https://github.com/haugene/docker-transmission-openvpn It is an effort to separate the development and maintenance of that project and the VPN configs it relies on.
The split is thought to have multiple benefits. It will reduce noice in the main project and hopefully create a meaningful separation that can make it easier to test changes in configs and contribute to keep the providers up to date.
This repository has been forked to provide support for Perfect Privacy and additionally all Mullvad Configs have been updated along the way as well. There are a few things to note for Perfect Privacy:
- Perfect Privacy will let you choose how you want your config files bundled before downloading. Amongst other options you can also select the grouping, per city or per server. Both choices have been merged together in this repo. You can therefore select freely between 'City-all.ovpn' which will include all servers of any city (provided there is more than one server) adding better redundancy, or choose 'City1-x.ovpn' which will connect you to that exact server for better speed or using the Port Forwarding Option.
- currently the OpenVPN version of the main container is 2.5.9, Perfect Privacy standard is also version 2.5. Previously config files were downgraded for version 2.4 but have since been upgraded to version 2.5 again.
- the updateConfigs.sh Script will point to the URL to download the latest config files for Linux, which might not always be correct considering the points mentioned before. Please adjust the script with the correct selection of either City or Server if needed.
The main project currently only support OpenVPN but we're hoping to support Wireguard as well. To plan for that we are separating configs here based on technology and then provider.
So the structure becomes:
<vpn-technology>/<provider>/<bundle-name>/configs.ovpn
For example:
openvpn/mullvad/tcp80/mullvad_ch_tcp80.ovpn
Provider Folder | Provider Status | Configs tested | Successful |
---|---|---|---|
anonine | 🆘 (0%) | 10 | 0 |
anonvpn | 🆘 (0%) | 8 | 0 |
blackvpn | 🆘 (0%) | 10 | 0 |
btguard | 💯 | 2 | 2 |
bulletvpn | 🆗 (70%) | 10 | 7 |
cryptostorm | 💯 | 10 | 10 |
expressvpn | ✅ (90%) | 10 | 9 |
fastestvpn | 🆗 (80%) | 10 | 8 |
freevpn | 🆘 (0%) | 10 | 0 |
froot | 💯 | 7 | 7 |
frostvpn | 🆘 (0%) | 10 | 0 |
getflix | 🆗 (80%) | 10 | 8 |
ghostpath | 🆗 (70%) | 10 | 7 |
giganews | 💯 | 10 | 10 |
goosevpn | 10 | 6 | |
hideme | 🆗 (80%) | 10 | 8 |
hotspotshield | 💯 | 10 | 10 |
integrityvpn | 💯 | 1 | 1 |
ironsocket | 🆗 (80%) | 10 | 8 |
ivacy | ✅ (90%) | 10 | 9 |
ivpn | 💯 | 10 | 10 |
mullvad | 🆗 (70%) | 10 | 7 |
octanevpn | 🆗 (70%) | 10 | 7 |
ovpn | 🆗 (80%) | 10 | 8 |
privado | 🆗 (70%) | 10 | 7 |
privatevpn | 🆗 (80%) | 10 | 8 |
protonvpn | 💯 | 10 | 10 |
proxpn | 🆘 (0%) | 10 | 0 |
purevpn | 💯 | 10 | 10 |
ra4w | 🆘 (0%) | 10 | 0 |
safervpn | 10 | 5 | |
slickvpn | 🆗 (70%) | 10 | 7 |
slickvpncore | ✅ (90%) | 10 | 9 |
smartdnsproxy | 🆗 (80%) | 10 | 8 |
smartvpn | 3 | 1 | |
surfshark | 💯 | 10 | 10 |
tiger | 🆘 (0%) | 10 | 0 |
torguard | 🆗 (70%) | 10 | 7 |
trustzone | 🆘 (0%) | 10 | 0 |
tunnelbear | 🆗 (80%) | 10 | 8 |
vpnac | 💯 | 10 | 10 |
vpnarea | 10 | 6 | |
vpnbook | 💯 | 9 | 9 |
vpnfacile | 🆘 (0%) | 10 | 0 |
vpnht | 🆘 (0%) | 10 | 0 |
vpntunnel | 🆗 (80%) | 10 | 8 |
vpnunlimited | 🆗 (87%) | 77 | 67 |
wevpn | 💯 | 10 | 10 |
windscribe | 10 | 6 | |
zoogvpn | 🆘 (0%) | 10 | 0 |
There is a work in progress to automate periodic checks of all our configs. The table above is the current output of that work. As we can't automate this completely without having an active subscription to every supported provider we do basic connectivity tests to assert the overall health of the providers and config bundles.
Some testing is better than none, and we believe that this will help maintain and manage providers going forward.
If you have Python experience and want to contribute - you're more than welcome! Create an issue and we can start a discussion on what the next steps are. They're just runnung locally for now, but we plan to move them into a CI. Probably GitHub workflows.
For now the tests are run in a simple setup with docker-compose. We throw the configs from this repo into
the main project container, mount the test script and override the container command.
The results are written to a data folder mounted in the current location. Results will be owned by root for now,
we'll address that later. For now sudo chown
is your friend.
Start it locally by running:
docker-compose -f configtest-compose.yml up
Then you can generate the markdown table by running:
python3 generate_results_md_table.py data/result1234.json >> README.md
Or something similar depending on the data file you want to use.