Fast and secure WireGuard VPN server installer for Linux. Install a production-ready WireGuard server in minutes on any VPS or cloud server.
- ๐ Quick Installation: One command to set up a complete WireGuard server
- ๐ Secure by Default: Uses modern cryptography and secure defaults
- ๐ณ Container Support: Works on both bare metal and containerized environments (LXC, Docker)
- ๐ฏ Multiple DNS Options: Google, Cloudflare, Quad9, AdGuard, Gcore, or custom DNS
- ๐ฑ QR Code Generation: Instant QR codes for mobile client setup
- ๐ Easy Client Management: Add, remove, and manage clients interactively
- ๐ Multi-Distribution: Supports Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS, and Fedora
- Ubuntu: 22.04 LTS or higher
- Debian: 11 (Bullseye) or higher
- AlmaLinux / Rocky Linux / CentOS: 9 or higher
- Fedora: Latest stable releases
- Root access or sudo privileges
- Public IPv4 address (or NAT with port forwarding)
- At least 512 MB RAM
- 1 GB free disk space
- TUN device must be available
- x86_64 architecture (if WireGuard kernel module is not available)
Run as root:
wget https://raw.githubusercontent.com/yuryja/wireguard-everywhere/main/install.sh -O install.sh
sudo bash install.shOr with curl:
curl -O https://raw.githubusercontent.com/yuryja/wireguard-everywhere/main/install.sh
sudo bash install.shThe installer will guide you through:
- IP Address Selection: Choose which network interface to use
- Public IP/Hostname: Enter your server's public IP or domain name
- Port Selection: Choose WireGuard listening port (default: 51820)
- First Client Name: Name for your first VPN client
- DNS Server: Select DNS provider for VPN clients
- BoringTun Updates (containers only): Enable automatic updates
After installation, you'll get:
- A QR code for mobile clients
- A
.conffile for desktop clients - Instructions for adding more clients
- Install the WireGuard app from App Store or Google Play
- Scan the QR code displayed after installation
- Enable the VPN connection
- Install WireGuard from wireguard.com
- Import the
.conffile generated by the installer - Activate the connection
Run the script again to access the management menu:
bash install.shAvailable options:
- Add a new client: Create additional VPN client configurations
- Remove an existing client: Revoke access for a client
- Remove WireGuard: Completely uninstall WireGuard
- Restart WireGuard: Restart the VPN service
- Exit: Close the menu
- PresharedKey (PSK): Additional layer of security beyond public key cryptography
- Modern Ciphers: Uses ChaCha20 for encryption and Poly1305 for authentication
- Minimal Attack Surface: Only opens the configured WireGuard port
- HTTPS for External Services: All external API calls use HTTPS
The installer automatically detects containerized environments and uses:
- Kernel Module (preferred): If WireGuard kernel module is available
- BoringTun (fallback): Userspace implementation for containers without kernel module
- TUN device must be enabled
- For LXC containers, add to container config:
lxc.cgroup2.devices.allow: c 10:200 rwm lxc.mount.entry: /dev/net dev/net none bind,create=dir
- VPN Subnet: 10.7.0.0/24 (IPv4)
- VPN Subnet: fddd:2c4:2c4:2c4::/64 (IPv6, if available)
- Default Port: 51820/UDP
- Max Clients: 253
The installer automatically configures:
- firewalld (RHEL-based systems)
- iptables (Debian-based systems)
| Provider | IPv4 Addresses |
|---|---|
| System Default | Uses your server's DNS |
| 8.8.8.8, 8.8.4.4 | |
| Cloudflare | 1.1.1.1, 1.0.0.1 |
| OpenDNS | 208.67.222.222, 208.67.220.220 |
| Quad9 | 9.9.9.9, 149.112.112.112 |
| Gcore | 95.85.95.85, 2.56.220.2 |
| AdGuard | 94.140.14.14, 94.140.15.15 |
| Custom | Your own DNS servers |
systemctl status wg-quick@wg0wg showjournalctl -u wg-quick@wg0 -fWireGuard Everywhere now includes a lightweight web interface to manage your VPN clients visually.
- ๐ Dashboard: View active clients and statistics
- โ Client Management: Create, delete, enable, and disable clients
- ๐ฑ QR Codes: Display QR codes for easy mobile setup
- ๐ฅ Downloads: Download
.conffiles directly - ๐ Secure: Password protected login
- ๐ Multi-language: Supports English, Spanish, Portuguese, French, and Italian
-
Start the Web Interface:
sudo ./start_web.sh
-
Access the Interface: Open your browser and navigate to
http://YOUR_SERVER_IP:5000 -
Login:
- Default Username:
admin - Default Password: The script will print a secure randomly generated password on first launch. Save this password!
- Default Username:
- Python 3
- Root privileges (to manage wireguard interface)
Port already in use
# Check what's using the port
ss -tulpn | grep :51820TUN device not available (containers)
# Check if TUN is available
ls -l /dev/net/tunKernel module not loading
# Check if module is loaded
lsmod | grep wireguardContributions are welcome! Please feel free to submit issues or pull requests.
If you find this project useful, you can support my work here:
This project is released under the MIT License.
- Original installer logic: Copyright (c) 2020 Nyr
- Web Interface & Modifications: Copyright (c) 2026 Yury Jajitzky
This software is provided "as is", without warranty of any kind. Use at your own risk.
This project is significantly based on the excellent wireguard-install script.
- Web Interface & Extended Features: Yury Jajitzky
- Original Installer Logic: Nyr
- WireGuardยฎ: Jason A. Donenfeld
- BoringTun: Cloudflare
WireGuard is a registered trademark of Jason A. Donenfeld.