unsubbed.co

WGDashboard

WGDashboard is a Vue-based application that provides simple dashboard for configuring and managing WireGuard.

Self-hosted VPN administration, honestly reviewed. No marketing fluff, just what you get when you stop using the command line.

TL;DR

  • What it is: A web-based management interface for WireGuard VPN, written in Python (Flask) and Vue.js. It doesn’t replace WireGuard — it wraps it in a browser UI so you stop typing wg show into a terminal [README].
  • Who it’s for: Homelab operators, small teams, and privacy-conscious founders who want to self-host a WireGuard VPN server without memorizing config file syntax. Also anyone already running WireGuard who wants peer management without SSH access [1][2].
  • Cost savings: Commercial VPN subscriptions (Mullvad, NordVPN, ProtonVPN) run $4–13/month with zero data sovereignty — your traffic routes through someone else’s servers. WGDashboard on a $4–6 Hetzner VPS gives you unlimited devices, no usage caps, and the keys stay yours [2].
  • Key strength: Dead-simple peer onboarding — add a client, scan a QR code, done. Plus built-in 2FA and real-time connection statistics without opening a terminal [1][2].
  • Key weakness: It’s a management UI, not a VPN service. You still need WireGuard installed and working on the host before the dashboard is useful. Non-technical founders who’ve never touched a VPN server will need help getting to the baseline [1].

What is WGDashboard

WGDashboard is an open-source web interface for managing WireGuard VPN configurations. The pitch in the GitHub README is as plain as it gets: “Monitoring WireGuard is not convenient, in most case, you’ll need to login to your server and type wg show. That’s why this project is being created, to view and manage all WireGuard configurations in an easy way.” [README] That’s the whole product, and it’s a more useful description than most projects manage.

What it actually does: you install WireGuard on a Linux server, point WGDashboard at your WireGuard config files, and suddenly you have a browser-based control panel showing peer status, handshake times, data transfer counters, and configuration details — all updated live without page refreshes [1]. Adding new VPN clients takes a form field and a name instead of manually editing /etc/wireguard/wg0.conf and reloading the interface.

The project has 3,432 GitHub stars, 410 forks, 49 contributors, and 48 releases as of late 2025. The latest release (v4.3.1) dropped December 13, 2025. It’s backed by DigitalOcean sponsorship and has an active Discord, Reddit, and Matrix community [README]. This is not an abandoned side project.

License is Apache 2.0 — genuinely permissive, no commercial use restrictions, no “fair-code” asterisks [README].


Why people choose it over CLI WireGuard and other management tools

The core value proposition is removing the operational friction of WireGuard without giving up the protocol’s advantages.

WireGuard is genuinely excellent. The protocol runs about 4,000 lines of auditable code and uses Curve25519 for key exchange, ChaCha20 for encryption, and Poly1305 for authentication — cryptographic primitives that hold up to scrutiny. Connection speeds beat OpenVPN and IPSec by a meaningful margin, latency is lower, and it runs natively in the Linux kernel on modern distributions [1]. If you care about VPN performance, WireGuard is the right protocol.

The problem is operations. Adding a new peer to a WireGuard server means generating a keypair, editing the server config, reloading the interface, and then somehow getting the client config to the device. On mobile that means either emailing yourself a .conf file or generating a QR code from the terminal. None of this is hard for a sysadmin — it’s just friction that accumulates.

WGDashboard removes that friction. The XDA Developers guide on running WireGuard in Proxmox specifically calls out the GUI workflow: create a config, add a peer by name, and then choose QR code, .conf file, or join link to onboard the client device [2]. The whole flow stays in the browser. First-login credentials are admin/admin with a forced password change before you can proceed, and 2FA (TOTP) is available from setup [2].

Versus running raw WireGuard scripts. Plenty of r/selfhosted veterans are comfortable with wg-quick and a cron job. WGDashboard is not for them. It’s for the operator who wants a dashboard they can check from any browser, share access with a non-technical family member, and not worry about accidentally corrupting a config file via typo.

