Amnezia VPN is an open-source VPN client, with a key feature that enables you to deploy your own VPN server on your server.
Amnezia VPN is an open-source VPN client designed to provide secure and private internet access while allowing users to deploy their own VPN server on their preferred hosting environment. The software supports a variety of VPN protocols including OpenVPN, WireGuard, and IKEv2, along with obfuscation methods such as Cloak and Shadowsocks for enhanced privacy in restrictive environments.
Key Features:
Self-Hosted Server Deployment: Amnezia VPN simplifies the process of setting up your own VPN server by automatically installing necessary Docker containers on your designated hosting environment.
Multiple VPN Protocols: Supports OpenVPN, WireGuard, IKEv2, and obfuscated protocols like Cloak and Shadowsocks for secure connectivity in various network conditions.
Split Tunneling: Enables users to specify which websites or applications should use the VPN connection while others bypass it, providing flexibility for selective privacy measures.
README
Amnezia VPN
The best client for self-hosted VPN
Amnezia is an open-source VPN client, with a key feature that enables you to deploy your own VPN server on your server.
Features
Very easy to use - enter your ip address, ssh login and password, and Amnezia will automatically install VPN docker containers to your server and connect to VPN.
Cross-Platform Support: Available on Windows, macOS, Linux, Android, and iOS, ensuring broad accessibility across different devices.
AmneziaWG Protocol Configuration: Offers support for configuring the AmneziaWG protocol on Keenetic routers with beta firmware, enhancing compatibility with popular hardware.
Audience & Benefit:
Ideal for individuals and businesses seeking a customizable VPN solution to enhance online privacy and security. Users benefit from the ability to control their own VPN infrastructure, ensuring data sovereignty and reducing reliance on third-party services. The client’s user-friendly interface simplifies setup and management, making it accessible even for those without extensive technical expertise.
Amnezia VPN can be installed via winget, offering a seamless integration into your existing workflow.
We use QT to generate the XCode project. we need QT version 6.6.1. Install QT for macos in here or QT Online Installer. Required modules:
macOS
iOS
Qt 5 Compatibility Module
Qt Shader Tools
Additional Libraries:
Qt Image Formats
Qt Multimedia
Qt Remote Objects
Install cmake is require. We recommend cmake version 3.25. You can install cmake in here
You also need to install go >= v1.16. If you don't have it done already,
download go from the official website or use Homebrew.
Latest version is recommended. Install gomobile
export PATH=$PATH:~/go/bin
go install golang.org/x/mobile/cmd/gomobile@latest
gomobile init
Add a user defined variable to both AmneziaVPN and WireGuardNetworkExtension targets' build settings with
key PATH and value ${PATH}/path/to/bin/folder/with/go/executable, e.g. ${PATH}:/usr/local/go/bin.
if above error still persists on you M1 Mac, then most probably you need to install arch based cmake
arch -arm64 brew install cmake
Build might fail with "source files not found" error the first time you try it, because modern XCode build system compiles
dependencies in parallel, and some dependencies end up being built after the ones that
require them. In this case simply restart the build.
How to build the Android app
tested on Mac OS
The Android app has the following requirements:
JDK 11
Android platform SDK 33
cmake 3.25.0
After you have installed QT, QT Creator and Android Studio installed, you need to configure QT Creator correctly. Click in the top menu bar on QT Creator -> Preferences -> Devices and select the tab Android.
* set path to jdk 11
* set path to Android SDK ($ANDROID_HOME)
In case you get errors regarding missing SDK or 'sdkmanager not running', you cannot fix them by correcting the paths and you have some spare GBs on your disk, you can let QT Creator install all requirements by choosing an empty folder for Android SDK location and click on Set Up SDK. Be aware: This will install a second Android SDK and NDK on your machine!
Double check that the right cmake version is configured: Click on QT Creator -> Preferences and click on the side menu on Kits. Under the center content view's Kits tab you'll find an entry CMake Tool. If the default selected CMake version is lower than 3.25.0, install on your system CMake >= 3.25.0 and choose System CMake at from the drop down list. If this entry is missing, you either have not installed CMake yet or QT Creator hasn't found the path to it. In that case click in the preferences window on the side menu item CMake, then on the tab Toolsin the center content view and finally on the Button Add to set the path to your installed CMake.
Please make sure that you have selected Android Platform SDK 33 for your project: click in the main view's side menu on on Projects, on the left you'll see a section Build & Run showing different Android build targets. You can select any of them, Amnezia VPN's project setup is designed in a way that always all Android targets will be build. Click on the targets submenu item Build and scroll in the center content view to Build Steps. Click on Details at the end of the headline Build Android APK (The Details button might be hidden in case QT Creator Window is not running in full screen!). Here we are: choose android-33 as Android Build platform SDK.
That's it you should be ready to compile the project from QT Creator!
Development flow
After you've hit the build button, QT-Creator copies the whole project to a folder in the repositories parent directory. The folder should look something like build-amnezia-client-Android_Qt__Clang_-.
If you want to develop Amnezia VPNs Android components written in Kotlin, such as components using system APIs, you need to import the generated project in Android Studio with build-amnezia-client-Android_Qt__Clang_-/client/android-build as the projects root directory. While you should be able to compile the generated project from Android Studio, you cannot work directly in the repository's Android project. So whenever you are confident with your work in the generated project, you'll need to copy and paste the affected files to the corresponding path in the repositories Android project so that you can add and commit your changes!
You may face compiling issues in QT Creator after you've worked in Android Studio on the generated project. Just do a ./gradlew clean in the generated project's root directory (/client/android-build/.) and you should be good to continue.