How this installer differs from the official Amnezia app
Both set up an AmneziaWG server. The official app is a graphical client that deploys the server in Docker. This installer is built for one goal: to get the most out of a single dedicated VPS as a VPN server. Here is what that changes.
Two approaches to the same protocol
AmneziaWG underneath either way. The difference is how the server is delivered and how far it is tuned.
Official Amnezia app
A graphical client for desktop and phone. You point it at a server and it deploys the server side in Docker over SSH, then manages clients from the app. A convenient official path when a GUI is all you need, and it does not take on host-wide tuning or hardening.
amneziawg-installer
One SSH command that turns a dedicated VPS into a tuned VPN box. AmneziaWG runs as a kernel module, the whole server is optimized and hardened for the one job, and clients are managed from the command line. No Docker, nothing extra running in the background.
What this installer does differently
Everything here follows from one idea: a lean, fully tuned, single-purpose VPN box you control end to end.
No Docker overhead
AmneziaWG runs as a kernel module, not inside a container, so there is no Docker daemon in the background. RAM and CPU stay free for the tunnel - critical on a cheap VPS and welcome on a bigger one.
The server is tuned to the hardware
The script checks how much RAM the server has, sizes sysctl buffers and swap to match, and enables BBR. It wrings the most out of the plan you pay for, rather than treating host-wide tuning as out of scope.
Smaller attack surface
Unneeded packages and services are stripped, so the box does one thing. On top of that: UFW deny-all, Fail2Ban, strict file permissions, and sysctl hardening. One service to keep an eye on, not a stack.
Fine control over the obfuscation
A mobile-network preset (--preset=mobile), direct access to the AmneziaWG parameters, and field data on carriers and DPI. When an operator or network is awkward, you can tune the obfuscation for it rather than hope a default fits.
Headless and scriptable
One SSH command, every option as a flag, no desktop app required. CLI client management, time-limited guest configs, QR and vpn link import, and JSON output for automation.
ARM prebuilts
Prebuilt kernel modules for Raspberry Pi and for Ubuntu 24.04 and Debian 12/13 ARM64 kernels; where no package matches the running kernel, a DKMS build. The same command picks the right one.
Same protocol, same obfuscation
The differences are in delivery and tuning, not in how well it resists DPI.
It is the same AmneziaWG underneath, with the same obfuscation designed to resist deep packet inspection. This installer sets up the 3.1 profile by default and 2.0 with --protocol=2.0. The installer is open source under the MIT license, it is readable bash you can review before running, and it carries more than 2000 automated tests. It installs the same upstream AmneziaWG - this is automation and server tuning, not a fork of the protocol.
FAQ
How does amneziawg-installer differ from the official Amnezia app?
Does it use Docker on the server?
Does it optimize the server itself?
Can I tune the obfuscation for my carrier or network?
Is the protocol and security the same?
--protocol=2.0. The installer is open source under the MIT license, readable bash you can review before running, and it has more than 2000 automated tests. It installs the same upstream AmneziaWG - automation and server tuning, not a fork of the protocol.