Need help with wg-access-server?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

1.3K Stars 120 Forks MIT License 209 Commits 67 Opened issues


An all-in-one WireGuard VPN solution with a web ui for connecting devices

Services available


Need anything else?

Contributors list


wg-access-server is a single binary that provides a WireGuard VPN server and device management web ui. We support user authentication, 1 click device registration that works with Mac, Linux, Windows, Ios and Android including QR codes. You can configure different network isolation modes for better control and more.

This project aims to deliver a simple VPN solution for developers, homelab enthusiasts and anyone else feeling adventurous.

wg-access-server is a functional but young project. Contributions are welcome!


See our documentation website

Quick Links:

Running with Docker

Here's a quick command to run the server to try it out.

export WG_ADMIN_PASSWORD="example"
export WG_WIREGUARD_PRIVATE_KEY="$(wg genkey)"

docker run
--cap-add NET_ADMIN
--device /dev/net/tun:/dev/net/tun
-v wg-access-server-data:/data
-p 8000:8000/tcp
-p 51820:51820/udp

If you open your browser using your LAN ip address you can even connect your phone to try it out: for example, i'll open my browser at http://192.168.0.XX:8000 using the local LAN IP address.

You can connect to the web server on the local machine browser at http://localhost:8000

Running on Kubernetes via Helm

wg-access-server ships a Helm chart to make it easy to get started on Kubernetes.

Here's a quick start, but you can read more at the Helm Chart Deployment Docs

# deploy
helm install my-release --repo wg-access-server


helm delete my-release

Running with Docker-Compose

Download the the docker-compose.yml file from the repo and run the following command.

export WG_ADMIN_PASSWORD="example"
export WG_WIREGUARD_PRIVATE_KEY="$(wg genkey)"

docker-compose up

You can connect to the web server on the local machine browser at http://localhost:8000

If you open your browser to your machine's LAN IP address you'll be able to connect your phone using the UI and QR code!



Connect iOS

Connect MacOS

Sign In


See the file


The software is made up a Golang Server and React App.

Here's how I develop locally:

  1. run
    cd website && npm install && npm start
    to get the frontend running on
  2. run
    sudo go run ./main.go
    to get the server running on

Here are some notes about the development configuration:

  • sudo is required because the server uses iptables/ip to configure the VPN networking
  • you'll access the website on
    and it'll proxy API requests to
    thanks to webpack
  • in-memory storage and generated wireguard keys will be used

GRPC codegeneration:

The client communicates with the server via gRPC-Web. You can edit the API specification in


After changing a service or message definition you'll want to re-generate server and client code using:


We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.