Go to file
Christoph Haas 5d190988f3
ensure hooks run after restart (#494)
2025-08-11 21:32:27 +02:00
.github ensure that v2 (or just 2) tags are only published for stable releases (#493) 2025-08-11 18:11:32 +02:00
.run V2 alpha - initial version (#172) 2023-08-04 13:34:18 +02:00
cmd Mikrotik integration (#467) 2025-08-10 14:42:02 +02:00
deploy/helm feat(helm): add optional volumeName to persistence configuration #379 (#380) 2025-02-27 22:58:15 +01:00
docs Mikrotik integration (#467) 2025-08-10 14:42:02 +02:00
frontend Mikrotik integration (#467) 2025-08-10 14:42:02 +02:00
internal ensure hooks run after restart (#494) 2025-08-11 21:32:27 +02:00
scripts - fix docker image name 2023-10-26 15:08:11 +02:00
.dockerignore chore: CI files update (#306) 2024-09-23 21:54:22 +02:00
.gitignore docs: add reverse-proxy example, improve docker examples, fix slow_query_threshold documentation; feat: allow config.yml and config.yaml as configuration files 2025-05-03 22:21:56 +02:00
Dockerfile chore(deps): bump alpine from 3.19 to 3.22 (#465) 2025-06-27 12:38:18 +02:00
LICENSE.txt V2 alpha - initial version (#172) 2023-08-04 13:34:18 +02:00
Makefile Improve admin privilege handling for OAuth. Update documentation. 2025-01-18 11:55:56 +01:00
README.md Mikrotik integration (#467) 2025-08-10 14:42:02 +02:00
SECURITY.md chore: get rid of static code warnings 2025-02-28 16:11:55 +01:00
config.yml.sample add simple webhook feature for peer, interface and user events (#398) 2025-04-19 21:29:26 +02:00
ct.yaml Init Helm chart (#255) 2024-07-04 22:37:30 +02:00
docker-compose.yml further improve documentation and examples (#423) 2025-05-04 14:48:34 +02:00
go.mod chore: update routegroup dependency 2025-08-10 10:59:28 +02:00
go.sum chore: update routegroup dependency 2025-08-10 10:59:28 +02:00
mkdocs.yml Mikrotik integration (#467) 2025-08-10 14:42:02 +02:00

README.md

WireGuard Portal v2

Build Status License: MIT GitHub last commit Go Report Card GitHub go.mod Go version GitHub code size in bytes Docker Pulls

Introduction

WireGuard Portal is a simple, web-based configuration portal for WireGuard server management. The portal uses the WireGuard wgctrl library to manage existing VPN interfaces. This allows for the seamless activation or deactivation of new users without disturbing existing VPN connections.

The configuration portal supports using a database (SQLite, MySQL, MsSQL, or Postgres), OAuth or LDAP (Active Directory or OpenLDAP) as a user source for authentication and profile data.

Features

  • Self-hosted - the whole application is a single binary
  • Responsive multi-language web UI written in Vue.js
  • Automatically selects IP from the network pool assigned to the client
  • QR-Code for convenient mobile client configuration
  • Sends email to the client with QR-code and client config
  • Enable / Disable clients seamlessly
  • Generation of wg-quick configuration file (wgX.conf) if required
  • User authentication (database, OAuth, or LDAP), Passkey support
  • IPv6 ready
  • Docker ready
  • Can be used with existing WireGuard setups
  • Support for multiple WireGuard interfaces
  • Supports multiple WireGuard backends (wgctrl or MikroTik [BETA])
  • Peer Expiry Feature
  • Handles route and DNS settings like wg-quick does
  • Exposes Prometheus metrics for monitoring and alerting
  • REST API for management and client deployment
  • Webhook for custom actions on peer, interface, or user updates

Screenshot

Documentation

For the complete documentation visit wgportal.org.

What is out of scope

  • Automatic generation or application of any iptables or nftables rules.
  • Support for operating systems other than linux.
  • Automatic import of private keys of an existing WireGuard setup.

Application stack

License

[!IMPORTANT] Since the project was accepted by the Docker-Sponsored Open Source Program, the Docker image location has moved to wgportal/wg-portal. Please update the Docker image from h44z/wg-portal to wgportal/wg-portal.