Files
2026-06-09 18:40:21 +02:00

168 lines
8.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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](https://wg-easy.com/) (le projet vit surtout sur GitHub) |
| **GitHub** | [wg-easy/wg-easy](https://github.com/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|VPN & Réseau privé]] |
## 📝 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)
```yaml
# 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/UDP` doit ê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)
```bash
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
1. **Rediriger le port 51820/UDP** sur votre box/routeur vers le serveur wg-easy
2. **Accéder à l'UI web** : `https://wg.example.com` (ou `http://IP:51821` la première fois)
3. **Changer le mot de passe admin** (variable `PASSWORD` dans docker-compose)
4. **Activer le 2FA** : Settings → TOTP (compatible avec [[app-2fauth]])
5. **Créer un client** : bouton "New Client", choisir un nom, **scanner le QR code** avec l'app mobile WireGuard
6. **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 `config` chiffré ([[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](https://github.com/wg-easy/wg-easy)
- [Documentation officielle](https://github.com/wg-easy/wg-easy/blob/master/Advanced%20usage.md)
- [WireGuard.com](https://www.wireguard.com/) — Site du protocole
- [WireGuard quickstart](https://www.wireguard.com/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