Versus wg-easy (the other popular WireGuard web UI). wg-easy is Docker-only, intentionally minimal, and doesn’t expose as much configuration surface. WGDashboard offers more — multiple configurations, REST API, two-factor auth, multi-language support — at the cost of slightly more complex setup [README][1]. If you want zero-config, wg-easy wins. If you want operational depth, WGDashboard wins.

Versus commercial VPN services. This comparison matters most for privacy-motivated users. When you use Mullvad, NordVPN, or ExpressVPN, your traffic traverses their infrastructure and you’re trusting their no-logs claims. With a self-hosted WireGuard server, the only entity with access to your traffic metadata is your VPS provider — and you pick who that is [2]. For teams handling sensitive client data or founders who’ve been burned by “privacy-focused” services caught logging, the infrastructure sovereignty argument is real.


Features

Based on the README and third-party installation guides:

Core dashboard:

  • Automatic discovery of existing WireGuard configurations on the host — no need to recreate setups [1]
  • Real-time peer status: handshake timestamps, data transfer counters (upload/download), endpoint IP [1]
  • Visual connection health monitoring without page refreshes [1]
  • Multiple WireGuard interface support (manage several VPN configs from one dashboard) [README]

Peer management:

  • Add, remove, and configure peers through a web form [1][2]
  • Automatic QR code generation for mobile device onboarding [1][2]
  • Export peer configs as .conf files or join links [2]
  • Bulk peer operations [README]

Security:

  • TOTP two-factor authentication [1][2]
  • Configurable login sessions
  • First-boot credential change enforcement [2]

API and integrations:

  • REST API for programmatic management [README — rest_api listed in canonical features]
  • Docker support with published image (donaldzou/wgdashboard) [README]
  • SQLite database (no separate DB server required) [README topics]

Multi-language UI — translations contributed by the community [1]

What it does NOT include: It is purely a management interface. It doesn’t include WireGuard itself, doesn’t handle DNS configuration for the VPN, doesn’t have a built-in kill switch or split-tunnel UI, and has no mobile app. All of that lives in WireGuard clients on the devices connecting to your server.


Pricing: SaaS vs self-hosted math

WGDashboard: $0. Apache-2.0 license, no paid tiers, no SaaS version [README].

The cost is the server:

  • Hetzner CX22 (2 vCPU, 4GB RAM, 40GB SSD): €3.79/month ($4.10)
  • DigitalOcean Droplet (1 vCPU, 1GB RAM): $6/month
  • Contabo VPS S (4 vCPU, 8GB RAM): ~$5/month

A 1GB RAM server handles 10–20 simultaneous WireGuard peers comfortably. Production environments with 50+ concurrent connections benefit from 2GB+ RAM [1]. For a small team or family use, the cheapest option works fine.

Commercial VPN for comparison:

  • Mullvad: $5/month flat (no logging, reputable)
  • NordVPN: $3.99–$13.99/month depending on term length
  • ProtonVPN: $4–10/month
  • ExpressVPN: $8–13/month

The math for a five-person team:

  • NordVPN Plus (5 simultaneous connections, or use 5 separate accounts): effectively $20–70/month depending on how you count licenses
  • Self-hosted WGDashboard: $5/month regardless of how many peers you add

Over a year: commercial VPN for a small team ≈ $240–840. Self-hosted ≈ $60 + one-time setup time. The break-even on setup effort is typically less than two months of commercial VPN costs.

The more important number: unlimited peers at flat cost. Once the server is running, adding the 50th device costs the same as adding the first. Commercial VPN pricing scales with simultaneous connections or device count.


Deployment reality check

The installation pattern is consistent across guides for Fedora 42 [1], Debian 13 [5], Linux Mint 22 [4], and Proxmox [2]: install WireGuard kernel module and tools, install WGDashboard (via script or Docker), configure a reverse proxy for HTTPS, and access the web UI.

What you actually need:

  • A Linux VPS or dedicated server (any major distro works — Fedora, Debian, Ubuntu, Rocky all have documented installs) [1][4][5]
  • WireGuard installed and a kernel that supports it (most modern kernels do natively)
  • Docker if you’re using the container path; Python 3 + pip if installing directly [2][README]
  • A domain name and reverse proxy (Nginx or Caddy) for HTTPS — skippable for local-only use
  • Static IP on the server (required for a VPN endpoint that clients can reach)
  • UDP port forwarding if the server is behind NAT

