Skip to content

Bug: ProtonVPN server list is incomplete #3067

Description

@bobobo1618

Is this urgent?

No

Host OS

No response

CPU arch

None

VPN service provider

ProtonVPN

What are you using to run the container

docker run

What is the version of Gluetun

Running version latest built on 2025-12-29T05:33:29.822Z (commit 9b9b723)

What's the problem 🤔

This repo lists substantially more ProtonVPN servers than Gluetun. The repo readme explains why:

UPDATE on 2025-11-08: Just found that the web version list is not complete so that this list is not the full list.
The trick is to use a different x-pm-appversion value to not use the web-vpn-settings.

I found that when I took the HTTP request from the web portal, it used x-pm-appversion: web-vpn-settings@5.0.286.0. The response contents were consistent with Gluetun.

However when I changed the header to 'x-pm-appversion: linux-vpn@4.14.1', I got substantially more servers (a few hundred more).

Share your logs (at least 10 lines)

> sudo docker exec -it <REDACTED> /gluetun-entrypoint format-servers -protonvpn | grep Switzerland | grep wireguard
| Switzerland |  | Zurich | `ch-09-tor.protonvpn.net` | wireguard | ❌ | ❌ |  |  |
| Switzerland |  | Zurich | `node-ch-17.protonvpn.net` | wireguard | ❌ | ❌ |  |  |
| Switzerland |  | Zurich | `node-ch-07.protonvpn.net` | wireguard | ❌ | ✅ |  |  |
| Switzerland |  | Zurich | `node-ch-14.protonvpn.net` | wireguard | ❌ | ✅ |  |  |
| Switzerland |  | Zurich | `node-ch-26.protonvpn.net` | wireguard | ❌ | ✅ |  |  |
| Switzerland |  | Zurich | `node-ch-29.protonvpn.net` | wireguard | ❌ | ✅ |  |  |
| Switzerland |  | Zurich | `node-ch-30.protonvpn.net` | wireguard | ❌ | ✅ |  |  |
| Switzerland |  | Zurich | `node-ch-33.protonvpn.net` | wireguard | ❌ | ✅ |  |  |
| Switzerland |  | Zurich | `node-ch-37.protonvpn.net` | wireguard | ❌ | ✅ |  |  |
| Switzerland |  | Zurich | `node-ch-38.protonvpn.net` | wireguard | ❌ | ✅ |  |  |
| Switzerland |  | Zurich | `node-ch-03.protonvpn.net` | wireguard | ❌ | ✅ |  |  |
| Switzerland |  | Zurich | `node-ch-11.protonvpn.net` | wireguard | ✅ | ❌ |  |  |
| Switzerland |  | Zurich | `node-ch-21.protonvpn.net` | wireguard | ✅ | ❌ |  |  |

> curl -H 'x-pm-appversion: linux-vpn@4.14.1' <REDACTED> 'https://account.protonvpn.com/api/vpn/v1/logicals' | jq -r '[.LogicalServers[] | select(.ExitCountry == "CH" and .EntryCountry == "CH") | .Domain] | sort | unique | .[]'
ch-09-tor.protonvpn.net
node-ch-02.protonvpn.net
node-ch-03.protonvpn.net
node-ch-05.protonvpn.net
node-ch-06.protonvpn.net
node-ch-07.protonvpn.net
node-ch-08.protonvpn.net
node-ch-10.protonvpn.net
node-ch-13.protonvpn.net
node-ch-14.protonvpn.net
node-ch-16.protonvpn.net
node-ch-17.protonvpn.net
node-ch-18.protonvpn.net
node-ch-20.protonvpn.net
node-ch-24.protonvpn.net
node-ch-25.protonvpn.net
node-ch-26.protonvpn.net
node-ch-27.protonvpn.net
node-ch-28.protonvpn.net
node-ch-29.protonvpn.net
node-ch-30.protonvpn.net
node-ch-31.protonvpn.net
node-ch-32.protonvpn.net
node-ch-33.protonvpn.net
node-ch-34.protonvpn.net
node-ch-35.protonvpn.net
node-ch-36.protonvpn.net
node-ch-37.protonvpn.net
node-ch-38.protonvpn.net
node-ch-39.protonvpn.net
node-ch-40.protonvpn.net
node-ch-41.protonvpn.net
node-ch-42.protonvpn.net
node-ch-43.protonvpn.net
node-ch-44.protonvpn.net
node-ch-47.protonvpn.net
node-ch-48.protonvpn.net
node-ch-49.protonvpn.net
node-ch-50.protonvpn.net

Share your configuration

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions