How to install Proton VPN on Tumbleweed?

I am completely new to openSUSE as well as to Tumbleweed which I recently installed. Tumbleweed is now my OS on my primary workstation even though I do not really know how to do maintenance and understand what is going on behind the curtains. I guess it is going to be “learning by doing”.

  • But I have one urgent issue that I need an advice for. It is regarding installing a VPN which I need before I am able to grasp all of the details regarding setting it up myself.

I am having a paid subscription to Proton VPN but I find it extremely hard to find any updated sources on the internet about how to install it. Most of the time I find guides like “setting up a VPN on Linux” but reading through the those guides they do not include instructions for openSUSE Tumbleweed. That is the outcome of many of my internet searches. Also many topics I have found often gives unclear or too technical instructions that I am not able to fully understand. So I need some kind of guide with NOT only commands for the terminal but also with information about what is going on. This is also because generally, I am not familiar with the Linux environment. Before I was a mac user with no real technical experience. So to speak I am a casual mac user crashing right into the Tumbleweed-dimension, it feels a little bit like that.

I am having a Dell Latitude E5570 laptop which is running Tumbleweed

VERSION=“20230304”

ID=“opensuse-tumbleweed”
ID_LIKE=“opensuse suse”
VERSION_ID=“20230304”

If any other technical info. on my side is needed let me know.

By the way, I think that I would like to use the CLI version of Proton VPN instead of the GUI version. What are your experiences with those two options?

Hi there,

the packages “protonvpn-gui” and “protonvpn-cli” are in the official openSUSE Tumbleweed repositories, which means you can directly install them via Yast or the terminal.

I use the GUI and apart from entering my username and password into the application there was nothing else for me to configure. It just works!

1 Like

Hi,

I maintain the packages for Proton VPN, in case you have issues feel free to share them.

You can install the official proton apps with zypper:

zypper in protonvpn-cli

or for GUI version:

zypper in protonvpn-gui

On a side note, on the Proton VPN dashboard, you can also download OpenVPN configurations. OpenVPN integrates well with Gnome and KDE.

The official Proton VPN apps for Linux do not support WireGuard, Stealth, or any other protocols, just OpenVPN.

1 Like

avicenzi, Thanks for the info.

I tried installing Proton VPN according to your terminal instruction for the CLI-version. The program installed with no problems. However, I had to install it with superuser rights, so I found out I had to write sudo in front of the command.

Nonetheless, the program will not start. I have several errors when I try to connect? I have no idea about those errors - there is no explanation of the errors other than references to line numbers inside some kind of code, which really is a very limited help for users like me. The only thing which I can figure out are that are 2 errors regarding an "Invalid access token and an “Invalid refresh token”. There are no explanations at all about what I can do to fix it :unamused: - what would you suggest regarding steps to counter these errors? Below is the error message:

protonvpn-cli c
Traceback (most recent call last):
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 39, in call
result = self._func(session, *args, **kwargs)
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 620, in update_servers_if_needed
self.__proton_api.api_request(
File “/usr/lib/python3.10/site-packages/proton/api.py”, line 294, in api_request
raise ProtonAPIError(response)
proton.exceptions.ProtonAPIError: Invalid access token

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 39, in call
result = self._func(session, *args, **kwargs)
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 411, in refresh
self.__proton_api.refresh()
File “/usr/lib/python3.10/site-packages/proton/api.py”, line 468, in refresh
refresh_response = self.api_request(
File “/usr/lib/python3.10/site-packages/proton/api.py”, line 294, in api_request
raise ProtonAPIError(response)
proton.exceptions.ProtonAPIError: Invalid refresh token

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/bin/protonvpn-cli”, line 33, in
sys.exit(load_entry_point(‘protonvpn-cli==3.13.0’, ‘console_scripts’, ‘protonvpn-cli’)())
File “/usr/lib/python3.10/site-packages/protonvpn_cli/main.py”, line 21, in main
ProtonVPNCLI()
File “/usr/lib/python3.10/site-packages/protonvpn_cli/cli.py”, line 65, in init
res = getattr(self, args.command)()
File “/usr/lib/python3.10/site-packages/protonvpn_cli/cli.py”, line 71, in c
return self.connect()
File “/usr/lib/python3.10/site-packages/protonvpn_cli/cli.py”, line 133, in connect
return self.cli_wrapper.connect(args)
File “/usr/lib/python3.10/site-packages/protonvpn_cli/cli_wrapper.py”, line 261, in connect
servername, protocol = self.dialog.start()
File “/usr/lib/python3.10/site-packages/protonvpn_cli/cli_dialog.py”, line 48, in start
self.servers = self.session.servers
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 675, in servers
self.update_servers_if_needed()
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 42, in call
self.__handle_api_error(e, session, *args, **kwargs)
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 69, in __handle_api_error
return getattr(
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 154, in _handle_401
session.refresh()
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 42, in call
self.__handle_api_error(e, session, *args, **kwargs)
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 69, in __handle_api_error
return getattr(
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 207, in _handle_10013
raise APISessionIsNotValidError(error)
protonvpn_nm_lib.exceptions.APISessionIsNotValidError: Invalid refresh token

This sounds like you need to login first before you can perform further tasks.

arvidjaar, thanks for your suggestion.
I get this message when I try to login:

protonvpn-cli login [my login name]

You are already logged in.

So apparently I am logged on. I don’t know if it is a problem that I am logged in via my browser where I have a window open with my Proton e-mail - it is running on the same username and password (account).

That could be. It certainly makes sense to log out (to make sure session is not active anymore) and try again.

I just tried that with no luck:

protonvpn-cli login [my username]

You are already logged in.

After the above I tried the below which did not work either:

Batman@rollingtumbler:~> protonvpn-cli d
Attempting to disconnect from Proton VPN.

No Proton VPN connection was found. Please connect first to a Proton VPN server.

Batman@rollingtumbler:~> protonvpn-cli c
Traceback (most recent call last):
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 39, in call
result = self._func(session, *args, **kwargs)
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 620, in update_servers_if_needed
self.__proton_api.api_request(
File “/usr/lib/python3.10/site-packages/proton/api.py”, line 294, in api_request
raise ProtonAPIError(response)
proton.exceptions.ProtonAPIError: Invalid access token

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 39, in call
result = self._func(session, *args, **kwargs)
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 411, in refresh
self.__proton_api.refresh()
File “/usr/lib/python3.10/site-packages/proton/api.py”, line 468, in refresh
refresh_response = self.api_request(
File “/usr/lib/python3.10/site-packages/proton/api.py”, line 294, in api_request
raise ProtonAPIError(response)
proton.exceptions.ProtonAPIError: Invalid refresh token

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/bin/protonvpn-cli”, line 33, in
sys.exit(load_entry_point(‘protonvpn-cli==3.13.0’, ‘console_scripts’, ‘protonvpn-cli’)())
File “/usr/lib/python3.10/site-packages/protonvpn_cli/main.py”, line 21, in main
ProtonVPNCLI()
File “/usr/lib/python3.10/site-packages/protonvpn_cli/cli.py”, line 65, in init
res = getattr(self, args.command)()
File “/usr/lib/python3.10/site-packages/protonvpn_cli/cli.py”, line 71, in c
return self.connect()
File “/usr/lib/python3.10/site-packages/protonvpn_cli/cli.py”, line 133, in connect
return self.cli_wrapper.connect(args)
File “/usr/lib/python3.10/site-packages/protonvpn_cli/cli_wrapper.py”, line 261, in connect
servername, protocol = self.dialog.start()
File “/usr/lib/python3.10/site-packages/protonvpn_cli/cli_dialog.py”, line 48, in start
self.servers = self.session.servers
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 675, in servers
self.update_servers_if_needed()
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 42, in call
self.__handle_api_error(e, session, *args, **kwargs)
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 69, in __handle_api_error
return getattr(
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 154, in _handle_401
session.refresh()
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 42, in call
self.__handle_api_error(e, session, *args, **kwargs)
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 69, in __handle_api_error
return getattr(
File “/usr/lib/python3.10/site-packages/protonvpn_nm_lib/core/session/session.py”, line 207, in _handle_10013
raise APISessionIsNotValidError(error)
protonvpn_nm_lib.exceptions.APISessionIsNotValidError: Invalid refresh token

I just tried to RESTART Tumbleweed. Back in the days with Microsoft and Windows it usually helped when having problems. In this case it didn’t work. After a restart I went directly to the terminal and tried to logon but I still get this message:

You are already logged in.

And when I try to connect I still get the long list or errors shown in the above messages.

So somehow I am logged in, even though I did not login personally, and when I try to connect I am am not logged in according to the error messages. I find it really had to understand the logic behind this strange behavior.

I setup free account on Proton VPN and installed protonvpn-cli from the default Tumbleweed repository. I do not get this error, it logs in and connects without problems (OK, I am blocked from accessing Proton VPN server, so I have to use another VPN to access it :slight_smile: )

So you may really want to check if connection to Proton VPN is not blocked/intercepted by your ISP. It is also possible that ISP where Proton VPN login server is located refuses connection from your network. What is the result of

curl -vI https://status.proton.me/

That said, when I tried protonvpn-cli connect it just created NetworkManager OpenVPN connection and activated it. So it really is not needed to use Proton VPN, it just offers more convenient interface for selecting server to connect to.

The result I’ve got is this: Pastebin.com - Locked Paste
Password = a3pM7N431b

After spending most of the day with no progress at all then I finally came a little closer to a solution. I asked the chatbot (PGT). Here is the chat I had with it: Pastebin.com - Locked Paste
Password = nRGYncFJiB

After following the instructions from the Chatbot I am able to start Proton-VPN CLI. During the process I had to enter a new password into a keyring for, I guess, the Proton-VPN CLI.

But even though I had a breakthrough then the final step fails. After I have picked the country and the vpn-server I want to connect to the process is stopped with a dialogue box coming up giving me this warning/message:

Authentification required
System policy prevents modification of network settings for all users.

No mattter if I type my root password or any other password I use into this authentification dialogue nothing happens. And finalle I get this message in the terminal (which is waiting for the authentification):

Setting up Proton VPN.

An unknown error has occured. Please ensure that you have internet connectivity.
If the issue persists, please contact support.

So this is where I’m at at this moment. Any tips to solve the rest of the problem would be totally nice.

This should be root password and it most certainly works. Make sure you are entering the correct password.

P.S. posting password protected links to advertising sites is not the best way to share information. We have https://susepaste.org/ for this purpose.

1 Like

Hi denonom, thanks for your reply.

I experience the opposite of what you have experienced.
The VPN is not working in my case. I am running the latest version of Tumbleweed with hardly no other packages installed. So in this context, I guess, it’s even more strange.
I did not install the GUI-version like you because I want to be familiar with the CLI-version.
That is probably why things are not working. I am not a technical kinda guy I just expected the VPN software to work out of the box (naive as I was) without needing hours of technical work-arounds into all kind of aspects of my OS. I am seriously shell shocked with words like keyrings, network manager, access token, validation token, protocol handshaking, communication headers, user rights, polkit-service, network policy files, yast2 and the list goes on. I am totally overwhelmed with all those errors and warnings pointing to lines of code instead of giving human-understandable messages so I am able to handle the issues. I almost feel like I need a university degree in computer science after switching to Tumbleweed…

But well I am optimistic and believe there is a solution around some day soon. I just started using Tumbleweed and it probably takes some time getting to know how the system works.
By the way, I tried contacting Proton but Proton support is not able to help even though I have a paid subscription. They only support the most used platforms which is not openSUSE, unfortunately.

I did not install GUI either, I only tried CLI.

What desktop environment are you using? How do you log into your system (manual login in GUI on console, autologin in GUI, ssh)? Reboot (to keep logs minimal), try protonvpn-cli that fails and then provide full output of journalctl -b as root and journalctl -b --user as your user.

That is up to developers, you should report it to Proton VPN.

I recently signed up for the Proton package which includes the VPN. I used the protonvpn-cli RPM package from the Protonvpn website, ignored the warning about the missing fonts and the standard integrity warning. It works perfectly!

My DE is Gnome

Hi again arvidjaar!

A lot of things happened during the past days. I was talking to the PGT chatbot and it recommended to set up a new user and try to experiment with protonvpn running on the new user instead of my own private user profile. And actually protonvpn is now working really good with no problems at all. Of course it is a problem that it only works on this new test-user profile.

So right now I am able to use my vpn on the newly created profile, which is like okay as an emergency plan.
I have got the information you asked for (journalctl -b) which is right here:

https://paste.opensuse.org/pastes/ffa7edb8a0d7

The following is the result when using SUDO:

https://paste.opensuse.org/pastes/953d94f4c0af

What you see in opensuse paste is the problems I am still dealing with regarding my personal user profile which I had from day one I installed Tumbleweed.

I use gnome as my desktop environment and I login manually via the standard boot procedure, nothing I have changed regarding that.

I might do it some day. Right now I feel like learning instead of doing more complaining. The learning curve is pretty step and I am trying my best. The day I fully understand what is going on I might return to Proton VPN with some kind of feedback regarding my experiences. I have been contacting Proton VPN many times and if you cannot explain them in technical terms what your problem is about then you get no help at all. You really need to direct their attention exactly to the problem before they get engaged. What I am trying to say is that they do not want to help analyze anything or engage in the problem-solving process when you run Tumbleweed or other distroes they not support officially.

I am not sure if I am having the correct repositories installed, maybe that could be a part of the problem, I do not know about it. Here is the output of zypper lr -d:

https://paste.opensuse.org/pastes/b08103d1b4a5

A recent thread about this subject caught my attention. That is the reason why I posted my setup. If I have to delete some of those repos’ or maybe something is missing then please let me know.