Entre les Wi-Fi publics non sécurisés et les restrictions réseau à l’étranger, rien ne vaut un accès direct à son propre réseau local. Grâce à WireGuard et un simple serveur Ubuntu, vous pouvez vous connecter à distance comme si vous étiez physiquement chez vous. Imprimante, domotique, disques partagés, tout devient accessible via une connexion chiffrée, rapide et discrète. Voici comment créer votre propre VPN personnel ou professionnel.
- Pourquoi créer son propre VPN WireGuard ?
- Prérequis pour créer votre VPN WireGuard
- Installation de WireGuard sur Ubuntu
- Configuration de base du serveur WireGuard
- Installation de Docker et Docker Compose
- Déploiement de l’interface WGDashboard avec Docker Compose
- Lancer l’interface web
- Accéder à l’interface Web de WGDashboard
- Créer un client VPN (Peer)
- Installer le client WireGuard
Pourquoi créer son propre VPN WireGuard ?
Mettre en place son propre serveur VPN avec WireGuard sur Ubuntu, c’est bien plus qu’un simple projet technique : c’est reprendre le contrôle total sur ses connexions, ses données et son réseau. Contrairement aux VPN commerciaux qui promettent l’anonymat mais vous imposent leurs règles (et parfois leurs limites), un serveur WireGuard auto-hébergé vous offre une solution personnalisée, transparente, et hautement sécurisée, les avantages sont multiples :
- Sécurité renforcée : le chiffrement moderne de WireGuard repose sur des protocoles sécurisés (Curve25519, ChaCha20…) et une base de code ultra-légère, réduisant considérablement les risques de vulnérabilité.
- Confidentialité maîtrisée : aucun tiers n’intervient dans le transit de vos données.
- Accès distant à votre réseau local : que vous soyez à l’autre bout du monde ou simplement en déplacement, vous pouvez retrouver tous vos appareils comme si vous étiez chez vous : NAS, imprimantes, box domotique, caméras IP, etc.
- Contournement des restrictions réseau : dans certains lieux (hôtels, entreprises, pays), l’accès à certains services peut être bloqué. Grâce à votre propre VPN, vous faites transiter tout votre trafic via votre domicile comme si vous n’aviez jamais quitté votre canapé.
Face à des alternatives comme OpenVPN (plus lourd, plus complexe à configurer) ou PPTP (dépassé et peu sécurisé), WireGuard se démarque par sa sa rapidité et sa robustesse.
Prérequis pour créer votre VPN WireGuard
Avant de commencer, assurez-vous d’avoir :
- Un serveur Ubuntu 22.04+ (serveur ou PC Single Board)
- Une connexion Internet avec IP publique
- Le port UDP 51820 redirigé vers le serveur (via votre box/routeur)
Installation de WireGuard sur Ubuntu
La première étape pour mettre en place votre VPN consiste à installer WireGuard, un protocole VPN moderne, rapide et sécurisé.
Commencez par mettre à jour votre système afin de garantir que tous les paquets sont à jour :
sudo apt update && sudo apt upgrade -y
Ensuite, installez WireGuard ainsi que ses outils :
sudo apt install wireguard wireguard-tools -y
Le routage IP est indispensable pour permettre aux clients du VPN d’accéder à Internet via votre serveur. Activez-le à l’aide de la commande suivante :
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Configuration de base du serveur WireGuard
Créez les clés privées et publiques du serveur. Ces clés sont nécessaires pour établir un canal de communication chiffré :
cd /etc/wireguard
umask 077
sudo wg genkey | tee server_private.key | wg pubkey > server_public.key
Ensuite, récupérez la clé privée (vous en aurez besoin pour la configuration) :
cat /etc/wireguard/server_private.key
Créez le fichier de configuration principal de l’interface VPN :
sudo nano /etc/wireguard/wg0.conf
Collez le contenu suivant en remplaçant <COLLEZ_ICI_LE_CONTENU_DE_server_private.key>
par votre clé privée :
[Interface]
Address = 10.10.0.1/24
PrivateKey = <COLLEZ_ICI_LE_CONTENU_DE_server_private.key>
ListenPort = 51820
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Remarque : si votre interface réseau principale n’est pas eth0
(dans le cas d’un VPS par exemple), pensez à la remplacer par le nom correct (vous pouvez le vérifier avec la commande ip route show default | grep '^default' | awk '{print $5}'
).
Lancez le service WireGuard et configurez-le pour qu’il démarre automatiquement au démarrage du système :
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
Vérifiez que le VPN fonctionne correctement :
sudo wg show
Installation de Docker et Docker Compose
Pour utiliser une interface de gestion graphique comme WGDashboard, Docker est requis. Procédez à son installation :
sudo apt install docker.io docker-compose -y
sudo systemctl enable docker
sudo systemctl start docker
Installation du binaire Docker Compose (en fonction de l’architecture)
Créez d’abord le répertoire où sera placé le binaire Docker Compose :
sudo mkdir -p /usr/local/lib/docker/cli-plugins
Puis téléchargez la version adaptée à votre système :
- Pour les systèmes ARM64 (Raspberry Pi, serveurs ARM, etc.) :
sudo curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-aarch64 -o /usr/local/lib/docker/cli-plugins/docker-compose
- Si vous êtes sur un PC ou VPS (x86_64) :
sudo curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
Rendez le binaire exécutable :
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
Vérifiez les versions installées :
docker --version docker compose version
Déploiement de l’interface WGDashboard avec Docker Compose
Créez un nouveau dossier pour contenir les fichiers de configuration de WGDashboard :
mkdir ~/wg-dashboard && cd ~/wg-dashboard
nano docker-compose.yml
Collez le contenu suivant dans le fichier docker-compose.yml
:
version: "3.8"
services:
wg-dashboard:
container_name: wg-dashboard
image: ghcr.io/donaldzou/wgdashboard:latest
ports:
- "10086:10086"
volumes:
- ./data:/app/db
- /etc/wireguard:/etc/wireguard
restart: unless-stopped
environment:
- WG_CONF_DIR=/etc/wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
network_mode: "host"
Lancer l’interface web
Démarrez le conteneur :
docker compose up -d
Puis vérifiez que le conteneur est bien en cours d’exécution :
docker ps
Accéder à l’interface Web de WGDashboard
Une fois WGDashboard installé et fonctionnel, il est possible de le gérer depuis une interface web accessible via un simple navigateur. Pour cela, saisissez l’adresse suivante dans la barre d’adresse de votre navigateur :
http://<IP-de-votre-serveur>:10086
Par défaut, l’interface est protégée par un identifiant et un mot de passe initialement définis sur :
- Utilisateur :
admin
- Mot de passe :
admin
Dès la première connexion, vous serez invité à personnaliser ces identifiants afin de sécuriser l’accès.

