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

About the developer

ngoduykhanh
502 Stars 77 Forks MIT License 101 Commits 47 Opened issues

Description

Wireguard web interface

Services available

!
?

Need anything else?

Contributors list

# 104,024
HTML
Shell
Go
wiregua...
76 commits
# 475,216
Shell
HTML
Go
wiregua...
3 commits
# 444,620
nginx-m...
Shell
PHP
C++
1 commit
# 45,224
Markdow...
Jekyll
elastic...
import
1 commit

wireguard-ui

A web user interface to manage your WireGuard setup.

Features

  • Friendly UI
  • Authentication
  • Manage extra client's information (name, email, etc)
  • Retrieve configs using QR code / file

Run WireGuard-UI

Default username and password are

admin
.

Using docker compose

You can take a look at this example of docker-compose.yml. Please adjust volume mount points to work with your setup. Then run it like below:

docker-compose up

Note:

There is a Status option that needs docker to be able to access the network of the host in order to read the wireguard interface stats. See the

cap_add
and
network_mode
options on the docker-compose.yaml

Environment Variables

Set the

SESSION_SECRET
environment variable to a random value.

In order to sent the wireguard configuration to clients via email (using sendgrid api) set the following environment variables

SENDGRID_API_KEY: Your sendgrid api key
EMAIL_FROM: the email address you registered on sendgrid
EMAIL_FROM_NAME: the sender's email address

Using binary file

Download the binary file from the release and run it with command:

./wireguard-ui

Auto restart WireGuard daemon

WireGuard-UI only takes care of configuration generation. You can use systemd to watch for the changes and restart the service. Following is an example:

systemd

Create /etc/systemd/system/wgui.service

[Unit]
Description=Restart WireGuard
After=network.target

[Service] Type=oneshot ExecStart=/usr/bin/systemctl restart [email protected]

[Install] RequiredBy=wgui.path

Create /etc/systemd/system/wgui.path

[Unit]
Description=Watch /etc/wireguard/wg0.conf for changes

[Path] PathModified=/etc/wireguard/wg0.conf

[Install] WantedBy=multi-user.target

Apply it

systemctl enable wgui.{path,service}
systemctl start wgui.{path,service}

openrc

Create and

chmod +x
/usr/local/bin/wgui ```

!/bin/sh

wg-quick down wg0 wg-quick up wg0 ```

Create and

chmod +x
/etc/init.d/wgui ```

!/sbin/openrc-run

command=/sbin/inotifyd commandargs="/usr/local/bin/wgui /etc/wireguard/wg0.conf:w" pidfile=/run/${RCSVCNAME}.pid command_background=yes ```

Apply it

rc-service wgui start
rc-update add wgui default

Build

Build docker image

Go to the project root directory and run the following command:

docker build -t wireguard-ui .

Build binary file

Prepare the assets directory

./prepare_assets.sh

Then you can embed resources by generating Go source code

rice embed-go
go build -o wireguard-ui

Or, append resources to executable as zip file

go build -o wireguard-ui
rice append --exec wireguard-ui

Screenshot

wireguard-ui

License

MIT. See LICENSE.

Support

If you like the project and want to support it, you can buy me a coffee

Buy Me A Coffee

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.