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 da8e5a7860 Feat: Show Version in Footer (#1389) 7 months ago
.github build doc workflow 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 Feat: Docs (#1361) 4 months ago
src Feat: Show Version in Footer (#1389) 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 Feat: Changelog, Release Notes (#1385) 4 months ago
Dockerfile improve docker 4 months ago
Dockerfile.dev Feat: IPv6 (#1354) 4 months ago
LICENSE Rename LICENSE.md to LICENSE 1 year ago
README.md Chore: Deprecate Dockerless (#1377) 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 Feat: Changelog, Release Notes (#1385) 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

💡 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.

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.