8.7 KiB
title: wg-easy created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, vpn, wireguard, tunneling, web-ui, typescript, beginner] confidence: high contested: false sources: [https://selfh.st/apps/?tag=VPN, https://github.com/wg-easy/wg-easy]
🔐 wg-easy
Le moyen le plus simple d'exposer un serveur WireGuard avec une interface web — configure, crée des clients et partage des QR codes en 5 minutes chrono.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | wg-easy.com (le projet vit surtout sur GitHub) |
| GitHub | wg-easy/wg-easy |
| License | MIT |
| Langage | TypeScript (Node.js + Vue.js) |
| Étoiles GitHub | 25 944 ⭐ |
| Dernière MAJ | 2026-06-06 |
| Catégorie | [[cat-vpn |
📝 Description
wg-easy est un wrapper convivial autour de WireGuard qui ajoute une interface web moderne pour gérer votre serveur VPN. Au lieu d'éditer à la main wg0.conf et de générer des clés avec wg genkey, vous obtenez un dashboard propre permettant d'ajouter/supprimer des clients, de télécharger des .conf ou de scanner un QR code depuis l'app mobile WireGuard. C'est le "Nextcloud du VPN" : simple, focalisé, parfait pour 1 serveur VPN partagé entre 5 et 50 utilisateurs.
Le projet, anciennement connu sous le nom "wg-easy" de angristan puis repris par l'organisation wg-easy, a explosé en popularité pendant l'explosion du télétravail post-2020. Sa force est de ne rien ajouter au protocole WireGuard — c'est juste un frontal de gestion. Vous gardez 100% de la performance, de la sécurité et de la philosophie "small surface area" de WireGuard.
- ✅ Installation en 1 commande Docker (image
ghcr.io/wg-easy/wg-easy) - ✅ UI web multilingue (EN/FR/DE/ES…) avec thèmes sombre/clair
- ✅ QR codes dynamiques pour app mobile WireGuard (iOS/Android)
- ✅ Export de configuration :
.conf, QR code, envoi par email optionnel - ✅ Gestion de la bande passante par client (monitoring)
- ✅ IPv4 + IPv6 supportés
- ✅ Mises à jour automatiques du kernel : utilise le module WireGuard natif du noyau
- ✅ Métriques simples : dernier handshake, octets transférés par client
- ✅ 2FA (depuis la v14) via TOTP pour l'accès au dashboard
- ✅ Backup/restore simple (un volume Docker)
Public cible : homelabbers qui veulent un VPN site-à-client (road warrior) sans prise de tête, petites structures (5-50 employés), associations. Idéal pour 1 serveur VPN unique. Pour des besoins multi-régions ou un mesh dynamique entre pairs, préférer app-headscale ou app-tailscale.
Vs OpenVPN + Pihole VPN : WireGuard est 2-4× plus rapide, plus simple à configurer et plus économe en énergie. OpenVPN reste utile uniquement pour des contraintes corporate ou clients exotiques.
🚀 Installation
Option 1 : Docker Compose (recommandé, ultra-simple)
# docker-compose.yml
version: '3.8'
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv6.conf.all.forwarding=1
environment:
- LANG=fr
- WG_HOST=wg.example.com # IP publique ou DNS
- PASSWORD=ChangeMeStrongP@ss # Mot de passe UI web
- WG_DEFAULT_DNS=1.1.1.1,9.9.9.9
- WG_ALLOWED_IPS=10.8.0.0/24,192.168.0.0/24 # VPN + LAN
- WG_PERSISTENT_KEEPALIVE=25
volumes:
- ./config:/etc/wireguard
ports:
- "51820:51820/udp" # WireGuard
- "51821:51821/tcp" # UI Web (peut être proxifié par Traefik)
labels:
- "traefik.enable=true"
- "traefik.http.routers.wg-easy.rule=Host(`wg.example.com`)"
- "traefik.http.routers.wg-easy.entrypoints=websecure"
- "traefik.http.routers.wg-easy.tls.certresolver=letsencrypt"
- "traefik.http.routers.wg-easy.service=wg-easy-svc"
- "traefik.http.services.wg-easy-svc.loadbalancer.server.port=51821"
⚠️ Le port
51820/UDPdoit être accessible depuis Internet (NAT/PAT du routeur). Si vous êtes derrière un NAT (CGN, 4G), utiliser un VPS relais ou app-tailscale à la place.
Option 2 : Bare-metal (Debian/Ubuntu)
sudo apt update && sudo apt install -y wireguard qrencode
# Suivre ensuite https://github.com/wg-easy/wg-easy#manual-installation
# Générer clés : wg genkey | tee privatekey | wg pubkey > publickey
# Configurer /etc/wireguard/wg0.conf
sudo systemctl enable --now wg-quick@wg0
⚙️ Configuration Initiale
- Rediriger le port 51820/UDP sur votre box/routeur vers le serveur wg-easy
- Accéder à l'UI web :
https://wg.example.com(ouhttp://IP:51821la première fois) - Changer le mot de passe admin (variable
PASSWORDdans docker-compose) - Activer le 2FA : Settings → TOTP (compatible avec app-2fauth)
- Créer un client : bouton "New Client", choisir un nom, scanner le QR code avec l'app mobile WireGuard
- Tester : depuis le client, vérifier l'IP publique (
curl ifconfig.me) et l'accès au LAN (ping 192.168.1.1)
🔄 Alternatives
Open Source
- app-wireguard — Le noyau dur, sans UI
- app-wgdashboard — Alternative Python, multi-instance
- app-openvpn + OpenVPN Access Server (libre mais features payantes)
- app-tailscale / app-headscale — Mesh dynamique, plus évolué
- PiVPN — Script bash pour installer WireGuard sur Raspberry Pi
- Algo — VPN WireGuard auto-hébergé pour voyage (by Trail of Bits)
Propriétaires
- NordVPN (client lourd, no-log claimé, juridiction Panama)
- ExpressVPN (propriétaire Lightway protocol, audits PwC/Cure53)
- Mullvad VPN (5€/mois, no account, no email, accepte cash/crypto)
- ProtonVPN (suisse, intégré à Proton Mail/Drive, plan gratuit limité)
- CyberGhost (grand public, no-logs claimé)
- Cisco AnyConnect (entreprise, propriétaire)
Comparaison wg-easy vs alternatives
| Critère | wg-easy | OpenVPN | Tailscale | NordVPN |
|---|---|---|---|---|
| Self-hosted | ✅ | ✅ | ❌ (Headscale oui) | ❌ |
| Prix | Gratuit | Gratuit (AS payante) | Freemium | ~3-12€/mois |
| UI web | ✅ (incluse) | ❌ (AS payante) | ✅ | ✅ |
| Performance | Très rapide | Modérée | Très rapide | Rapide |
| Configuration | 5 min | 30 min | 2 min | 0 min |
| Logs | Aucun (toi) | Aucun (toi) | Métadonnées (Tailscale) | Claim "no-log" |
| Juridiction | Toi | Toi | USA | Panama |
| Idéal pour | 1 serveur, 5-50 users | Legacy, compatibilité | Mesh multi-machines | Grand public |
Verdict : wg-easy est le standard de fait pour un VPN WireGuard simple et auto-hébergé. Si vous avez besoin d'un mesh dynamique entre pairs dispersés, migrez vers Tailscale/Headscale.
🔐 Sécurité
- ✅ WireGuard moderne : Curve25519 (ECDH), ChaCha20-Poly1305 (AEAD), BLAKE2s (hash) — cryptographie de pointe, code audité
- ⚠️ Visibilité IP publique : WireGuard fait du routage IP ; le serveur voit les IPs publiques de chaque client. Pour un anonymat fort, combiner avec Tor (SOCKS5 via wg)
- ✅ Clés privées : générées localement, JAMAIS exportées du serveur. Sauvegarder le volume
configchiffré (app-vaultwarden pour les secrets, VeraCrypt ou age pour le dossier de backup) - ✅ 2FA obligatoire sur l'UI web d'admin (TOTP, compatible app-2fauth)
- ✅ Logs d'audit : activer les logs kernel WireGuard (
dmesg -w | grep wg), exporter vers app-loki ; surveiller les handshakes échoués - ✅ Posture zero-trust : ne pas donner accès au dashboard à n'importe qui, créer un user dédié par client (ou par device)
- ⚠️ Pas de MFA par client : wg-easy gère l'admin, pas l'authentification des clients (c'est juste "qui a la clé privée, passe"). Pour du MFA par user, préférer app-defguard ou app-authentik + OpenVPN
📚 Ressources
- GitHub wg-easy/wg-easy
- Documentation officielle
- WireGuard.com — Site du protocole
- WireGuard quickstart
Pages Liées
- cat-vpn — Catégorie VPN & Réseau privé
- app-wireguard — Le protocole sous-jacent
- app-tailscale — Alternative mesh
- app-openvpn — Le "vieux" VPN
- app-traefik — Reverse proxy / HTTPS
- securisation-home-lab — Bonnes pratiques globales
- glossaire-homelab — Définitions réseau
- comparatif-vpn-mesh — Comparatif global