* Updating install_docker.sh script Implementing a Docker service status check. The Docker reinstall step has been removed due to the implementation of Docker service checking. Implementing locale checking and assignment. Implementation of execution of some actions through commands with sudo, to reduce delays caused by differences in the values of the PATH variable for the root user and the user included in the sudo group. Implementation of a verification step for the install containerization app to avoid installing unsupported podman-docker applications. * adding message handling to install controller Adding handling for "Containerization app is not supported" and "Service status not active" messages to the controller. * Error Codes added Error Codes added for ServerContainerizationNotSupported & DockerServiceNotActive * Adding extended descriptions of new errors * fix last line in errorCodes.h * fix last line in errorStrings.cpp * Changing the names of errors * various changes in the script The messages output for processing by the server controller have been changed: "Container runtime is not supported" and "Container runtime service is not running." The redundant check and output of the "Packet manager not found" message, as well as the interruption of script execution, have been eliminated, as this situation is handled by the server controller at an earlier stage (check_server_is_busy.sh) and only there. Added installation of the whish package if it is missing from the OS, for subsequent re-execution of the install_docker.sh and check_server_is_busy.sh scripts. Implemented an alternative method for detecting the package manager if the whish package is initially missing from the OS. The algorithm for setting the $pm variable (package manager) has been changed. * processed phrases have been changed The phrases processed by the server controller have been changed. * Attempting to use "command -v" Switching to using "command -v" instead of "which". * "which" as main, "command" as backup. * "which" as main, "command" as backup for check user * which LOCK_CMD with sudo Run the "which" with sudo to check the $LOCK_CMD variable in case the user's PATH variable has incorrect values if the user is not root and is only a member of the sudo group. * suppressing sudo password prompt * suppressing sudo password prompt * suppressing sudo password prompt install_docker.sh * Changing the phrase for check stdout "sudo:" with "not found" instead of "command not found" * Changing phrases for check stdout check_user_in_sudo.sh * sudo|docker and not found, in one line * check only sudoers
Amnezia VPN
The best client for self-hosted VPN
English | Русский
Amnezia is an open-source VPN client, with a key feature that enables you to deploy your own VPN server on your server.
Website | Alt website link | Documentation | Troubleshooting
Tip
If the Amnezia website is blocked in your region, you can use an Alternative website link.
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.
Links
- https://amnezia.org - Project website | Alternative link (mirror)
- https://docs.amnezia.org - Documentation
- https://www.reddit.com/r/AmneziaVPN - Reddit
- https://t.me/amnezia_vpn_en - Telegram support channel (English)
- https://t.me/amnezia_vpn_ir - Telegram support channel (Farsi)
- https://t.me/amnezia_vpn_mm - Telegram support channel (Myanmar)
- https://t.me/amnezia_vpn - Telegram support channel (Russian)
- https://vpnpay.io/en/amnezia-premium/ - Amnezia Premium
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
CMake- Compiler and underlying build system, depending on the target:
- [Linux] Any of
makeandgcc - [Apple]
XcodeorXcode command line tools - [Windows]
Visual Studio 2022orVS 2022 Build Tools - [Android]
Android SDKandNinja
- [Linux] Any of
Qt 6.10+with the following modules:- Core module for targeting platform (Desktop/Android/iOS)
- Qt 5 Compatibility module
- Qt Remote Objects
Conanpackage manager- On MacOS is enough just to use
homebrewor install it in.venvin project root - Other systems must have it in
PATH
- On MacOS is enough just to use
- (Optional) Installer dependencies:
- [Windows/Linux]
Qt Installer Framework - [Windows]
WIX toolset
- [Windows/Linux]
Building the project using scripts
- Run scripts located in
deploydirectory - 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 folderQT_ROOT_PATH- Qt framework root directoryQIF_ROOT_PATH- Qt Installer Framework root pathANDROID_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 CreatorVisual Studio CodewithQt Extension Pack- and so on
-
To use
Xcode, you have to configure project first by usingcmake. The easiest way to do it is to useQt Creatorfor configuration. Then openAmneziaVPN.xcodeprojfile from the build folder by usingXcode. Note that none of the files changed are saved - the files actually getting changed in build directory. Copy them manually if necessary -
Android studiocould be used in the same way - just configure the project by usingcmakemanually or by usingQt Creator. Open<build-dir>/client/android-buildinAndroid studiothen. 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. UsePreferences->SDKs - Using
Android studio. By default it installs necessarySDKsautomatically during the installation - Manually by using
sdk-manager. Check this page for details
- Using
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.

