Skip to content

ivpn/desktop-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

IVPN for Desktop (Windows/macOS/Linux)

CodeQL Security Scan (gosec) CI ivpn

IVPN for Desktop is the official IVPN app for desktop platforms. Some of the features include: multiple protocols (OpenVPN, WireGuard), Kill-switch, Multi-Hop, Trusted Networks, AntiTracker, Custom DNS, Dark mode, and more.
IVPN Client app is distributed on the official site www.ivpn.net.

IVPN application image IVPN application image

About this Repo

This is the official Git repo of the IVPN for Desktop app.

The project is divided into three parts:

  • daemon: Core module of the IVPN software built mostly using the Go language. It runs with privileged rights as a system service/daemon.
  • UI: Graphical User Interface built using Electron.
  • CLI: Command Line Interface.

Installation

These instructions enable you to get the project up and running on your local machine for development and testing purposes.

Requirements

Windows

Go 1.21+; Git; npm; Node.js (18); nsis3; Build Tools for Visual Studio 2019 ('Windows 10 SDK 10.0.19041.0', 'Windows 11 SDK 10.0.22000.0', 'MSVC v142 C++ x64 build tools', 'C++ ATL for latest v142 build tools'); gcc compiler (e.g. TDM GCC).

macOS

Go 1.21+; Git; npm; Node.js (18); Xcode Command Line Tools.
To compile the OpenVPN/OpenSSL binaries locally, additional packages are required:

brew install autoconf automake libtool

To compile liboqs, additional packages are required:

brew install cmake ninja [email protected] wget doxygen graphviz astyle valgrind
pip3 install pytest pytest-xdist pyyaml

Linux

Go 1.21+; Git; npm; Node.js (18); gcc; make; FPM; curl; rpm; libiw-dev.

To compile liboqs, additional packages are required:
sudo apt install astyle cmake gcc ninja-build libssl-dev python3-pytest python3-pytest-xdist unzip xsltproc doxygen graphviz python3-yaml valgrind

Compilation

Windows

Instructions to build installer of IVPN Client (daemon + CLI + UI):
Use Developer Command Prompt for Visual Studio (required for building native sub-projects).

git clone https://github.com/ivpn/desktop-app.git
cd desktop-app/ui/References/Windows
build.bat

Compiled binaries can be found at: ui/References/Windows/bin

macOS

Instructions to build DMG package of IVPN Client (daemon + CLI + UI):

git clone https://github.com/ivpn/desktop-app.git
cd desktop-app/ui/References/macOS
./build.sh -v <VERSION_X.X.X> -c <APPLE_DevID_CERTIFICATE>

Compiled binary can be found at: ui/References/macOS/_compiled
(some info about Apple Developer ID)

Linux

# get sources
git clone https://github.com/ivpn/desktop-app.git
cd desktop-app

Base package (daemon + CLI):

./cli/References/Linux/build.sh

Compiled DEB/RPM packages can be found at cli/References/Linux/_out_bin
Note: You can refer to manual installation guide for Linux.

Graphical User Interface (UI):

./ui/References/Linux/build.sh

Compiled DEB/RPM packages can be found at ui/References/Linux/_out_bin
Note: It is required to have installed IVPN Daemon before running IVPN UI.

Versioning

Project is using Semantic Versioning (SemVer) for creating release versions.

SemVer is a 3-component system in the format of x.y.z where:

x stands for a major version
y stands for a minor version
z stands for a patch

So we have: Major.Minor.Patch

Contributing

If you are interested in contributing to IVPN for Desktop project, please read our Contributing Guidelines.

Security Policy

If you want to report a security problem, please read our Security Policy.

License

This project is licensed under the GPLv3 - see the License file for details.

Authors

See the Authors file for the list of contributors who participated in this project.

Acknowledgements

See the Acknowledgements file for the list of third party libraries used in this project.