Skip to main content

web-based user interface for configuring WireGuard for roadwarriors

Project description

wgfrontend

A simple web frontend for configuring peers within a WireGuard configuration file to thus administer road warrior clients.

There are already a lot of user interfaces for administering WireGuard configuration files available. However, many of them have a bunch of dependencies, require root privileges to operate, or are a hassle to set up. "wgfrontend" provides a user interface that can be easily installed by just installing a package from Python's package repository PyPi (i.e. using pip).

This little tool is independent of the Towalink site connectivity solution (see https://towalink.readthedocs.io).


Features

  • Web frontend for adding, modifying, and deleting WireGuard peers
  • Config files for WireGuard peers can be downloaded
  • Config files for WireGuard peers are shown as QR Code
  • Assistant for initial set-up
  • Web frontend has responsive design
  • Web frontend does not run with root privileges
  • Simple installation

Installation

Install using PyPi:

pip3 install wgfrontend

Note: In the case you get an error regarding the imaging library needed for generating QR Codes, try to install it via the operating system packages:

# For Alpine:
apk add py3-pillow
# For Debian:
apt install python3-pil

Quickstart

After installing "wgfrontend" as shown above, just execute the tool with root permissions to get started:

wgfrontend

An interactive set-up assistant queries for the needed configuration data and sets up the environment. Once everything is configured, "wgfrontend" drops root privileges and runs a small web server on port 8080 to serve the web frontend.


Screenshots

screenshot: show a client config

See additional screenshots in the "screenshots" folder.


Details

The wgfrontend configuration file

The interactive set-up assistant creates a configuration file with the desired information. It is located at "/etc/wgfrontend/wgfrontend.conf".

Here is an example:

### Config file of the Towalink WireGuard Frontend ###
[general]
# The WireGuard config file to read and write
wg_configfile = /etc/wireguard/wg_rw.conf

# The command to be executed when the WireGuard config has changed
on_change_command = "sudo /etc/init.d/wgfrontend_interface restart"

# The interface to bind to for the web server
socket_host = 0.0.0.0

# The port to bind to for the web server
socket_port = 8080

# The system user to be used for the frontend
user = wgfrontend

[users]
admin = dc524e423d9762830649d4d9e18f4b47a56c92f96646104dd06c71b26b54f732e8318d5b60a6b2b01b4f269407771496e879c9bf65ca9ef4f55a243ff358fc8dfea0bd9d30d766320857093eb95022822f71b098215f26f6d2644033d956bfdd

Add an additional frontend user

Create a password hash using the following command:

wgfrontend-password

Using this, you can add another user to the [users] section in the wgfrontend configuration file.

A note on security

Don't expose the web frontend to the Internet without another layer of protection.

The wgfrontend web server does not run with root permissions. That's a start and better than many other WireGuard frontends. But the web server user has the permission to write to a WireGuard configuration file. This file may reference scripts that are run with root permissions when wg-quick is run. In case of a vulnerability in wgfrontend, this can be abused for privilege escalation. Thus add an additional safeguard layer of protection.


Reporting bugs

In case you encounter any bugs, please report the expected behavior and the actual behavior so that the issue can be reproduced and fixed.


Developers

Clone repository

Clone this repo to your local machine using https://github.com/towalink/wgfrontend.git

Install the module temporarily to make it available in your Python installation:

pip3 install -e <path to directory with setup.py>

License

License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wgfrontend-0.9.1.tar.gz (36.4 kB view details)

Uploaded Source

Built Distribution

wgfrontend-0.9.1-py3-none-any.whl (40.0 kB view details)

Uploaded Python 3

File details

Details for the file wgfrontend-0.9.1.tar.gz.

File metadata

  • Download URL: wgfrontend-0.9.1.tar.gz
  • Upload date:
  • Size: 36.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.5

File hashes

Hashes for wgfrontend-0.9.1.tar.gz
Algorithm Hash digest
SHA256 535d5d4476c997cc202b5a402641093ac671b151d046ef18d6c888345443f2bf
MD5 09feac85e1f8891dd5e6c1739fc95a4a
BLAKE2b-256 7447b5b51c64fb1a3ac8f7c4cdc86511e921d180f22940f67a265e59d6c3caff

See more details on using hashes here.

File details

Details for the file wgfrontend-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: wgfrontend-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 40.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.5

File hashes

Hashes for wgfrontend-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7aef53c037fe98fd75ef2bd0efbeeca1c82b9e59ea36a646319bb19d45f40a79
MD5 a1554dd96f2cc045e284996772cae023
BLAKE2b-256 ab55d6e103ed361012c4457727c96214103a5cbb93638a2879887854d1b9aed3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page