The Proxmox shortcut. If you run Proxmox at home, the tteck Proxmox helper scripts install WireGuard + WGDashboard into an LXC container with a single command [2]. This is the easiest path if you have a homelab — the whole thing is running in under 10 minutes.

What can go sideways:

  • WGDashboard manages WireGuard, but WireGuard still needs to be configured with the right network interface, IP forwarding enabled, and firewall rules set to allow UDP traffic through. Guides cover this, but it’s not zero-config [1].
  • Kernel modules: some VPS providers disable WireGuard kernel module loading in OpenVZ containers. KVM/LXC virtualization works; OpenVZ often doesn’t. Check before you buy a VPS [1].
  • First-time credentials are admin/admin — obvious and documented. If you accidentally expose the dashboard before changing credentials, you’ve handed someone your VPN [2]. Use a reverse proxy with HTTPS and change the password immediately.
  • The REST API is present but documentation depth varies. Programmatic management is possible but not the feature you’re buying this for [README].

Time estimate: For a technical user comfortable with Linux: 30–60 minutes on a fresh VPS. Using the Proxmox helper script on a homelab: 10–15 minutes. For a non-technical founder following a guide for the first time: 2–4 hours, including the WireGuard setup that must precede the dashboard [1][2]. If you’ve never touched iptables or network interfaces, budget a full afternoon or have someone do the initial setup.


Pros and Cons

Pros

  • Apache 2.0 license. No strings, no usage restrictions, no “community vs enterprise” gating [README]. Self-host commercially, embed in products, fork without a lawyer.
  • Solves a real operational problem. The alternative to a dashboard is SSH + terminal every time you add a device. QR code peer onboarding alone justifies the setup time [1][2].
  • Built-in 2FA from day one. TOTP authentication is available at setup, not an afterthought or a paid feature [1][2].
  • Automatic config discovery. Existing WireGuard setups are detected without manual import [1].
  • Real-time monitoring. Handshake status, data counters, endpoint visibility — all in the browser without running wg show [1].
  • Active development. 48 releases, 49 contributors, Discord/Reddit/Matrix community, DigitalOcean-sponsored [README].
  • Multi-platform install guides. Fedora, Debian, Linux Mint, Proxmox, Docker — documented by third parties and actively maintained [1][2][4][5].
  • Docker image available for operators who want containerized deployment [README].
  • Free. No hosted version to upsell you into, no paid tier, no usage caps [README].

Cons

  • Not a turnkey VPN. WGDashboard is a management layer on top of WireGuard. If WireGuard isn’t already working on your host, the dashboard won’t help you get there. Non-technical users need to clear this prerequisite first [1].
  • Kernel compatibility risk. OpenVZ-based VPS providers may block WireGuard module loading. You need to verify VPS compatibility before committing [1]. Not a WGDashboard problem per se, but a real deployment blocker.
  • No DNS management. If you want split-DNS or ad-blocking through the VPN, you configure that separately (e.g., adding Pi-Hole to the stack) [2]. The dashboard doesn’t touch DNS.
  • No mobile app. Management is browser-only. Fine for a desk, slightly awkward when you’re adding a device on mobile.
  • REST API documentation is thin. The API exists and is listed as a canonical feature, but the documentation depth doesn’t match what you’d expect from a production-ready API surface [README].
  • SQLite only. Appropriate for small deployments, but operators running high-concurrency environments may hit limitations before switching databases becomes viable [README].
  • 3,432 stars is modest relative to some alternatives (Tailscale’s open-source Headscale client, Netbird). The project is healthy but not dominant [README].

Who should use this / who shouldn’t

Use WGDashboard if:

  • You’re already using WireGuard via CLI and want a web UI to stop logging in every time you add a device.
  • You have a homelab or VPS and you want a self-hosted VPN for remote access to local services without a commercial VPN subscription.
  • You’re running a small team (under 50 people) and want a private VPN where you control the keys.
  • You’re comfortable with basic Linux administration or have someone who is.
  • Privacy sovereignty matters to you — you want traffic to touch your infrastructure only.

