Sign inSign up

cyrius44/wireguard-ui

By cyrius44

β€’Updated 1 day ago

WireGuardUI - Secure tunnel management

Image
Networking
Security
0

5.2K

cyrius44/wireguard-ui repository overview

β πŸ”’ WireGuard UI

Lire ceci en français⁠.

licence python angular ci::status docker::pulls documentation::badge

WireGuard UI is a web interface for managing a WireGuard server without touching configuration files directly (wg0.conf, keys, iptables rules). Peer management, configuration export, OIDC authentication, audit log β€” all in a single Docker image.

WireGuard UI dashboard

⁠Features

  • πŸ”§ Peer management (create, edit, revoke) with free IP suggestion
  • πŸ“„ Client configuration generation, export as .conf file and QR code
  • βœ‰οΈ Send configuration by email (SMTP configurable from the UI)
  • πŸ” Local authentication, OIDC (SSO) and Personal Access Tokens for the API
  • πŸ“‹ Audit log of sensitive actions, with configurable retention
  • 🩺 Built-in healthcheck (GET /api/health)
  • 🐳 Single Docker image, linux/amd64 / linux/arm64 (Raspberry Pi, Apple Silicon)

FastAPI (async) backend + Angular (Signals, zoneless) frontend β€” see the Architecture⁠ page for the technical stack details.


⁠Quick start

docker run -d \
  --name wireguard-ui \
  --cap-add NET_ADMIN \
  --sysctl net.ipv4.ip_forward=1 \
  --sysctl net.ipv4.conf.all.src_valid_mark=1 \
  -p 8000:8000 \
  -p 51820:51820/udp \
  -v wg_config:/etc/wireguard \
  -v wireguard-ui_data:/var/lib/wireguard-ui \
  cyrius44/wireguard-ui:latest

An admin password is generated automatically on first startup and shown only once in the logs β€” the default user is admin:

docker logs wireguard-ui | grep -A4 "Initial admin account"

Open http://localhost:8000⁠ and log in with admin and this password.

Or with Docker Compose:

services:
  wireguard-ui:
    image: cyrius44/wireguard-ui:latest
    container_name: wireguard-ui
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
    ports:
      - "8000:8000"
      - "51820:51820/udp"
    volumes:
      - wg_config:/etc/wireguard
      - wireguard-ui_data:/var/lib/wireguard-ui

volumes:
  wg_config:
  wireguard-ui_data:

Note: SECRET_KEY is optional β€” if absent, the application automatically generates a random key and persists it in wireguard-ui_data. In production, set it explicitly to share sessions across multiple replicas or survive a loss of the data volume.

For the full guide (local installation without Docker, environment variables, production recommendations) see Getting started⁠.


⁠Documentation

The full documentation β€” architecture, environment variable reference, routers & services, deployment β€” is published at cyr-ius.github.io/wireguard-ui⁠.

Looking for...Go to...
All environment variablesEnvironment variables⁠
Local installation (dev, no Docker)Local installation⁠
Backend / frontend / database architectureArchitecture⁠
Routers, business services, authenticationFunctions & API⁠
Deployment & production recommendationsDeployment⁠

⁠License

MIT β€” see LICENSE⁠ for details.

⁠About

Author: @cyr-ius⁠ β€” Sponsor: GitHub Sponsors⁠

Tag summary

Content type

Image

Digest

sha256:71b5def29…

Size

106.3 MB

Last updated

1 day ago

docker pull cyrius44/wireguard-ui