Supported providers
How we manage VPN providers¶
The container used to come bundled with a bunch of config files for a range of VPN providers. This was fine when it was a handful or even a dozen supported providers, but as we approached 50 providers and 10k configs there wasn't time for anything else than keeping them up to date.
So we've tried to come up with a more maintainable setup. We have split the .ovpn configs out to a separate repository at: https://github.com/haugene/vpn-configs-contrib.
All static configs that have to be manually updated will live there and be pulled on container startup. We will try to set up a CODEOWNERS scheme and ask for more help from the community to keep them up to date.
Some providers are still provided from the core project and those are the ones that have implemented a script for fetching the configs dynamically. Going forward we will allow code in this project, not config.
So that is the story of how we now have two types of providers: internal
and external
.
The benefit of having native support for external configs is that it is much simpler for a user to
make a fork of the config repo and simply tell the container to use his or her fork. This way we can hopefully
empower many more to help out with keeping our providers up to date and adding new ones.
Out-of-the-box supported providers¶
If you can't find your provider you are welcome to head over to the config repo to request it or add it yourself. Keep in mind that some providers generate configs per user where the authentication details are a part of the config and they can therefore not be added here but has to be manually supplied by the user. You can use any OpenVPN config with this container by mounting it as a file in the container. For more info on that see the using a custom provider section.
Internal Providers¶
These providers are implemented as a script in this project and will automatically download new configs directly from the provider on container startup.
Provider Name | Config Value (OPENVPN_PROVIDER ) |
---|---|
IPVanish | IPVANISH |
NordVPN | NORDVPN |
Private Internet Access | PIA |
VyprVpn | VYPRVPN |
External Providers¶
These providers are fetched from our config repo on startup. They have to be manually updated in that repo when the provider changes them but we're trying to keep them up to date.
Note that we try to keep this list in sync but it is the files and folders in the config repo that ultimately is the most up-to-date list of configs and providers that are supported.
Provider Name | Config Value (OPENVPN_PROVIDER ) |
---|---|
Anonine | ANONINE |
AnonVPN | ANONVPN |
BlackVPN | BLACKVPN |
BTGuard | BTGUARD |
Cryptostorm | CRYPTOSTORM |
ExpressVPN | EXPRESSVPN |
FastestVPN | FASTESTVPN |
FreeVPN | FREEVPN |
FrootVPN | FROOT |
FrostVPN | FROSTVPN |
Getflix | GETFLIX |
GhostPath | GHOSTPATH |
Giganews | GIGANEWS |
HideMe | HIDEME |
HideMyAss | HIDEMYASS |
IntegrityVPN | INTEGRITYVPN |
IronSocket | IRONSOCKET |
Ivacy | IVACY |
IVPN | IVPN |
Mullvad | MULLVAD |
OctaneVPN | OCTANEVPN |
OVPN | OVPN |
Privado | PRIVADO |
PrivateVPN | PRIVATEVPN |
ProtonVPN | PROTONVPN |
proXPN | PROXPN |
PureVPN | PUREVPN |
RA4W VPN | RA4W |
SaferVPN | SAFERVPN |
SlickVPN | SLICKVPN |
SlickVPNCore | SLICKVPNCORE |
Smart DNS Proxy | SMARTDNSPROXY |
SmartVPN | SMARTVPN |
Surfshark | SURFSHARK |
TigerVPN | TIGER |
TorGuard | TORGUARD |
Trust.Zone | TRUSTZONE |
TunnelBear | TUNNELBEAR |
VPN.AC | VPNAC |
VPNArea.com | VPNAREA |
VPNBook.com | VPNBOOK |
VPNFacile | VPNFACILE |
VPN.ht | VPNHT |
VPNTunnel | VPNTUNNEL |
VPNUnlimited | VPNUNLIMITED |
Windscribe | WINDSCRIBE |
ZoogVPN | ZOOGVPN |
Use your own config without building the image¶
If you have a .ovpn file from your VPN provider and you want to use it but you either don't know how to build the image yourself or if you don't want to there is another way.
Check out the guide for this in the config repo.
Using a local single .ovpn file from a provider¶
For some providers, like AirVPN, the .ovpn files are generated per user and contain credentials. These files can not be hosted anywhere publicly visible. Then you can mount the files into the container and use them directly from your local host.
Grab all files from your provider (usually a .zip file to download & unzip)
Copy them into a folder on your Docker host, there might be .ovpn files and ca.cert as well (example below /volume1/docker/ipvanish/)
Mount the volume Compose sample:
- /volume1/docker/ipvanish/:/etc/openvpn/custom/
Declare the Custom provider, the target server and login/password
Also important to note here is that OPENVPN_CONFIG
value needs to be the name of the ovpn file wanting to be referenced in the /etc/openvpn/custom
volume. In the example below the ovpn file name is ipvanish-UK-Maidenhead-lhr-c02.ovpn
Compose sample:
- OPENVPN_PROVIDER=custom
- OPENVPN_CONFIG=ipvanish-UK-Maidenhead-lhr-c02
- OPENVPN_USERNAME=user
- OPENVPN_PASSWORD=pass
Docker ENV vars sample:
-e OPENVPN_PROVIDER=custom \
-e OPENVPN_CONFIG=ipvanish-UK-Maidenhead-lhr-c02 \
-e OPENVPN_USERNAME=user \
-e OPENVPN_PASSWORD=pass \
Do not mount single config file¶
Do not mount a single config directly. The container will fail if you try, since it causes sed errors when modify-openvpn-config.sh is executed. Instead mount the directory where the config exists.
sed: cannot rename /etc/openvpn/custom/sedHeF3gS: Device or resource busy