Conversation
dc2ac01 to
998cb92
Compare
|
Any movement on this? |
b67d204 to
a44b519
Compare
Yes, but note you can already use it, it works fine with Wireguard and should from today work fine with openvpn. See instructions in the PR body. |
|
Nice, I'll have to try soon. I had trouble previously where using just wireguard plain without gluetun does work for whatever reason. |
|
Currently using ovpn.com credentials with the VPN_SERVICE_PROVIDER=custom -- hoping to be able to enable VPN_PORT_FORWARDING but it doesn't look like this pull addresses OVPN's static IPv4 offering with port forwarding. I'm open to looking into how to integrate this. Can someone confirm whether or not this PR will address port forwarding for OVPN.com? |
27f74e4 to
fe3d4a9
Compare
d0247a1 to
0eeee5c
Compare
30fe1a1 to
b04529c
Compare
40f126b to
44d5104
Compare
|
This is still relevant, any intent on merging this? 🙏 |
|
Also please note @qdm12 the image tag for this PR is no longer available: |
There was a problem hiding this comment.
Pull request overview
Adds support for the ovpn.com VPN provider, including an API-based servers updater and provider wiring, plus shared server-port selection/filtering enhancements to support per-server ports (notably for multihop).
Changes:
- Add new
ovpnprovider implementation with OpenVPN config generation and server update mechanism via ovpn API. - Introduce per-server port fields (
ports_tcp,ports_udp) and use them to pick default connection ports when present. - Extend settings/validation/docs/metadata (providers list, templates, labels, Docker env docs) to recognize
ovpn.
Reviewed changes
Copilot reviewed 29 out of 30 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Adds Ovpn to supported providers list and Wireguard-capable list. |
| internal/storage/servers.json | Registers ovpn servers file path. |
| internal/storage/hardcoded.go | Tightens validation of embedded servers manifest; improves panic messaging. |
| internal/storage/hardcoded_test.go | Ensures parsing hardcoded servers does not panic. |
| internal/storage/formatting.go | Improves “no server found” error details by including selected endpoint port. |
| internal/storage/filter.go | Adds filtering by custom port against server-defined port lists. |
| internal/provider/utils/port.go | Uses server-defined ports as defaults when available; extends signature to accept server. |
| internal/provider/utils/port_test.go | Adds test cases for server-defined ports in port selection. |
| internal/provider/utils/connection.go | Computes port per-server using new getPort signature. |
| internal/provider/providers.go | Wires new ovpn provider into provider factory. |
| internal/provider/ovpn/updater/* | Implements ovpn API fetch/validate + server list generation and tests. |
| internal/provider/ovpn/provider.go | Defines provider struct and name wiring. |
| internal/provider/ovpn/openvpnconf.go | Adds Ovpn OpenVPN configuration settings (ciphers, CA, tls-auth/crypt handling). |
| internal/provider/ovpn/connection.go | Defines Ovpn connection defaults and delegates to shared connection picker logic. |
| internal/provider/ovpn/connection_test.go | Tests Ovpn connection selection and default ports. |
| internal/models/server.go | Adds PortsTCP/PortsUDP fields to Server model. |
| internal/constants/providers/providers.go | Adds ovpn to supported providers constants/list. |
| internal/configuration/settings/wireguardselection.go | Allows Ovpn Wireguard endpoint port rules consistent with other baked-in providers. |
| internal/configuration/settings/provider.go | Adds Ovpn to provider validation allowlist. |
| internal/configuration/settings/openvpnselection.go | Allows custom OpenVPN port for Ovpn. |
| go.mod / go.sum | Bumps gluetun-servers dependency; adjusts goservices dependency entry. |
| Dockerfile | Documents MULTIHOP_ONLY as applicable to Surfshark and ovpn. |
| .github/labels.yml | Adds “☁️ OVPN” label. |
| .github/ISSUE_TEMPLATE/bug.yml | Adds OVPN to provider selection list. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Updated the branch, can you please try:
If this is a dedicated Ipv4 address only via Wireguard and using a different wireguard public key (aka add-on), then it should be implemented with EDIT: or if you're lazy, send me an openvpn and wireguard config via quentin.mcgaw@protonmail.com. You can also share a more permanent config file if you want to help development, see https://github.com/qdm12/gluetun-wiki/tree/main/contributing#vpn-credentials |
|
its working! but how can i enable port forwarding? |
|
For port forwarding see description at the top I've added a section on that. |
|
port forwarding works for .ovpn |
|
And does wireguard also work? |
- CA - TLS auth - TLS crypt (for singapore) - `allow-compression asym` - `replay-window 256` - remote-cert-tls server - move aes256gcm as preferred cipher
|
I have been running gluetun with ovpn.com as a custom wireguard provider for a while and for most of the time that have been working fine. Decided to try this PR with qmcgaw/gluetun:pr-2537 and I can confirm that the ones marked below work
WIREGUARD with SERVER_DEDICATED=on works, but I am not sure what that setting is supposed to do (all wireguard servers seem to be marked as dedicated in the downloaded ovpn.json server list). I do not have the public ipv4 addon https://www.ovpn.com/en/features/public-ipv4 so I can't provide any information about that. MULTIHOP_ONLY=on does not work at all. Log spits out ERROR VPN settings: provider settings: server selection: for VPN service provider ovpn: multi hop only filter is not supported I check the ovpn.com website how they handle multihop and you specify a ingress and egress server and they provide a custom wireguard (with an unique privatekey for each combination) or ovpn config for that combination and it is udp only For example multihop vpn44-vie to vpn57-got Openvpn Wireguard So I think that need to be implemented as separate servers in the gluetun server list. I can provide configuration files for each combination if requested Update: You probably already know this, but I looked at it again and now I understand how multihop works at least for wireguard, you connect to the ip on one server on multihoport 30079 and provide the public key of the chosen egress server. Update 2: I think that for openvpn and multihost the port used selects the egress server. |
Fix #495
Run it with image tag
:pr-2537.Wireguard
docker run --cap-add=NET_ADMIN -e VPN_SERVICE_PROVIDER=ovpn -e VPN_TYPE=wireguard \ -e WIREGUARD_PRIVATE_KEY=MFDyavQNdjUhvNfVIxoeLk6azofLwJ+xiPGDtOLrQUQ= \ -e WIREGUARD_ADDRESSES="10.64.222.21/32" \ -e SERVER_CITIES=amsterdam qmcgaw/gluetun:pr-2537OpenVPN
I need an Openvpn configuration file to know what settings they use. Right now I just know their ciphers supported, although this may be sufficient.
Port forwarding
FIREWALL_VPN_INPUT_PORTS=12345in the Gluetun configStatus
MULTIHOP_ONLY=on