explaingit

amnezia-vpn/amnezia-client

11,836C++Audience · ops devopsComplexity · 3/5LicenseSetup · moderate

TLDR

An open-source VPN client that sets up and connects to your own self-hosted VPN server automatically, you provide your server's SSH credentials and it installs and configures everything for you.

Mindmap

mindmap
  root((Amnezia VPN))
    What it does
      Self-hosted VPN setup
      Auto server install
      Traffic obfuscation
    Protocols
      OpenVPN
      WireGuard
      ShadowSocks
      IKEv2
      Cloak plugin
    Platforms
      Windows
      macOS
      Linux
      Android
      iOS
    Audience
      Privacy users
      Sysadmins
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Set up your own private VPN server using just an SSH login and password, without any manual server configuration.

USE CASE 2

Bypass VPN detection and blocking by using the Cloak plugin to disguise VPN traffic as regular web traffic.

USE CASE 3

Route only specific websites through your VPN using split tunneling on desktop, leaving other traffic on your regular connection.

Tech stack

C++QtOpenVPNWireGuardOpenSSLCMake

Getting it running

Difficulty · moderate Time to first run · 30min

Requires your own VPS with SSH root access, building from source requires platform-specific toolchains including Qt, CMake, and Xcode for iOS.

Licensed under GPL v3, free to use and modify, but any version you distribute must also be released as open source under GPL v3.

In plain English

Amnezia VPN is an open-source VPN client that lets you host and run your own private VPN server on your own hardware. Rather than signing up for a third-party VPN service, you provide your server's IP address, an SSH login, and a password, and the client automatically installs the required VPN software on that server and connects. This puts you in control of the infrastructure rather than relying on someone else's network. The client supports several VPN protocols: OpenVPN, ShadowSocks, WireGuard, and IKEv2. It also includes support for the Cloak plugin, which wraps OpenVPN traffic to make it look like ordinary web traffic, helping it pass through networks that block or detect VPN connections. Desktop versions support split tunneling, which lets you route only specific websites through the VPN while the rest of your traffic uses your regular connection. Apps are available for Windows, macOS, Linux, Android, and iOS. The project is licensed under GPL v3 and built on well-established open-source components including OpenSSL, OpenVPN, ShadowSocks, and the Qt application framework. Developers who want to build from source will find detailed instructions for both iOS and Android in the README. The iOS build requires Xcode, Qt 6.6.1, CMake, and Go (for the WireGuard bridge). The Android build requires JDK 11, Android platform SDK 33, CMake 3.25, and configuration in Qt Creator alongside Android Studio. The repository uses Git submodules, so you need to run a submodule update after cloning. Community support is available through Telegram channels in English and Russian, a Reddit community at r/AmneziaVPN, and a Signal group.

Copy-paste prompts

Prompt 1
I want to set up Amnezia VPN on my own VPS. What server specs do I need, and what happens step by step when I enter my SSH credentials into the Amnezia client for the first time?
Prompt 2
How does the Cloak plugin in Amnezia VPN make VPN traffic look like regular HTTPS traffic? When should I use it versus standard OpenVPN or WireGuard?
Prompt 3
I want to build the Amnezia VPN iOS app from source. List all the dependencies I need (Xcode version, Qt version, CMake, Go) and in what order to set them up.
Prompt 4
Set up split tunneling in Amnezia VPN on Windows so that only traffic to specific IP ranges goes through the VPN tunnel.
Open on GitHub → Explain another repo

← amnezia-vpn on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.