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 e1bf4f381b Feat: Server AllowedIPs, MTU (#1356) 8 months ago
.github Add Nuxt, ESM, Typescript (#1244) 4 months ago
.vscode Add Nuxt, ESM, Typescript (#1244) 4 months ago
assets refactor: optimize build config, factorize code, enhance SVG icons 9 months ago
docs prepare: version bump and changelog 9 months ago
src Feat: Server AllowedIPs, MTU (#1356) 4 months ago
.dockerignore Added nodemon as a dev dependency and removed unnecessary instructions from the Dockerfile 12 months ago
.editorconfig Feat expiration date (#1296) 8 months ago
.gitignore Feat: Rewrite Wireguard to use Database (#1345) 4 months ago
Dockerfile Fix: Security (#1355) 4 months ago
Dockerfile.dev Feat: IPv6 (#1354) 4 months ago
LICENSE Rename LICENSE.md to LICENSE 1 year ago
README.md Feat: Server AllowedIPs, MTU (#1356) 4 months ago
contributing.md contributing.md: remove stackoverflow link 1 year ago
docker-compose.dev.yml Feat: Rewrite Wireguard to use Database (#1345) 4 months ago
docker-compose.yml Feat: Server AllowedIPs, MTU (#1356) 4 months ago
package.json Refactor New UI (#1342) 4 months ago
pnpm-lock.yaml Add Nuxt, ESM, Typescript (#1244) 4 months ago
wg-easy.service Revert "feat: cidr notation" 1 year 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

💡 For the stable version please read instructions on the production branch!

We provide more than 1 docker image tag, the following will help you decide which one suites the best for you.

tag Branch Example Description
latest production ghcr.io/wg-easy/wg-easy:latest or ghcr.io/wg-easy/wg-easy stable as possbile get bug fixes quickly when needed, deployed against production.
14 production ghcr.io/wg-easy/wg-easy:14 same as latest, stick to a version tag.
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 \
  -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/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! 🍻
Donation to core component: WireGuard

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.
WG_PATH /etc/wireguard/ /home/user/ The Path your wg0.conf and db.json lives

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.