Initial vault setup
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user