Il est également recommandé d’activer l’authentification à deux facteurs (2FA), disponible dans les paramètres, pour renforcer la protection contre les accès non autorisés.

Créer un client VPN (Peer)
Depuis l’interface principale, vous verrez s’afficher la connexion VPN en cours.

Pour ajouter un nouveau client, cliquez sur cette connexion, puis sur l’onglet intitulé « Peer ».

Vous pourrez alors créer un nouveau client VPN en lui attribuant un nom (par exemple : Poste de travail, Portable, Smartphone, etc.).

Une fois le peer créé, WGDashboard génère automatiquement le fichier de configuration correspondant. Vous pourrez ensuite le télécharger au format .conf
.

Ce fichier est conçu pour être directement utilisé par les clients WireGuard, mais il nécessite parfois une légère modification, en particulier si votre serveur utilise une adresse IPv6.
Prenons un exemple de fichier généré automatiquement :
[Interface] PrivateKey = MEWI0s1Va/Hmv9bIjMThg1HShP8XIs069hDOafLtgWM= Address = 10.10.0.2/32 MTU = 1420 DNS = 9.9.9.9 [Peer] PublicKey = itwr+yW2BpsVJgCMPiNXA5HglNwgoydEyHh1RGCxPRQ= AllowedIPs = 0.0.0.0/0 Endpoint = 2a01:e0a:4b7:2500:dea6:32ff:fe02:4409:51820 PersistentKeepalive = 21
Dans cet exemple, l’adresse du champ Endpoint
est une adresse IPv6. Or, pour être correctement interprétée par le client WireGuard, cette adresse doit obligatoirement être encadrée par des crochets. Sans cela, le client refusera de l’importer ou affichera une erreur.
Le fichier corrigé devrait donc ressembler à ceci :
[Interface] PrivateKey = MEWI0s1Va/Hmv9bIjMThg1HShP8XIs069hDOafLtgWM= Address = 10.10.0.2/32 MTU = 1420 DNS = 9.9.9.9 [Peer] PublicKey = itwr+yW2BpsVJgCMPiNXA5HglNwgoydEyHh1RGCxPRQ= AllowedIPs = 0.0.0.0/0 Endpoint = [2a01:e0a:4b7:2500:dea6:32ff:fe02:4409]:51820 PersistentKeepalive = 21
Ce simple ajustement permet d’éviter les erreurs d’importation du fichier dans le client WireGuard.
⚠️ Ce fichier contient les clés privées et les informations de connexion au serveur VPN. Il permet un accès direct à votre réseau local. Par conséquent, ne le partagez jamais avec des tiers. Dans cet exemple, il s’agit d’un environnement de test. Le serveur a depuis été désactivé.
Installer le client WireGuard
Pour établir la connexion VPN, il vous faut maintenant installer le client WireGuard sur l’appareil que vous souhaitez connecter (ordinateur, smartphone, etc.).
Rendez-vous sur le site officiel de WireGuard et téléchargez le client adapté à votre système d’exploitation (Windows, macOS, Linux, Android ou iOS).
Installez l’application, puis ouvrez-la.

Cliquez sur « Importer un tunnel à partir d’un fichier » et sélectionnez le fichier .conf
que vous avez préalablement modifié.
Une fois importé, cliquez sur « Activer » pour établir la connexion VPN.

Une fois la connexion activée, l’ensemble de votre trafic passera par le tunnel WireGuard. Vous pouvez vérifier que la connexion est bien active en consultant votre adresse IP publique via un service en ligne tel que ifconfig.me. Si tout est correctement configuré, l’adresse IP affichée sera celle de votre serveur VPN, et non celle de votre connexion Internet habituelle.