Back to Home

Self-hosted AmneziaWG: installation with web panel

The material describes the deployment of self-hosted AmneziaWG 2.0 using scripts and a Rust web panel. Detailed instructions on installation, client management, and traffic masking. Recommendations for clients for Windows, iOS, Android.

AmneziaWG self-hosted: scripts and panel for VPN
Advertisement 728x90

Deploying a Self-Hosted AmneziaWG Server with a Web Management Panel

Set up your own AmneziaWG server using an installation script and add a web panel to automate client management. This solution maintains full control over your infrastructure without requiring root access for client apps and minimizes manual work as your user base grows.

AmneziaWG 2.0 requires up-to-date packages, so the script supports a limited set of operating systems. The basic install script sets up the server, generates keys and configs. A Rust-based web panel with SQLite extends it for user operations.

Installing the Base Server

Download and run the main script to deploy AmneziaWG:

Google AdInline article slot
curl -O https://raw.githubusercontent.com/wiresock/amneziawg-install/main/amneziawg-install.sh
chmod +x amneziawg-install.sh
sudo ./amneziawg-install.sh

Non-interactive mode speeds up the process:

sudo AUTO_INSTALL=y ./amneziawg-install.sh

Manage clients via CLI:

  • Add: sudo ./amneziawg-install.sh --add-client alice
  • Remove: sudo ./amneziawg-install.sh --remove-client alice
  • List: sudo ./amneziawg-install.sh --list-clients

The S4 parameter affects MTU — choose values carefully to avoid connection issues.

Google AdInline article slot

From the repository:

git clone https://github.com/wiresock/amneziawg-install.git
cd amneziawg-install
sudo ./amneziawg-install.sh

Adding the Web Panel

Install the panel on top of a running VPN:

curl -O https://raw.githubusercontent.com/wiresock/amneziawg-install/main/amneziawg-web.sh
chmod +x amneziawg-web.sh
sudo ./amneziawg-web.sh install

The amneziawg-web.sh script supports install, update, remove, and status. The panel runs on 127.0.0.1:8080 and is not exposed externally by default.

Google AdInline article slot

For remote access via SSH tunnel:

ssh -L 8080:127.0.0.1:8080 [email protected]

Then open http://127.0.0.1:8080 locally. For external access, configure a reverse proxy.

The panel implements script operations: adding/removing users, disabling, and statistics. The interface is minimalist, focused on daily tasks.

Traffic Obfuscation Parameters

AmneziaWG uses I1–I5 to mimic known protocols. Without obfuscation, the connection is vulnerable to detection. It's recommended to configure via protocol selection, domain, and browser for QUIC.

WireSock Secure Connect uses an application model instead of manual packet editing. I1–I5 parameters require testing — working combinations quickly become outdated.

Client Applications

  • Windows: WireSock Secure Connect (version 3.3.1+ with AmneziaWG 2.0 support)
  • iOS: AmneziaWG
  • Android: WG Tunnel

These clients ensure stable operation with a self-hosted server.

Scaling the Infrastructure

Scripts are separated: the base VPN runs independently, the panel is an optional layer. As users grow, routine tasks (recreating configs, revoking access) are automated via the web interface.

Advantages of this approach:

  • Full control without external apps requiring root.
  • Modularity — the panel is not mandatory.
  • Lifecycle management: install/update/remove.
  • Local access by default for security.
  • CLI for automation with scripts.

Key Points

  • The script leaves control with the administrator, avoiding automated root actions.
  • The web panel in Rust with SQLite is lightweight, with no external dependencies.
  • I1–I5 obfuscation is critical for connection stability.
  • AmneziaWG 2.0 support requires fresh OS packages.
  • Clients: WireSock for Windows, AmneziaWG for iOS, WG Tunnel for Android.

— Editorial Team

Advertisement 728x90

Read Next