Démarrage rapide (Docker)¶
C'est la méthode recommandée pour utiliser WireGuard UI en production ou pour le tester rapidement.
Prérequis¶
- Docker (et Docker Compose si vous utilisez la méthode Compose).
- Les capacités réseau nécessaires pour manipuler des interfaces WireGuard : le conteneur doit tourner avec
NET_ADMINet certainssysctlactivés (voir ci-dessous).
Étape 1 — Docker CLI¶
docker run -d \
--name wireguard-ui \
--cap-add NET_ADMIN \
--sysctl net.ipv4.ip_forward=1 \
--sysctl net.ipv4.conf.all.src_valid_mark=1 \
-p 8000:8000 \
-p 51820:51820/udp \
-e ADMIN_USERNAME=admin \
-e SECRET_KEY=your-secret-key \
-v wg_config:/etc/wireguard \
-v wireguard-ui_data:/var/lib/wireguard-ui \
cyrius44/wireguard-ui:latest
Ouvrez ensuite http://localhost:8000.
Étape 2 — Docker Compose (alternative)¶
services:
wireguard-ui:
image: cyrius44/wireguard-ui:latest
container_name: wireguard-ui
restart: unless-stopped
cap_add:
- NET_ADMIN
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
ports:
- "8000:8000"
- "51820:51820/udp"
environment:
- ADMIN_USERNAME=admin
- SECRET_KEY=your-secret-key
volumes:
- wg_config:/etc/wireguard
- wireguard-ui_data:/var/lib/wireguard-ui
volumes:
wg_config:
wireguard-ui_data:
Étape 3 — Récupérer le mot de passe admin¶
Au tout premier démarrage, le backend exécute seed_initial_data() (services/seed.py) qui crée :
- les rôles
adminetuser; - un compte administrateur (
ADMIN_USERNAME, par défautadmin) avec un mot de passe généré aléatoirement ; - les réglages globaux, OIDC et SMTP par défaut.
Ce mot de passe n'est affiché qu'une seule fois, dans les logs du conteneur :
Changez-le immédiatement depuis la page Profil une fois connecté.
Étape 4 — Vérifier que le service est en bonne santé¶
Pourquoi ces cap_add / sysctl sont nécessaires¶
| Paramètre | Rôle |
|---|---|
--cap-add NET_ADMIN |
Autorise la création/gestion de l'interface wg0 et des règles iptables depuis le conteneur. |
net.ipv4.ip_forward=1 |
Active le routage IP nécessaire pour relayer le trafic des pairs vers le réseau. |
net.ipv4.conf.all.src_valid_mark=1 |
Nécessaire pour que WireGuard puisse valider les sources après le marquage de paquets (fwmark). |
Ports exposés¶
| Port | Usage |
|---|---|
8000/tcp |
Interface web + API REST |
51820/udp |
Port d'écoute WireGuard pour les pairs |
Volumes persistants¶
| Volume | Point de montage | Contenu |
|---|---|---|
wg_config |
/etc/wireguard |
Configuration WireGuard (wg0.conf, clés) |
wireguard-ui_data |
/var/lib/wireguard-ui |
Base de données SQLite, clé secrète générée |
SECRET_KEY recommandée en production
Sans SECRET_KEY défini explicitement, l'application en génère une automatiquement au démarrage et la persiste dans /var/lib/wireguard-ui/secret_key — aucun blocage. En production, définissez tout de même une valeur longue et aléatoire vous-même pour partager les sessions entre plusieurs réplicas ou survivre à une perte du volume de données — voir Variables d'environnement et Recommandations production.
Étape suivante¶
Une fois l'interface accessible, la première configuration côté administrateur consiste à :
- Se connecter avec le compte admin.
- Configurer le serveur WireGuard — page Serveur : adresse réseau (CIDR), port d'écoute, puis cliquer sur Generate Key Pair pour générer la paire de clés (privée/publique) du serveur. Cette étape est indispensable : tant qu'aucune clé n'est générée (ou renseignée manuellement), la configuration ne peut pas être enregistrée ni appliquée.
- Renseigner l'adresse d'endpoint — page Global Settings, champ Endpoint Address : il s'agit du nom d'hôte public (ex.
vpn.exemple.com) ou de l'adresse IP publique par laquelle les clients WireGuard joindront le serveur. Sans cette valeur, les fichiers de configuration générés pour les clients seront incorrects et ces derniers ne pourront pas se connecter — pensez-y avant de créer des pairs. - Créer les premiers pairs (clients) — page Clients.
- Éventuellement configurer SMTP (envoi de la config par email) et OIDC (SSO).
Ordre important
Générez toujours les clés du serveur et renseignez l'adresse d'endpoint avant de créer des clients. Un pair créé avant que ces deux éléments soient définis produira une configuration .conf/QR code invalide (clé publique du serveur ou endpoint manquants), qu'il faudra régénérer et renvoyer au client une fois le serveur correctement configuré.
Ces écrans correspondent aux routers documentés dans Routers (endpoints) (server.py pour les clés, settings.py pour l'endpoint).