wg-easy: WireGuard VPN with a web admin interface
A Docker image that runs a WireGuard server and a web page to create clients, show QR codes and watch traffic. The quickest way to get a personal VPN running on one Linux host.
Drafted with AI from official documentation. Scripts were run in a test environment and repository links verified. Awaiting a human check. Did it work for you? Last edited Outdated?
wg-easy/wg-easy
- Stars
- 27.1k
- Forks
- 2.6k
- Language
- TypeScript
- Licence
- AGPL-3.0
- Last push
- 13 Oct 2026
On GitHub: The easiest way to run WireGuard VPN + Web-based Admin UI.
Open on GitHubwg-easy (about 27,000 stars on GitHub) packages a WireGuard server together with a small web application. Instead of generating keys and editing wg0.conf by hand, you click “new client”, name it and scan a QR code with the WireGuard app. The page also shows which clients are connected and how much data they moved, and lets you disable a client without deleting it.
When to use it
- A personal or small-team VPN to reach a home lab or office network, or to route a phone’s traffic through a trusted server on public Wi-Fi.
- You want to hand out and revoke client configs without touching the server’s shell.
- Not a replacement for a mesh VPN such as Tailscale or Netbird when you have many devices behind different NATs: wg-easy is a classic hub where one server needs a reachable UDP port.
How to try it
The project ships a compose file; download it, start it and open the admin page:
Check before you run this
- Runs with administrator rights. Make sure you understand every line.
sudo mkdir -p /etc/docker/containers/wg-easy
sudo curl -o /etc/docker/containers/wg-easy/docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml
cd /etc/docker/containers/wg-easy
sudo docker compose up -d
Open UDP 51820 in your firewall for the VPN itself. The admin page on TCP 51821 wants TLS: either put a reverse proxy with a certificate in front (the docs include Caddy and Traefik examples) or set INSECURE=true in the compose environment and reach it only through an SSH tunnel. The tutorial in this topic walks through the whole setup, including the firewall and the first client.
Credit
wg-easy is developed by Emile Nijssen (WeeJeWel) and the wg-easy contributors and is released under the AGPL-3.0 license. WireGuard is a registered trademark of Jason A. Donenfeld.
Did this work for you?
No votes yet. Be the first.
If it did not work, the report form below tells the editors what went wrong.
See also
- 0349 Set up a WireGuard VPN with wg-easy in Docker Run a WireGuard server with a web admin page on one Linux host, open the UDP port, add a client from the… Intermediate · Guided project · Linux Article Networking & firewalls · VPN & tunnels 15 Oct 2026
History
Every saved edit is kept. The plot on the sleeve draws one line per edit. Open any edit to see exactly what changed.
- Dominik +1,726 chars