Files
wiki/Catalogue-Self-Hosted/apps/app-wgdashboard.md
T
2026-06-09 18:40:21 +02:00

7.4 KiB


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
License MIT
Langage Python (Flask + WebSockets)
Étoiles GitHub 3,6k
Dernière MAJ 2026-05
Catégorie [[cat-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 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é)

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

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

Pages Liées