From e5978dd601cdbf0667190c102eaef65a8d7d8b0a Mon Sep 17 00:00:00 2001 From: Alexandr Stelnykovych Date: Mon, 12 Feb 2024 23:11:48 +0200 Subject: [PATCH 1/5] [Linux] Build from sources missing instructions https://github.com/ivpn/desktop-app-shadow/issues/170 --- cli/References/Linux/build.sh | 17 +++-- docs/readme-build-manual.md | 135 ++++++++++++++++++++++++++++++++++ readme.md | 108 +++++++++++++-------------- ui/References/Linux/build.sh | 18 +++-- 4 files changed, 210 insertions(+), 68 deletions(-) create mode 100644 docs/readme-build-manual.md diff --git a/cli/References/Linux/build.sh b/cli/References/Linux/build.sh index 79f98ac5..84b01de9 100755 --- a/cli/References/Linux/build.sh +++ b/cli/References/Linux/build.sh @@ -65,16 +65,23 @@ while getopts ":v:" opt; do case $opt in v) VERSION="$OPTARG" ;; -# \?) echo "Invalid option -$OPTARG" >&2 -# ;; esac done if [ -z "$VERSION" ] then - echo "Usage:" - echo " $0 -v " - exit 1 + # Version was not provided by argument. + # Intialize $VERSION by the data from of command: '../../../ui/package.json' + VERSION="$(awk -F: '/"version"/ { gsub(/[" ,\n\r]/, "", $2); print $2 }' ../../../ui/package.json)" + if [ -n "$VERSION" ] + then + echo "[ ] You are going to compile IVPN Daemon & CLI 'v${VERSION}' (commit:${COMMIT})" + read -p "Press enter to continue" yn + else + echo "Usage:" + echo " $0 -v " + exit 1 + fi fi echo '---------------------------' diff --git a/docs/readme-build-manual.md b/docs/readme-build-manual.md new file mode 100644 index 00000000..e447743e --- /dev/null +++ b/docs/readme-build-manual.md @@ -0,0 +1,135 @@ +# Manual build and installation + +This document describes how to manually build and install IVPN binaries on Linux. + +## Requirements + +Please, refer to development dependencies described in the [main readme](../readme.md#requirements_linux). + +## Compilation + +Clone the sources and build everything using the script `cli/References/Linux/build.sh`: + +```bash +git clone https://github.com/ivpn/desktop-app.git +cd desktop-app/cli/References/Linux/ +./build.sh +``` + +As a result, you will have compiled all the required binaries: + +- service binary (`daemon/References/Linux/scripts/_out_bin/ivpn-service`) +- CLI binary (`cli/References/Linux/_out_bin/ivpn`) +- all third-party binaries (located under folders `daemon\References\Linux\_deps\*_inst`) +- ready-to-use DEB and RPM packages (located at `cli/References/Linux/_out_bin`) + +## Manual installation + +Manual installation involves placing compiled binaries into specified locations on the target system. The IVPN service checks for the existence of required files, their access rights, and owner. All the necessary files should be located under `/opt/ivpn`. + +Below is an example of a correct installation. +The file source locations are indicated as comments (e.g. `# path-relative-to-repository-root`)" +***Note: Files' owner and access rights are important!*** + +```bash +/opt/ivpn/etc: +-r-------- 1 root root 2358 Feb 8 16:10 ca.crt # daemon\References\common\etc +-rwx------ 1 root root 268 Feb 8 16:10 client.down # daemon\References\Linux\etc +-rwx------ 1 root root 2664 Feb 8 16:10 client.up # daemon\References\Linux\etc +-r-------- 1 root root 28111 Feb 8 16:10 dnscrypt-proxy-template.toml # daemon\References\common\etc +-rwx------ 1 root root 27168 Feb 8 16:10 firewall.sh # daemon\References\Linux\etc +-rw------- 1 root root 68694 Feb 8 16:10 servers.json # daemon\References\common\etc +-rwx------ 1 root root 33173 Feb 8 16:10 splittun.sh # daemon\References\Linux\etc +-r-------- 1 root root 636 Feb 8 16:10 ta.key # daemon\References\common\etc + +/opt/ivpn/dnscrypt-proxy: +-rwxr-xr-x 1 root root 10828056 Feb 8 16:10 dnscrypt-proxy # daemon\References\Linux\_deps\dnscryptproxy_inst + +/opt/ivpn/kem: +-rwxr-xr-x 1 root root 313568 Feb 8 16:10 kem-helper # daemon\References\Linux\_deps\kem-helper\kem-helper-bin + +/opt/ivpn/obfsproxy: +-rwxr-xr-x 1 root root 5460792 Feb 8 16:10 obfs4proxy # daemon\References\Linux\_deps\obfs4proxy_inst + +/opt/ivpn/v2ray: +-rwxr-xr-x 1 root root 31774552 Feb 8 16:10 v2ray # daemon\References\Linux\_deps\v2ray_inst + +/opt/ivpn/wireguard-tools: +-rwxr-xr-x 1 root root 101312 Feb 8 16:10 wg # daemon\References\Linux\_deps\wireguard-tools_inst +-rwxr-xr-x 1 root root 13460 Feb 8 16:10 wg-quick # daemon\References\Linux\_deps\wireguard-tools_inst +``` + +Place the IVPN binaries in the system's binary folder to access them from the terminal: + + ```bash + /usr/bin/ivpn-service # service: `daemon/References/Linux/scripts/_out_bin/ivpn-service` + /usr/bin/ivpn # CLI binary: `cli/References/Linux/_out_bin/ivpn` + ``` + +The IVPN service must be started under a privileged user. +You can use the command-line parameter `--logging` to force-enable logging for the service. + +*Example:* + +```bash +# Run IVPN service +/usr/bin/ivpn-service --logging +# Run the IVPN CLI (from a separate terminal!) +# The CLI requires the IVPN service to be already started +/usr/bin/ivpn +``` + +You can configure your environment to start the ivpn-service as a daemon. + +#### Example: Register and start as systemd daemon + +Example of a `systemd` configuration file (`/etc/systemd/system/ivpn-service.service`): + +```bash +[Unit] +Description=ivpn-service + +[Service] +Type=simple +User=root +Group=root +ExecStart=/usr/bin/ivpn-service +Restart=always +WorkingDirectory=/ +TimeoutStopSec=infinity + +[Install] +WantedBy=multi-user.target +``` + +Start `systemd` service example: + +```bash +# reload the systemd daemon to recognize your new service (`/etc/systemd/system/ivpn-service.service`) +sudo systemctl daemon-reload +# start service +sudo systemctl start ivpn-service +# enable service to start automatically at boot +sudo systemctl enable ivpn-service +``` + + +## Graphical User Interface + +Compilation: + +```bash +cd desktop-app/ui/References/Linux +./build.sh +``` + +Compiled files location: + +- compiled binaries: `ui/dist/bin` +- ready-to-use DEB/RPM packages: `ui/References/Linux/_out_bin` + +## Useful links + +- [ArchLinux User Repository installation files (base package)](https://aur.archlinux.org/cgit/aur.git/tree/?h=ivpn) +- [ArchLinux User Repository installation files (UI package)](https://aur.archlinux.org/cgit/aur.git/tree/?h=ivpn-ui) +- [Configuring IVPN daemon on OpenRC init systems](https://github.com/ivpn/desktop-app/issues/1#issuecomment-822919358) diff --git a/readme.md b/readme.md index 804aad34..ddf6ac30 100644 --- a/readme.md +++ b/readme.md @@ -1,8 +1,9 @@ +# IVPN for Desktop (Windows/macOS/Linux) + [![CodeQL](https://github.com/ivpn/desktop-app/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/ivpn/desktop-app/actions/workflows/codeql-analysis.yml) [![Security Scan (gosec)](https://github.com/ivpn/desktop-app/actions/workflows/gosec.yml/badge.svg)](https://github.com/ivpn/desktop-app/actions/workflows/gosec.yml) [![CI](https://github.com/ivpn/desktop-app/actions/workflows/ci.yml/badge.svg)](https://github.com/ivpn/desktop-app/actions/workflows/ci.yml) [![ivpn](https://snapcraft.io/ivpn/badge.svg)](https://snapcraft.io/ivpn) -# IVPN for Desktop (Windows/macOS/Linux) **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](https://www.ivpn.net). @@ -20,9 +21,8 @@ IVPN Client app is distributed on the official site [www.ivpn.net](https://www.i * [Windows](#compilation_windows) * [macOS](#compilation_macos) * [Linux](#compilation_linux) - * [Linux Daemon](#compilation_linux_daemon) - * [Manual installation IVPN daemon on Linux](#compilation_linux_daemon_manual_install) - * [Linux UI](#compilation_linux_ui) + * [Linux - base package (CLI)](#compilation_linux_daemon) + * [Linux - Graphical User Interface](#compilation_linux_ui) * [Versioning](#versioning) * [Contributing](#contributing) * [Security Policy](#security) @@ -31,130 +31,119 @@ IVPN Client app is distributed on the official site [www.ivpn.net](https://www.i * [Acknowledgements](#acknowledgements) + ## About this Repo This is the official Git repo of the [IVPN for Desktop](https://github.com/ivpn/desktop-app) app. The project is divided into three parts: -- **Daemon** is a core module of IVPN software built mostly using the Go language. It runs with privileged rights as a system service/daemon. -- **UI** is a Graphical User Interface built using Electron. -- **CLI** is a Command Line Interface. + +* **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 [npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); [nsis3](https://nsis.sourceforge.io/Download); 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](https://jmeubank.github.io/tdm-gcc/download/); [Go 1.21+](https://golang.org/); Git + #### macOS -[npm](https://www.npmjs.com/get-npm); [Node.js (LTS version)](https://nodejs.org/); Xcode Command Line Tools; [Go 1.21+](https://golang.org/); Git +[npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); Xcode Command Line Tools; [Go 1.21+](https://golang.org/); Git To compile the OpenVPN/OpenSSL binaries locally, additional packages are required: `brew install autoconf automake libtool` To compile [liboqs](https://github.com/open-quantum-safe/liboqs), additional packages are required: -``` + +```bash brew install cmake ninja openssl@1.1 wget doxygen graphviz astyle valgrind pip3 install pytest pytest-xdist pyyaml ``` + #### Linux -[npm](https://www.npmjs.com/get-npm); [Node.js (LTS version)](https://nodejs.org/); packages: [FPM](https://fpm.readthedocs.io/en/latest/installation.html), curl, rpm, libiw-dev; [Go 1.21+](https://golang.org/); gcc; make; Git + +[npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); packages: [FPM](https://fpm.readthedocs.io/en/latest/installation.html), curl, rpm, libiw-dev; [Go 1.21+](https://golang.org/); gcc; make; Git To compile [liboqs](https://github.com/open-quantum-safe/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 Windows installer of IVPN Client software (daemon+CLI+UI): + +Instructions to build installer of IVPN Client *(daemon + CLI + UI)*: Use Developer Command Prompt for Visual Studio (required for building native sub-projects). -``` +```bash git clone https://github.com/ivpn/desktop-app.git cd desktop-app/ui/References/Windows build.bat ``` - Compiled binaries can be found at: `desktop-app/ui/References/Windows/bin` + Compiled binaries can be found at: `ui/References/Windows/bin` + #### macOS -Instructions to build macOS DMG package of IVPN Client software (daemon+CLI+UI): -``` +Instructions to build DMG package of IVPN Client *(daemon + CLI + UI)*: + +```bash git clone https://github.com/ivpn/desktop-app.git -cd ivpn/desktop-app/ui/References/macOS +cd desktop-app/ui/References/macOS ./build.sh -v -c ``` - Compiled binary can be found at: `desktop-app/ui/References/macOS/_compiled` - *([some info](https://github.com/ivpn/desktop-app/issues/161) about Apple Developer ID)* +Compiled binary can be found at: `ui/References/macOS/_compiled` +*([some info](https://github.com/ivpn/desktop-app/issues/161) about Apple Developer ID)* + #### Linux -##### Linux Daemon -Instructions to build Linux DEB and RPM packages of IVPN software ('base' package: daemon + CLI): +##### Linux - base package (CLI) -``` +```bash git clone https://github.com/ivpn/desktop-app.git cd desktop-app/cli/References/Linux/ -./build.sh -v +./build.sh ``` - Compiled packages can be found at `desktop-app/cli/References/Linux/_out_bin` - - -###### Manual installation IVPN daemon on Linux -Sometimes it is required to have the possibility to install IVPN binaries manually. -It's easy to do it by following the rules described below. - -The ivpn-service is checking the existing of some required files (all files can be found in the repository) -``` -VirtualBox:/opt/ivpn/etc$ ls -l -total 52 --r-------- 1 root root 2358 May 25 16:50 ca.crt --rwx------ 1 root root 113 May 25 16:50 client.down --rwx------ 1 root root 1927 May 25 16:50 client.up --rwx------ 1 root root 5224 May 25 16:50 firewall.sh --rw------- 1 root root 21524 May 26 20:52 servers.json --r-------- 1 root root 636 May 25 16:50 ta.key -``` -1. Build the current project to get 'ivpn service' and 'ivpn cli' binaries. -2. Create folder `/opt/ivpn/etc` -3. Copy all required files (see above). - **Note!** Files owner and access rights are important. -4. Now you can start compiled service binary from the command line (just to check if it works). - **Note!** The service must be started under a privileged user. - **Info** You can use the command line parameter `--logging` to enable logging for service. - 4.1. Simply run compiled ivpn-cli binary to check if it successfully connects to the service (use separate terminal). -5. If everything works - you can configure your environment to start ivpn-service automatically with the system boot (we are using systemd for such purposes) +Compiled DEB/RPM packages can be found at `cli/References/Linux/_out_bin` +*Note: You can refer to [manual installation guide for Linux](docs/readme-build-manual.md).* -##### Linux UI -Instructions to build Linux DEB and RPM packages of IVPN software 'UI' package: -``` +##### Linux - Graphical User Interface + +```bash git clone https://github.com/ivpn/desktop-app.git cd desktop-app/ui/References/Linux -./build.sh -v +./build.sh ``` - Compiled packages can be found at `desktop-app-ui2/References/Linux/_out_bin` - - **Note!** - It is required to have installed IVPN Daemon before running IVPN UI. +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.* +*Note: You can refer to [manual installation guide for Linux](docs/readme-build-manual.md).* + ## Versioning Project is using [Semantic Versioning (SemVer)](https://semver.org) for creating release versions. @@ -168,26 +157,31 @@ SemVer is a 3-component system in the format of `x.y.z` where: So we have: `Major.Minor.Patch` + ## Contributing If you are interested in contributing to IVPN for Desktop project, please read our [Contributing Guidelines](/.github/CONTRIBUTING.md). + ## Security Policy If you want to report a security problem, please read our [Security Policy](/.github/SECURITY.md). + ## License This project is licensed under the GPLv3 - see the [License](/LICENSE.md) file for details. + ## Authors See the [Authors](/AUTHORS) file for the list of contributors who participated in this project. + ## Acknowledgements See the [Acknowledgements](/ACKNOWLEDGEMENTS.md) file for the list of third party libraries used in this project. diff --git a/ui/References/Linux/build.sh b/ui/References/Linux/build.sh index fc973221..b734c88e 100755 --- a/ui/References/Linux/build.sh +++ b/ui/References/Linux/build.sh @@ -66,17 +66,23 @@ while getopts ":v:" opt; do case $opt in v) VERSION="$OPTARG" ;; -# \?) echo "Invalid option -$OPTARG" >&2 -# ;; esac done if [ -z "$VERSION" ] then - echo "Usage:" - echo " $0 -v " - echo "" - exit 1 + # Version was not provided by argument. + # Intialize $VERSION by the data from of command: '../../package.json' + VERSION="$(awk -F: '/"version"/ { gsub(/[" ,\n\r]/, "", $2); print $2 }' ../../package.json)" + if [ -n "$VERSION" ] + then + echo "[ ] You are going to compile IVPN UI v${VERSION}" + read -p "Press enter to continue" yn + else + echo "Usage:" + echo " $0 -v " + exit 1 + fi fi echo "Architecture: $ARCH" From 03653dd76f77be0f4b458bf79cc3de0d687dd508 Mon Sep 17 00:00:00 2001 From: Alexandr Stelnykovych Date: Mon, 12 Feb 2024 23:29:35 +0200 Subject: [PATCH 2/5] [Linux] Build from sources missing instructions https://github.com/ivpn/desktop-app-shadow/issues/170 --- readme.md | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/readme.md b/readme.md index ddf6ac30..79ae9a61 100644 --- a/readme.md +++ b/readme.md @@ -56,13 +56,13 @@ These instructions enable you to get the project up and running on your local ma #### Windows -[npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); [nsis3](https://nsis.sourceforge.io/Download); 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](https://jmeubank.github.io/tdm-gcc/download/); [Go 1.21+](https://golang.org/); Git +[Go 1.21+](https://golang.org/); Git; [npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); [nsis3](https://nsis.sourceforge.io/Download); 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](https://jmeubank.github.io/tdm-gcc/download/)) #### macOS -[npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); Xcode Command Line Tools; [Go 1.21+](https://golang.org/); Git +[Go 1.21+](https://golang.org/); Git; [npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); Xcode Command Line Tools To compile the OpenVPN/OpenSSL binaries locally, additional packages are required: `brew install autoconf automake libtool` To compile [liboqs](https://github.com/open-quantum-safe/liboqs), additional packages are required: @@ -75,8 +75,9 @@ pip3 install pytest pytest-xdist pyyaml #### Linux -[npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); packages: [FPM](https://fpm.readthedocs.io/en/latest/installation.html), curl, rpm, libiw-dev; [Go 1.21+](https://golang.org/); gcc; make; Git +[Go 1.21+](https://golang.org/); Git; [npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); gcc; make; [FPM](https://fpm.readthedocs.io/en/latest/installation.html); curl; rpm; libiw-dev To compile [liboqs](https://github.com/open-quantum-safe/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 @@ -115,32 +116,29 @@ Compiled binary can be found at: `ui/References/macOS/_compiled` #### Linux - +```bash +# get sources +git clone https://github.com/ivpn/desktop-app.git +cd desktop-app +``` -##### Linux - base package (CLI) +Base package *(daemon + CLI)*: ```bash -git clone https://github.com/ivpn/desktop-app.git -cd desktop-app/cli/References/Linux/ -./build.sh +./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](docs/readme-build-manual.md).* - - -##### Linux - Graphical User Interface +Graphical User Interface *(UI)*: ```bash -git clone https://github.com/ivpn/desktop-app.git -cd desktop-app/ui/References/Linux -./build.sh +./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.* -*Note: You can refer to [manual installation guide for Linux](docs/readme-build-manual.md).* From eca893144e65b45a259b7e534748825af46bd825 Mon Sep 17 00:00:00 2001 From: Alexandr Stelnykovych Date: Mon, 12 Feb 2024 23:34:27 +0200 Subject: [PATCH 3/5] [Linux] Build from sources missing instructions https://github.com/ivpn/desktop-app-shadow/issues/170 --- readme.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/readme.md b/readme.md index 79ae9a61..c68c9b0e 100644 --- a/readme.md +++ b/readme.md @@ -21,8 +21,6 @@ IVPN Client app is distributed on the official site [www.ivpn.net](https://www.i * [Windows](#compilation_windows) * [macOS](#compilation_macos) * [Linux](#compilation_linux) - * [Linux - base package (CLI)](#compilation_linux_daemon) - * [Linux - Graphical User Interface](#compilation_linux_ui) * [Versioning](#versioning) * [Contributing](#contributing) * [Security Policy](#security) @@ -56,14 +54,17 @@ These instructions enable you to get the project up and running on your local ma #### Windows -[Go 1.21+](https://golang.org/); Git; [npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); [nsis3](https://nsis.sourceforge.io/Download); 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](https://jmeubank.github.io/tdm-gcc/download/)) +[Go 1.21+](https://golang.org/); Git; [npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); [nsis3](https://nsis.sourceforge.io/Download); 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](https://jmeubank.github.io/tdm-gcc/download/)). #### macOS -[Go 1.21+](https://golang.org/); Git; [npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); Xcode Command Line Tools -To compile the OpenVPN/OpenSSL binaries locally, additional packages are required: `brew install autoconf automake libtool` +[Go 1.21+](https://golang.org/); Git; [npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); Xcode Command Line Tools. +To compile the OpenVPN/OpenSSL binaries locally, additional packages are required: +```bash +brew install autoconf automake libtool +``` To compile [liboqs](https://github.com/open-quantum-safe/liboqs), additional packages are required: ```bash @@ -75,8 +76,10 @@ pip3 install pytest pytest-xdist pyyaml #### Linux -[Go 1.21+](https://golang.org/); Git; [npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); gcc; make; [FPM](https://fpm.readthedocs.io/en/latest/installation.html); curl; rpm; libiw-dev -To compile [liboqs](https://github.com/open-quantum-safe/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` +[Go 1.21+](https://golang.org/); Git; [npm](https://www.npmjs.com/get-npm); [Node.js (18)](https://nodejs.org/); gcc; make; [FPM](https://fpm.readthedocs.io/en/latest/installation.html); curl; rpm; libiw-dev. + +To compile [liboqs](https://github.com/open-quantum-safe/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` From a40a75ad49c8d37ac1dbfdb8c9c97f116102cf38 Mon Sep 17 00:00:00 2001 From: Alexandr Stelnykovych Date: Mon, 12 Feb 2024 23:35:54 +0200 Subject: [PATCH 4/5] Update readme-build-manual.md --- docs/readme-build-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/readme-build-manual.md b/docs/readme-build-manual.md index e447743e..cc0082b8 100644 --- a/docs/readme-build-manual.md +++ b/docs/readme-build-manual.md @@ -28,7 +28,7 @@ As a result, you will have compiled all the required binaries: Manual installation involves placing compiled binaries into specified locations on the target system. The IVPN service checks for the existence of required files, their access rights, and owner. All the necessary files should be located under `/opt/ivpn`. Below is an example of a correct installation. -The file source locations are indicated as comments (e.g. `# path-relative-to-repository-root`)" +The file source locations are indicated as comments (e.g. `# path-relative-to-repository-root`) ***Note: Files' owner and access rights are important!*** ```bash From 49144954cad4420a4651628eb6add9b2e72bc59b Mon Sep 17 00:00:00 2001 From: Alexandr Stelnykovych Date: Mon, 12 Feb 2024 23:38:58 +0200 Subject: [PATCH 5/5] Update readme-build-manual.md --- docs/readme-build-manual.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/readme-build-manual.md b/docs/readme-build-manual.md index cc0082b8..2c3f0386 100644 --- a/docs/readme-build-manual.md +++ b/docs/readme-build-manual.md @@ -33,30 +33,30 @@ The file source locations are indicated as comments (e.g. `# path-relative-to-re ```bash /opt/ivpn/etc: --r-------- 1 root root 2358 Feb 8 16:10 ca.crt # daemon\References\common\etc --rwx------ 1 root root 268 Feb 8 16:10 client.down # daemon\References\Linux\etc --rwx------ 1 root root 2664 Feb 8 16:10 client.up # daemon\References\Linux\etc --r-------- 1 root root 28111 Feb 8 16:10 dnscrypt-proxy-template.toml # daemon\References\common\etc --rwx------ 1 root root 27168 Feb 8 16:10 firewall.sh # daemon\References\Linux\etc --rw------- 1 root root 68694 Feb 8 16:10 servers.json # daemon\References\common\etc --rwx------ 1 root root 33173 Feb 8 16:10 splittun.sh # daemon\References\Linux\etc --r-------- 1 root root 636 Feb 8 16:10 ta.key # daemon\References\common\etc +-r-------- 1 root root 2358 Feb 8 16:10 ca.crt # daemon\References\common\etc\ca.crt +-rwx------ 1 root root 268 Feb 8 16:10 client.down # daemon\References\Linux\etc\client.down +-rwx------ 1 root root 2664 Feb 8 16:10 client.up # daemon\References\Linux\etc\client.up +-r-------- 1 root root 28111 Feb 8 16:10 dnscrypt-proxy-template.toml # daemon\References\common\etc\dnscrypt-proxy-template.toml +-rwx------ 1 root root 27168 Feb 8 16:10 firewall.sh # daemon\References\Linux\etc\firewall.sh +-rw------- 1 root root 68694 Feb 8 16:10 servers.json # daemon\References\common\etc\servers.json +-rwx------ 1 root root 33173 Feb 8 16:10 splittun.sh # daemon\References\Linux\etc\splittun.sh +-r-------- 1 root root 636 Feb 8 16:10 ta.key # daemon\References\common\etc\ta.key /opt/ivpn/dnscrypt-proxy: --rwxr-xr-x 1 root root 10828056 Feb 8 16:10 dnscrypt-proxy # daemon\References\Linux\_deps\dnscryptproxy_inst +-rwxr-xr-x 1 root root 10828056 Feb 8 16:10 dnscrypt-proxy # daemon\References\Linux\_deps\dnscryptproxy_inst\dnscrypt-proxy /opt/ivpn/kem: --rwxr-xr-x 1 root root 313568 Feb 8 16:10 kem-helper # daemon\References\Linux\_deps\kem-helper\kem-helper-bin +-rwxr-xr-x 1 root root 313568 Feb 8 16:10 kem-helper # daemon\References\Linux\_deps\kem-helper\kem-helper-bin\kem-helper /opt/ivpn/obfsproxy: --rwxr-xr-x 1 root root 5460792 Feb 8 16:10 obfs4proxy # daemon\References\Linux\_deps\obfs4proxy_inst +-rwxr-xr-x 1 root root 5460792 Feb 8 16:10 obfs4proxy # daemon\References\Linux\_deps\obfs4proxy_inst\obfs4proxy /opt/ivpn/v2ray: --rwxr-xr-x 1 root root 31774552 Feb 8 16:10 v2ray # daemon\References\Linux\_deps\v2ray_inst +-rwxr-xr-x 1 root root 31774552 Feb 8 16:10 v2ray # daemon\References\Linux\_deps\v2ray_inst\v2ray /opt/ivpn/wireguard-tools: --rwxr-xr-x 1 root root 101312 Feb 8 16:10 wg # daemon\References\Linux\_deps\wireguard-tools_inst --rwxr-xr-x 1 root root 13460 Feb 8 16:10 wg-quick # daemon\References\Linux\_deps\wireguard-tools_inst +-rwxr-xr-x 1 root root 101312 Feb 8 16:10 wg # daemon\References\Linux\_deps\wireguard-tools_inst\wg +-rwxr-xr-x 1 root root 13460 Feb 8 16:10 wg-quick # daemon\References\Linux\_deps\wireguard-tools_inst\wg-quick ``` Place the IVPN binaries in the system's binary folder to access them from the terminal: