--- title: WGDashboard created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, vpn, wireguard, dashboard, python, flask, auto-hebergement] confidence: high contested: false sources: [https://selfh.st/apps/?tag=VPN, https://github.com/WGDashboard/WGDashboard] --- # 🔐 WGDashboard > **Le tableau de bord Python pour administrer plusieurs instances WireGuard** depuis une seule interface web. Configuration, peers, QR codes, statistiques et logs centralisĂ©s. ## 📋 Informations GĂ©nĂ©rales | Champ | Valeur | | :--- | :--- | | **Site web** | (GitHub) | | **GitHub** | [WGDashboard/WGDashboard](https://github.com/WGDashboard/WGDashboard) | | **License** | MIT | | **Langage** | Python (Flask + WebSockets) | | **Étoiles GitHub** | 3,6k ⭐ | | **DerniĂšre MAJ** | 2026-05 | | **CatĂ©gorie** | [[cat-vpn|VPN]] | ## 📝 Description **WGDashboard** est une interface web self-hosted Ă©crite en Python (Flask) qui permet de gĂ©rer **plusieurs instances WireGuard simultanĂ©ment** depuis un point unique. LĂ  oĂč `wg` et `wg-quick` se pilotent en ligne de commande, WGDashboard apporte une UI claire, des graphes de trafic et des outils d'administration pensĂ©s pour les homelabs et les petites Ă©quipes. L'application lit les fichiers de configuration WireGuard standard (situĂ©s dans `/etc/wireguard`) et expose toutes les opĂ©rations via une API REST et un dashboard temps rĂ©el. Les **mises Ă  jour de configuration** (ajout de peer, rotation de clĂ©s, redĂ©marrage d'interface) se font en un clic et sont reflĂ©tĂ©es immĂ©diatement dans le tunnel. **Public cible** : admins et power users qui gĂšrent un serveur WireGuard de production et veulent Ă©viter de toucher au terminal Ă  chaque ajout de peer. Moins adaptĂ© qu'un simple [[app-wireguard|wireguard]] exposĂ© en CLI pour un seul peer. - ✅ **Multi-instances** : gĂšre N interfaces WireGuard sur le mĂȘme hĂŽte - ✅ **Peers en quelques clics** : gĂ©nĂ©ration clĂ©, QR code, configuration client - ✅ **Statistiques temps rĂ©el** : trafic par peer, handshakes, derniĂšres connexions - ✅ **One-time links** pour partager une conf sans QR code - ✅ **Blacklist / whitelist** d'IPs par peer - ✅ **Auth utilisateurs** intĂ©grĂ©e (multi-comptes) - ✅ **API REST** documentĂ©e - ✅ **Docker** ready + bare-metal (systemd) - ✅ **Logs d'audit** des actions admin - ✅ **Stack lĂ©gĂšre** : Flask + Socket.IO, pas de base de donnĂ©es externe ## 🚀 Installation ### Option 1 : Docker Compose (recommandĂ©) ```yaml # docker-compose.yml version: '3.8' services: wgdashboard: image: ghcr.io/wgdashboard/wgdashboard:latest container_name: wgdashboard restart: unless-stopped network_mode: host # Requis pour piloter les interfaces WireGuard cap_add: - NET_ADMIN - SYS_MODULE volumes: - /etc/wireguard:/etc/wireguard - wgdashboard-data:/app/data environment: - WGDASHBOARD_VERSION=latest labels: - "traefik.enable=true" - "traefik.http.routers.wgdashboard.rule=Host(`wg.example.com`)" - "traefik.http.routers.wgdashboard.entrypoints=websecure" - "traefik.http.routers.wgdashboard.tls.certresolver=letsencrypt" - "traefik.http.services.wgdashboard.loadbalancer.server.port=10086" volumes: wgdashboard-data: ``` > **Note** : `network_mode: host` est gĂ©nĂ©ralement requis pour que le conteneur puisse crĂ©er / piloter les interfaces `wg0`, `wg1`, etc. CĂŽtĂ© Traefik, on expose le port `10086` du dashboard. Les ports WireGuard eux-mĂȘmes (51820/UDP typiquement) doivent ĂȘtre publiĂ©s en UDP sur l'hĂŽte. ### Option 2 : Bare-metal (systemd) ```bash git clone https://github.com/WGDashboard/WGDashboard.git cd WGDashboard/src pip3 install -r requirements.txt python3 wgdashboard.py # puis accĂ©der Ă  http://IP:10086 ``` ## ⚙ Configuration Initiale 1. **CrĂ©er le compte admin** au premier lancement (mot de passe fort recommandĂ©) 2. **Ajouter une instance WireGuard** : Settings > Configuration > pointer vers `/etc/wireguard/wg0.conf` 3. **Activer l'interface** via l'UI (Ă©quivalent `wg-quick up wg0`) 4. **Ajouter un peer** : Peers > New > gĂ©nĂ©rer clĂ©, saisir AllowedIPs, rĂ©cupĂ©rer le QR code ou la conf 5. **Configurer les utilisateurs** : User Management > inviter un co-admin avec droits limitĂ©s 6. **Activer le HTTPS** : placer WGDashboard derriĂšre [[app-traefik|Traefik]] avec Let's Encrypt ## 🔄 Alternatives ### Open Source - [[app-wireguard]] — Le noyau lui-mĂȘme, en CLI (`wg`, `wg-quick`) - [[app-tailscale]] — Mesh VPN clĂ©-en-main, sans gestion de serveur - [[app-headscale]] — Controller Tailscale self-hosted - **wg-easy** — Wrapper Docker minimaliste pour WireGuard (mono-instance, plus simple) - **Pangolin** — Reverse proxy + WireGuard + SSO, plus complet que WGDashboard ### Comparaison WGDashboard vs alternatives WireGuard | CritĂšre | WGDashboard | wg-easy | Pangolin | CLI wg / wg-quick | | :--- | :--- | :--- | :--- | :--- | | Self-hosted | ✅ | ✅ | ✅ | ✅ | | Multi-instances | ✅ | ❌ | ✅ | ✅ | | QR code / config client | ✅ | ✅ | ✅ | ❌ (manuel) | | Statistiques trafic | ✅ | Basique | ✅ | ❌ (wg show) | | Reverse proxy intĂ©grĂ© | ❌ | ❌ | ✅ | ❌ | | SSO / auth avancĂ© | Basique | Basique | ✅ (OAuth, Authentik) | ❌ | | Licence | MIT | MIT | AGPL-3.0 | GPL-2.0 | **Verdict** : WGDashboard est l'option **intermĂ©diaire idĂ©ale** entre `wg-quick` brut et un Pangolin. Si vous avez 2-3 serveurs WireGuard ou un homelab avec beaucoup de peers, c'est le bon compromis. ### PropriĂ©taires (ce que WGDashboard remplace) - **ZeroTier Central** (controller SaaS) - **Tailscale Dashboard** (version cloud de Tailscale) - **Netbird Self-Hosted Management** (version payante) - **Pritunl** (Ă©dition commerciale) ## 🔐 SĂ©curitĂ© - **Cryptographie** : dĂ©lĂšgue intĂ©gralement Ă  **WireGuard** — ChaCha20-Poly1305 pour le chiffrement, Curve25519 pour l'Ă©change de clĂ©s, BLAKE2s pour le MAC. WGDashboard n'implĂ©mente aucun crypto lui-mĂȘme. - **ClĂ©s privĂ©es** : restent stockĂ©es sur l'hĂŽte (`/etc/wireguard`), WGDashboard ne les fait jamais transiter hors du serveur. Les **clĂ©s privĂ©es des peers** peuvent ĂȘtre gĂ©nĂ©rĂ©es cĂŽtĂ© serveur puis importĂ©es, ou importĂ©es depuis le client. - **Auth** : utilisateurs stockĂ©s dans un fichier SQLite local, mots de passe hashĂ©s (bcrypt/argon2 selon version). Activer la 2FA si disponible. - **HTTPS obligatoire** : toujours exposer derriĂšre [[app-traefik|Traefik]] avec certificat valide, **jamais en HTTP clair** car le dashboard permet de gĂ©rer des clĂ©s privĂ©es. - **Audit log** : toutes les actions (crĂ©ation peer, modification, suppression) sont journalisĂ©es avec timestamp et utilisateur. - **Isolation rĂ©seau** : envisager un rĂ©seau dĂ©diĂ© (VLAN) pour le port WireGuard UDP. - **Permissions Linux** : le binaire WireGuard a besoin de `CAP_NET_ADMIN` et `CAP_SYS_MODULE` pour charger le module kernel — limiter ces capabilities au conteneur. ## 📚 Ressources - [GitHub WGDashboard/WGDashboard](https://github.com/WGDashboard/WGDashboard) - [Wiki officielle](https://github.com/WGDashboard/WGDashboard/wiki) - [WireGuard — site officiel](https://www.wireguard.com/) - [Docker Hub — wgdashboard](https://hub.docker.com/r/wgdashboard/wgdashboard) ## Pages LiĂ©es - [[cat-vpn]] — CatĂ©gorie VPN - [[app-wireguard]] — Le moteur sous-jacent - [[app-tailscale]] — Alternative mesh VPN - [[app-headscale]] — Controller Tailscale self-hosted - [[app-traefik]] — Pour exposer en HTTPS - [[securisation-home-lab]] — Bonnes pratiques sĂ©curitĂ© homelab