Skip it (stay on commercial VPN) if:

  • You want to open the app, tap connect, and not think about infrastructure. Mullvad at $5/month does exactly that with no setup.
  • Your team has no one who can handle a Linux server. The initial setup requires technical competence that a dashboard can’t substitute for.
  • You need multi-region exit nodes — a self-hosted VPN is one server in one location. Commercial VPNs offer dozens of countries.
  • Your use case is “bypass geographic content restrictions” — your self-hosted server is one location, which limits the utility here.

Skip it (use wg-easy instead) if:

  • You want the absolute minimum: Docker, a config, and peer QR codes with zero operational surface. wg-easy is WGDashboard minus the depth, and that’s exactly right for some deployments.

Skip it (use Headscale or Netbird instead) if:

  • You need mesh networking rather than a hub-and-spoke VPN model.
  • You want Tailscale-compatible clients and ACL-based access control.
  • You’re building zero-trust network access rather than a classic VPN gateway.

Alternatives worth considering

  • wg-easy — Docker-only, minimal UI, faster to deploy, less operational depth. Good choice if you have one config and ten peers. Less good if you want 2FA, REST API, or multi-config management.
  • Headscale — Self-hosted control plane compatible with official Tailscale clients. Mesh networking instead of hub-and-spoke. More complex but solves a different problem: peer-to-peer connectivity without a central gateway.
  • Netbird — Open-source ZTNA platform. Access control policies, SSO integration, audit logs. Significantly more complex than WGDashboard but appropriate for team environments with compliance requirements.
  • Firezone — WireGuard-based VPN with an admin UI, OIDC/SAML SSO, and LDAP support. More enterprise-oriented. More complex to operate.
  • Subspace — Older WireGuard web UI, less actively developed than WGDashboard. Not recommended for new deployments.
  • Pritunl — Multi-protocol VPN with a polished UI and enterprise features. MongoDB-backed, heavier, partially open source with commercial tiers.

For a non-technical founder or small team wanting VPN for their own infrastructure: the realistic shortlist is WGDashboard vs wg-easy vs Headscale. Use WGDashboard if you want operational depth (2FA, stats, API). Use wg-easy if you want minimal setup. Use Headscale if you want mesh instead of gateway.


Bottom line

WGDashboard is what WireGuard should have shipped with: a browser UI that handles the operational friction of peer management without adding complexity to the underlying protocol. It doesn’t try to be a VPN service, a mesh network, or a zero-trust platform — it tries to be a clean admin interface for WireGuard, and it succeeds at that specific thing. The Apache 2.0 license, 48 releases, and active community suggest a project with staying power.

The honest caveat: this is a tool for operators who are already comfortable with Linux servers. The dashboard manages WireGuard; it doesn’t install it, configure network interfaces, or set up firewall rules. If the target audience is non-technical founders who’ve never touched a VPS, they need either a technical co-founder for the initial setup or a deployment service. Once it’s running, a non-technical person can manage peers through the dashboard without problems. The $4–6/month VPS cost and the one-time setup effort are real — but so is the indefinite savings against commercial VPN subscriptions and the peace of knowing your traffic never touches someone else’s servers.


Sources

  1. idroot.us“How To Install WGDashboard on Fedora 42”. https://idroot.us/install-wgdashboard-fedora-42/
  2. Ayush Pande, XDA Developers“Self-hosting your own VPN on Proxmox is easy - here’s how it’s done” (Sep 28, 2024). https://www.xda-developers.com/host-vpn-on-proxmox-guide/
  3. Tux Machines“today’s howtos” (Apr 6, 2026) — mentions WGDashboard installation guides on Linux Mint 22. https://news.tuxmachines.org/n/2026/04/06/today_s_howtos.shtml
  4. Tux Machines“today’s howtos” (Oct 29, 2025) — mentions WGDashboard installation guide on Debian 13. https://news.tuxmachines.org/n/2025/10/29/today_s_howtos.shtml

Primary sources:

Features

Integrations & APIs

  • REST API