---
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
