README.md

February 12, 2025 · View on GitHub

ProtonVPN-CLI

Logo

Downloads GitHub Downloads per Week
Twitter Follow Subreddit subscribers

A Linux CLI for ProtonVPN. Written in Python.

ProtonVPN-CLI is a full rewrite of the bash protonvpn-cli in Python, which adds more features and functionality with the purpose of improving readability, speed and reliability.

Deprecation notice

Proton VPN is upgrading its OpenVPN infrastructure. This means the legacy OpenVPN configuration will stop working on 31 March 2025. After this date, you’ll need to switch to the official Proton VPN for Linux app, or reconfigure OpenVPN or WireGuard manually.

Installation & Updating

For more detailed information on installing, updating and uninstalling, please view the extensive usage guide.

Installing from distribution repositories

For the following Linux distribution(s), install the official protonvpn-cli package:

Fedora

sudo dnf install -y protonvpn-cli

CentOS & RHEL

protonvpn-cli is available for CentOS/RHEL 7.x and 8.x via the EPEL repositories.

For CentOS/RHEL 7.x:

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install protonvpn-cli

For CentOS/RHEL 8.x:

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install -y protonvpn-cli

Installing from PyPI

Installing Dependencies

Dependencies:

  • openvpn
  • dialog (optional, needed for interactive selection)
  • pip for python3 (pip3)
  • python3.5+
  • setuptools for python3 (python3-setuptools)

Depending on your distribution, run the appropriate following command to install the necessary dependencies

DistroCommand
Fedora/CentOS/RHELsudo dnf install -y openvpn dialog python3-pip python3-setuptools
Ubuntu/Linux Mint/Debian and derivativessudo apt install -y openvpn dialog python3-pip python3-setuptools
OpenSUSE/SLESsudo zypper in -y openvpn dialog python3-pip python3-setuptools
Arch Linux/Manjarosudo pacman -S openvpn dialog python-pip python-setuptools

Installing ProtonVPN-CLI

Installation happens via Python's package manager PIP.

Note: Make sure to run pip with sudo, so it installs globally and recognizes the command with sudo

sudo pip3 install protonvpn-cli

Updating ProtonVPN-CLI

sudo pip3 install protonvpn-cli --upgrade

Manual Installation from source

Disclaimer: If you are unsure about what you're doing, please follow the normal installation guide.

It is recommended to do the manual installation in a virtual environment. Especially if it serves the purpose of developing.

  1. Clone this repository

    git clone https://github.com/ProtonVPN/linux-cli-community

  2. Step into the directory

    cd linux-cli

  3. Install

    pip3 install -e .

For updating, you just need to pull the latest version of the repository with git.

How to use

For more detailed information, see the extensive usage guide.

CommandDescription
protonvpn initInitialize ProtonVPN profile.
protonvpn connect, cSelect a ProtonVPN server and connect to it.
protonvpn c [servername]Connect to a specified server.
protonvpn c -rConnect to a random server.
protonvpn c -fConnect to the fastest server.
protonvpn c --p2pConnect to the fastest P2P server.
protonvpn c --cc [countrycode]Connect to the fastest server in a specified country.
protonvpn c --scConnect to the fastest Secure Core server.
protonvpn reconnect, rReconnect or connect to the last server used.
protonvpn disconnect, dDisconnect the current session.
protonvpn status, sPrint connection status.
protonvpn configureChange CLI configuration.
protonvpn refreshRefresh OpenVPN configuration and server data.
protonvpn examplesPrint example commands.
protonvpn --versionDisplay version.
protonvpn --helpShow help message.

All connect options can be used with the -p flag to explicitly specify which transmission protocol is used for that connection (either udp or tcp).

Contributing

If you want to contribute to this project, please read the contribution guide.