Defguard is an enterprise-grade open-source VPN solution built with the highest security standards in mind. It provides the world’s only multi-factor authentication (MFA) for WireGuard VPN connections, using either its built-in SSO (with TOTP, biometrics, etc.) or external SSO providers such as Google, Microsoft, Active Directory/LDAP, Okta, JumpCloud or any other OpenID Connect Provider.
Website | Getting Started | Features | Roadmap | Support ❤
Open, transparent, verifiable and inspectable
See:
Defguard makes it easy to manage complex VPN networks in a secure way
Video introduction
Bear in in mind we are no youtubers - just engineers - here is a video introduction to defguard:
Control plane management (this video is few versions behind… - a lot has changed!)


Better quality video can be viewed here
Desktop Client with 2FA / MFA (Multi-Factor Authentication)
Light

Dark

Desktop client:
- 2FA / Multi-Factor Authentication with TOTP or email based tokens & WireGuard PSK
- automatic and real-time synchronization for users’ desktop client settings (including all VPNs/locations).
- Control users ability to manage devices and VPN options
- Defguard instances as well as any WireGuard tunnel - just import your tunnels - one client for all WireGuard connections
- Secure and remote user enrollment - setting up password, automatically configuring the client for all VPN Locations/Networks
- Onboarding - displaying custom onboarding messages, with templates, links …
- Ability to route predefined VPN traffic or all traffic (server needs to have NAT configured - in gateway example)
- Live & real-time network charts
- live VPN logs
- light/dark theme
Quick start
The easiest way to run your own defguard instance is to use Docker and our one-line install script.
Just run the command below in your shell and follow the prompts:
curl --proto '=https' --tlsv1.2 -sSf -L https://raw.githubusercontent.com/DefGuard/deployment/main/docker-compose/setup.sh -O && bash setup.sh
Here is a step-by-step video about this process:
To learn more about the script and available options please see the documentation.
Setup a VPN server in under 5 minutes !?
Just follow this tutorial
Manual deployment examples
Roadmap & Development backlog
A detailed product roadmap and development status can be found here
⛑️ Want to help? ⛑️
Here is a dedicated view for good first bugs
Features
- Remote Access: WireGuard® VPN server with:
- Multi-Factor Authentication with TOTP/Email & Pre-Shared Session Keys
- multiple VPN Locations (networks/sites) - with defined access (all users or only Admin group)
- multiple Gateways for each VPN Location (high availability/failover) - supported on a cluster of routers/firewalls for Linux, FreeBSD/PFSense/OPNSense
- import your current WireGuard® server configuration (with a wizard!)
- most beautiful Desktop Client! (in our opinion ;-))
- automatic IP allocation
- automatic and real-time synchronization for users’ desktop client settings (including all VPNs/locations).
- control users ability to manage devices and VPN options
- kernel (Linux, FreeBSD/OPNSense/PFSense) & userspace WireGuard® support with our Rust library
- dashboard and statistics overview of connected users/devices for admins
- defguard is not an official WireGuard® project, and WireGuard is a registered trademark of Jason A. Donenfeld.
- Identity & Account Management:
- Account Lifecycle Management:
- SSH & GPG public key management in user profile - with SSH keys authentication for servers
- Yubikey hardware keys provisioning for users by one click
- Email/SMTP support for notifications, remote enrollment and onboarding
- Easy support with sending debug/support information
- Webhooks & REST API
- Built with Rust for portability, security, and speed
- UI Library - our beautiful React/TypeScript UI is a collection of React components:
- a set of custom and beautiful components for the layout
- Responsive Web Design (supporting mobile phones, tablets, etc…)
- iOS Web App
- Checked by professional security researchers (see comprehensive security report)
- End2End tests
Documentation
See the documentation for more information.
Community and Support
Reach out to our community via GitHub Discussions
License
The code in this repository is available under a dual licensing model:
- Open Source License: The code, except for the contents of the “crates/defguard_core/src/enterprise” directory, is licensed under the AGPL license (see file LICENSE.md in this repository). This applies to the open core components of the software.
- Enterprise License: All code in this repository (including within the “crates/defguard_core/src/enterprise” directory) is licensed under a separate Enterprise License (see file crates/defguard_core/src/enterprise/LICENSE.md).
Contributions
Please review the Contributing guide for information on how to get started contributing to the project. You might also find our environment setup guide handy.
Verifiability of releases
We provide following ways to verify the authenticity and integrity of official releases:
Docker Image Verification with Cosign
All official Docker images are signed using Cosign. To verify a Docker image:
-
Install cosign CLI
-
Verify the image signature (replace <IMAGE_TAG> with the tag you want to verify):
cosign verify --certificate-identity-regexp="https://github.com/DefGuard/defguard" \
--certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
ghcr.io/defguard/defguard:<IMAGE_TAG>
Release Asset Verification
All release assets (binaries, packages, etc.) include SHA256 checksums that are automatically generated and published with each GitHub release:
-
Download the release asset and copy its corresponding checksum from the releases page
-
Verify the checksum:
# Linux/macOS
echo known_sha256_checksum_of_the_file path/to/file | sha256sum --check
Legal
WireGuard® is registered trademarks of Jason A. Donenfeld.
评论