You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Bernd Storath c0e8870245 update readme 4 months ago
.github improve gh actions 4 months ago
.vscode WIP: Feat: UI, General Improvements (#1397) 4 months ago
assets refactor: optimize build config, factorize code, enhance SVG icons 9 months ago
docs WIP: Feat: UI, General Improvements (#1397) 4 months ago
src WIP: Feat: UI, General Improvements (#1397) 4 months ago
.dockerignore improve docker 4 months ago
.editorconfig Feat expiration date (#1296) 8 months ago
.gitignore Feat: Rewrite Wireguard to use Database (#1345) 4 months ago
CHANGELOG.md WIP: Feat: UI, General Improvements (#1397) 4 months ago
Dockerfile WIP: Feat: UI, General Improvements (#1397) 4 months ago
Dockerfile.dev WIP: Feat: UI, General Improvements (#1397) 4 months ago
LICENSE WIP: Feat: UI, General Improvements (#1397) 4 months ago
README.md update readme 4 months ago
contributing.md contributing.md: remove stackoverflow link 1 year ago
docker-compose.dev.yml load ipv6 iptables module 4 months ago
docker-compose.yml load ipv6 iptables module 4 months ago
package.json WIP: Feat: UI, General Improvements (#1397) 4 months ago
pnpm-lock.yaml Add Nuxt, ESM, Typescript (#1244) 4 months ago

README.md

WireGuard Easy

Build & Publish Docker Image to Docker Hub Lint Docker Sponsor GitHub Stars

You have found the easiest way to install & manage WireGuard on any Linux host!

Features

  • All-in-one: WireGuard + Web UI.
  • Easy installation, simple to use.
  • List, create, edit, delete, enable & disable clients.
  • Show a client's QR code.
  • Download a client's configuration file.
  • Statistics for which clients are connected.
  • Tx/Rx charts for each connected client.
  • Gravatar support.
  • Automatic Light / Dark Mode
  • Multilanguage Support
  • Traffic Stats (default off)
  • One Time Links (default off)
  • Client Expiration (default off)
  • Prometheus metrics support (default off)

Requirements

  • A host with a kernel that supports WireGuard (all modern kernels).
  • A host with Docker installed.

Versions

💡 We follow semantic versioning (semver)

We offer multiple Docker image tags to suit your needs. The table below is in a particular order, with the first tag being the most recommended:

tag Branch Example Description
15 latest minor for that major tag ghcr.io/wg-easy/wg-easy:15 latest features for specific major versions, no breaking changes
latest latest tag ghcr.io/wg-easy/wg-easy:latest or ghcr.io/wg-easy/wg-easy stable as possible get bug fixes quickly when needed, see Releases for more information.
15.0 latest patch for that minor tag ghcr.io/wg-easy/wg-easy:15.0 latest patches for specific minor version
15.0.0 specific tag ghcr.io/wg-easy/wg-easy:15.0.0 specific release, don't use this as this will not get updated
nightly master ghcr.io/wg-easy/wg-easy:nightly mostly unstable gets frequent package and code updates, deployed against master.
development pull requests ghcr.io/wg-easy/wg-easy:development used for development, testing code from PRs before landing into master.

Installation

1. Install Docker

If you haven't installed Docker yet, install it by running:

curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $(whoami)
exit

And log in again.

2. Run WireGuard Easy

To setup the IPv6 Network, simply run once:

  docker network create \
  -d bridge --ipv6 \
  -d default \
  --subnet 10.42.42.0/24 \
  --subnet fdcc:ad94:bacf:61a3::/64 wg \

To automatically install & run wg-easy, simply run:

  docker run -d \
  --net wg \
  -e PORT=51821 \
  --name wg-easy \
  --ip6 fdcc:ad94:bacf:61a3::2a \
  --ip 10.42.42.42 \
  -v ~/.wg-easy:/etc/wireguard \
  -v /lib/modules:/lib/modules:ro \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  --cap-add NET_ADMIN \
  --cap-add SYS_MODULE \
  --sysctl net.ipv4.ip_forward=1 \
  --sysctl net.ipv4.conf.all.src_valid_mark=1 \
  --sysctl net.ipv6.conf.all.disable_ipv6=0 \
  --sysctl net.ipv6.conf.all.forwarding=1 \
  --sysctl net.ipv6.conf.default.forwarding=1 \
  --restart unless-stopped \
  ghcr.io/wg-easy/wg-easy

The Web UI will now be available on http://0.0.0.0:51821.

The Prometheus metrics will now be available on http://0.0.0.0:51821/api/metrics. Grafana dashboard 21733

💡 Your configuration files will be saved in ~/.wg-easy

WireGuard Easy can be launched with Docker Compose as well - just download docker-compose.yml, make necessary adjustments and execute docker compose up -d.

3. Sponsor

Are you enjoying this project? Buy Emile a beer! 🍻

Options

These options can be configured by setting environment variables using -e KEY="VALUE" in the docker run command.

Env Default Example Description
PORT 51821 6789 TCP port for Web UI.
HOST 0.0.0.0 localhost IP address web UI binds to.

Updating

To update to the latest version, simply run:

docker stop wg-easy
docker rm wg-easy
docker pull ghcr.io/wg-easy/wg-easy

And then run the docker run -d \ ... command above again.

With Docker Compose WireGuard Easy can be updated with a single command: docker compose up --detach --pull always (if an image tag is specified in the Compose file and it is not latest, make sure that it is changed to the desired one; by default it is omitted and defaults to latest).
The WireGuard Easy container will be automatically recreated if a newer image was pulled.

Common Use Cases

For less common or specific edge-case scenarios, please refer to the detailed information provided in the Wiki.

License

This project is licensed under the GPL-3.0-only License - see the LICENSE file for details

This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Jason A. Donenfeld, ZX2C4 or Edge Security

"WireGuard" and the "WireGuard" logo are registered trademarks of Jason A. Donenfeld