Yaroslav Gurov 009ca981d5 feat: initial conan support and build process refactoring (#2260)
* feat: initial conan support

* feat: add awg-go and awg-apple recipes

* feat: macos full feature conan build, except ss and cloak

* feat: conan android initial support

* fix: android libssh fixes

* conan: android additional recipes and fixes

* feat: openvpn add support android

* fix: awg android connection establish

* conan: apple full-featured support

* chore: bump min macos version

* chore: get rid of manual deploy recursive copying

* conan: beautify makefile-based recipes

* conan: add geosite.dat and geoip.dat

* conan: use lib linking instead of QT_EXTRA_LIBS for OVPN

* conan: address lack of SONAME of libck-ovpn-plugin.so correctly

* conan: windows initial support

* conan: make awg-windows and wintun be interpret as exes

* conan: fix version for v2ray-rules-dat

* feat: conan and platform bootstrap rework in cmake

* feat: 16kb support for Android

* chore(conan): recipes cleanup

* feat: support of drivers for windows

* feat: support full-featured cmake install

* chore: exclude qtkeychain from the target build

* fix: install for apple systems

* fix: provide flags for cloak plugin for openvpn-pt-android

* chore: bump android deps for 16kb support

* feat(conan): patch cloak to properly provide env for golang

* chore: remove redundant hint from conan find

* feat: linux <-> conan features

* feat: linux initial packaging support

* feat: linux cpack support

* feat: cpack windows full-featured build

* feat: productbuild cpack support

* feat: rework CI/CD for macos

* feat: rework CI/CD for Linux

* fix: libncap automake args

* fix: CI/CD correct QT paths

* fix: windows rework CI/CD

* fix: windows artifact upload

* chore: remove MacOS-old from build targets

* feat: add conan to all mobile and NE builds

* feat: support default amnezia conan remote

* fix: use Release instead of release on Android

* feat: get rid of 3rd-prebuilt

* feat: conan CI/CD upload

* fix: CI/CD change windows toolset versions

* fix: remove MSVC version from CI/CD

* feat: conan CI/CD add Release and Debug build types

* feat: add multiple xcode versions for conan CI/CD

* fix: correct conan CI/CD clang versions

* feat: separate prebuilt baking, and add some for NE

* feat: rework keychain on ios/macos even more

* fix: add desktop Qt for iOS

* feat: add QT_HOST_PATH to build.sh

* fix: add deploy definition to cmake

* fix: android adjustments for toolchains and CI/CD

* fix: add needs for Android CI/CD

* fix: Android CI/CD use android-28

* fix: modernize translations, and CI/CD fixes

* fix: gradle min sdk compilation error

* fix: CI/CD add installers to all jobs

* fix: parse android platform more precisely

* fix: adjust aab path in CI/CD

* feat: CI/CD do not execute artifact build if there is nothing changed

* fix: CI/CD use common jobs even if previous were failed

* fix: Apple CI/CD use set-key-partition-list for keychains

* fix: Apple CI/CD do not specify any keychain (use default)

* fix: build aab as a different step in build script

* chore: beautify build.sh script

* feat: CI/CD build separate APKs per ABI

* fix: Android CI/CD upload artifact in separate steps

* chore: recipes cleanup

* feat: add hints for conan on MacOS

* fix: add main.cpp and tests back to CMakeLists.txt

* chore: xrayProtocol codestyle changes

* fix: openssl set proper X509 request version

* fix: make openvpn protocol rely only on client while configuring

* chore: get rid of old scripts

* chore: readme update describing build process more precisely

* feat: windows build script add multiprocessing capabilities

* chore: bump Qt version in README

* feat: add generator option and use Ninja by default in CI/CD for linux/macos

---------

Co-authored-by: NickVs2015 <nv@amnezia.org>
2026-05-04 22:59:24 +08:00
2024-12-07 15:53:40 +02:00
2023-05-20 15:55:19 +01:00
2023-05-20 15:55:19 +01:00
2020-11-22 15:44:45 +03:00

Amnezia VPN

The best client for self-hosted VPN

Build Status Gitpod ready-to-code

English | Русский

Amnezia is an open-source VPN client, with a key feature that enables you to deploy your own VPN server on your server.

Image

Website | Alt website link | Documentation | Troubleshooting

Tip

If the Amnezia website is blocked in your region, you can use an Alternative website link.

All releases


Features

  • Very easy to use - enter your IP address, SSH login, password and Amnezia will automatically install VPN docker containers to your server and connect to the VPN.
  • Classic VPN-protocols: OpenVPN, WireGuard and IKEv2 protocols.
  • Protocols with traffic Masking (Obfuscation): OpenVPN over Cloak plugin, Shadowsocks (OpenVPN over Shadowsocks), AmneziaWG and XRay.
  • Split tunneling support - add any sites to the client to enable VPN only for them or add Apps (only for Android and Desktop).
  • Windows, MacOS, Linux, Android, iOS releases.
  • Support for AmneziaWG protocol configuration on Keenetic beta firmware.

Tech

AmneziaVPN uses several open-source projects to work:

Help us with translations

Download the most actual translation files.

Go to "Actions" tab, click on the first line. Then scroll down to the "Artifacts" section and download "AmneziaVPN_translations".

Unzip this file. Each *.ts file contains strings for one corresponding language.

Translate or correct some strings in one or multiple *.ts files and commit them back to this repository into the client/translations folder. You can do it via a web-interface or any other method you're familiar with.

Checking out the source code

Make sure to pull all submodules after checking out the repo.

git submodule update --init --recursive

Hacking guide

Want to contribute? Welcome!

Build requirements

Building the project using scripts

  • Run scripts located in deploy directory
  • Basically, if dependencies are located in default installation paths, the scripts will find them automatically.
  • If they differ, specify them using the following variables:
    • QT_INSTALL_DIR - Qt root installation folder
    • QT_ROOT_PATH - Qt framework root directory
    • QIF_ROOT_PATH - Qt Installer Framework root path
    • ANDROID_HOME - Path to Android SDK root folder
    • and others. Check scripts for more

Unix-like:

# Build executables for the host platform
deploy/build.sh

# Or just
deploy/build.sh

# Build executables and installers for the host platform
deploy/build.sh --installer all

# Build Android APK and AAB
deploy/build.sh -t android --aab

# Call for help
deploy/build.sh -h

Windows:

:: Build executables for Windows
deploy/build.bat

:: Build executables with IFW installer for Windows
deploy/build.bat --installer ifw

:: Build executables with IFW and WIX installer for Windows
deploy/build.bat --installer ifw --installer wix

:: Or just
deploy/build.bat --installer all

Developing the project in IDEs

  • Basically, you can use any IDE that handles CMake and Qt kits properly to run configure and build steps, and to navigate through the code nicely. For example:

    • Qt Creator
    • Visual Studio Code with Qt Extension Pack
    • and so on
  • To use Xcode, you have to configure project first by using cmake. The easiest way to do it is to use Qt Creator for configuration. Then open AmneziaVPN.xcodeproj file from the build folder by using Xcode. Note that none of the files changed are saved - the files actually getting changed in build directory. Copy them manually if necessary

  • Android studio could be used in the same way - just configure the project by using cmake manually or by using Qt Creator. Open <build-dir>/client/android-build in Android studio then. Do not forget to copy the changes - everything you do is saved under the build directory actually.

Installing Android SDK

  • Android SDK could be installed using the following methods:
    • Using Qt Creator. Use Preferences->SDKs
    • Using Android studio. By default it installs necessary SDKs automatically during the installation
    • Manually by using sdk-manager. Check this page for details

License

This project is licensed under the GNU General Public License v3.0 (see LICENSE) and also includes third-party components distributed under their own terms (see THIRD_PARTY_LICENSES.md).

Donate

Patreon: https://www.patreon.com/amneziavpn

Bitcoin: bc1qmhtgcf9637rl3kqyy22r2a8wa8laka4t9rx2mf
USDT BEP20: 0x6abD576765a826f87D1D95183438f9408C901bE4
USDT TRC20: TELAitazF1MZGmiNjTcnxDjEiH5oe7LC9d
XMR: 48spms39jt1L2L5vyw2RQW6CXD6odUd4jFu19GZcDyKKQV9U88wsJVjSbL4CfRys37jVMdoaWVPSvezCQPhHXUW5UKLqUp3
TON: UQDpU1CyKRmg7L8mNScKk9FRc2SlESuI7N-Hby4nX-CcVmns

Acknowledgments

This project is tested with BrowserStack. We express our gratitude to BrowserStack for supporting our project.

Description
Languages
C++ 64.2%
QML 14%
Kotlin 5.1%
Java 3.4%
CMake 3%
Other 10.3%