🛠️ Tutos · ⏱ 10 min de lecture

Monter son propre VPN WireGuard sur un VPS en 2026 : le guide complet

Tutoriel 2026 pour auto-héberger un VPN WireGuard sur un VPS Linux : installation, génération des clés, configuration serveur et clients (mobile, PC), routage et NAT, kill switch et DNS. Commandes exactes et configs prêtes à l'emploi.

S Par Équipe Selfhostr · tests indépendants
Monter son propre VPN WireGuard sur un VPS en 2026 : le guide complet
ⓘ Cet article peut contenir des liens affiliés (sans surcoût pour toi, ça soutient nos tests). Voir la disclosure.
💰
≈4 €/mois
Prix VPS
⏱️
20-30 min
Temps d'install
🔌
UDP 51820
Port par défaut
💻
quelques milliers
Lignes de code

👍 On aime

  • Contrôle total des données sans journalisation par un tiers
  • Code léger intégré au noyau Linux pour des performances optimales
  • Configuration simple avec génération de clés et routage NAT automatisé
  • Support natif via QR code pour une connexion rapide sur mobile

👎 On regrette

  • Requiert un accès root ou sudo sur le serveur VPS
  • Configuration manuelle du NAT et du forwarding IP nécessaire
  • Vérification préalable du blocage UDP par l'hébergeur requise
📑 Sommaire

Les VPN commerciaux sont pratiques, mais vous payez un abonnement pour faire confiance à un tiers sur vos données. Monter votre propre VPN WireGuard sur un VPS change la donne : vous obtenez une IP fixe que vous contrôlez, un tunnel chiffré moderne, et la certitude qu’aucun journal de connexion n’est revendu, puisque c’est vous l’opérateur. Idéal pour sécuriser votre trafic sur le Wi-Fi public, accéder à distance à votre homelab, ou simplement avoir une sortie Internet propre.

WireGuard s’est imposé comme le standard en 2026 : il tient en quelques milliers de lignes de code (contre des centaines de milliers pour OpenVPN), il est intégré au noyau Linux, et il est nettement plus rapide. Dans ce guide, on installe WireGuard sur un VPS, on génère les clés serveur et clients, on configure le routage et le NAT pour faire transiter tout le trafic, et on connecte un téléphone (via QR code) et un ordinateur. À la fin, vous aurez un VPN personnel fonctionnel et sécurisé.

Prérequis

WireGuard fonctionne en UDP sur le port 51820 par défaut. Assurez-vous que votre hébergeur ne bloque pas l’UDP entrant (rare, mais à vérifier).

Étape 1 : Installer WireGuard

Sur Ubuntu/Debian, WireGuard est dans les dépôts standard :

sudo apt update
sudo apt install -y wireguard wireguard-tools

Le module noyau est inclus dans Linux depuis la version 5.6, donc rien d’autre à compiler. Vérifiez la disponibilité des outils :

wg --version

Étape 2 : Activer le routage IP sur le serveur

Pour que le VPS puisse router le trafic de vos clients vers Internet, activez le forwarding IP. Éditez la configuration sysctl :

sudo nano /etc/sysctl.d/99-wireguard.conf

Ajoutez :

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

Appliquez sans redémarrer :

sudo sysctl --system

Vérifiez :

sysctl net.ipv4.ip_forward

La sortie doit afficher net.ipv4.ip_forward = 1.

Étape 3 : Générer les clés du serveur

WireGuard utilise une cryptographie à clés publiques/privées. Générez la paire de clés du serveur dans un répertoire protégé :

sudo mkdir -p /etc/wireguard
sudo chmod 700 /etc/wireguard
cd /etc/wireguard
umask 077
wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key

La commande umask 077 garantit que les fichiers de clés ne sont lisibles que par root. Affichez les deux clés, vous en aurez besoin :

echo "PRIVÉE serveur : $(sudo cat /etc/wireguard/server_private.key)"
echo "PUBLIQUE serveur : $(sudo cat /etc/wireguard/server_public.key)"

Étape 4 : Identifier l’interface réseau de sortie

Le NAT a besoin de connaître l’interface qui sort vers Internet. Trouvez-la :

ip route get 1.1.1.1 | grep -oP 'dev \K\S+'

Notez le nom retourné (souvent eth0, ens3 ou enp1s0). On l’utilisera dans la config. Dans la suite, on suppose eth0 ; remplacez par le vôtre.

Étape 5 : Créer la configuration du serveur

Créez le fichier d’interface wg0 :

sudo nano /etc/wireguard/wg0.conf

Collez la configuration suivante en remplaçant CLE_PRIVEE_SERVEUR par la clé privée du serveur et eth0 par votre interface de sortie :

[Interface]
# Adresse du serveur dans le réseau VPN privé
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = CLE_PRIVEE_SERVEUR

# Active le NAT pour que les clients accèdent à Internet via le VPS
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Les blocs [Peer] des clients seront ajoutés plus bas

On a choisi le sous-réseau privé 10.8.0.0/24 pour le VPN. Le serveur est 10.8.0.1, les clients prendront 10.8.0.2, 10.8.0.3, etc.

Sécurisez le fichier :

sudo chmod 600 /etc/wireguard/wg0.conf

Étape 6 : Ouvrir le port dans le pare-feu

Si vous utilisez UFW (recommandé), autorisez le port WireGuard :

sudo ufw allow 51820/udp
sudo ufw reload

Vérifiez que la règle est bien présente :

sudo ufw status | grep 51820

Étape 7 : Démarrer le serveur WireGuard

WireGuard s’intègre à systemd via wg-quick. Activez et démarrez l’interface :

sudo systemctl enable --now wg-quick@wg0

Vérifiez que l’interface est montée :

sudo wg show

Vous voyez l’interface wg0 avec sa clé publique et le port d’écoute. Aucun peer pour l’instant, c’est normal.

Étape 8 : Configurer un premier client (smartphone)

Générez une paire de clés pour le client (chaque client a la sienne). Toujours sur le serveur, dans /etc/wireguard :

cd /etc/wireguard
umask 077
wg genkey | sudo tee client_phone_private.key | wg pubkey | sudo tee client_phone_public.key

Déclarer le client côté serveur

Ajoutez un bloc [Peer] à la fin de /etc/wireguard/wg0.conf :

sudo nano /etc/wireguard/wg0.conf
[Peer]
# Téléphone
PublicKey = CLE_PUBLIQUE_DU_CLIENT_PHONE
AllowedIPs = 10.8.0.2/32

AllowedIPs = 10.8.0.2/32 indique au serveur que ce peer est joignable à l’adresse 10.8.0.2. Rechargez la configuration sans couper les connexions existantes :

sudo systemctl restart wg-quick@wg0

Créer le fichier de config du client

Sur le serveur, préparez le contenu de la config client. Récupérez d’abord les valeurs nécessaires :

echo "PRIVÉE client : $(sudo cat /etc/wireguard/client_phone_private.key)"
echo "PUBLIQUE serveur : $(sudo cat /etc/wireguard/server_public.key)"

La configuration du client ressemble à ceci (à adapter) :

[Interface]
PrivateKey = CLE_PRIVEE_DU_CLIENT_PHONE
Address = 10.8.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = CLE_PUBLIQUE_SERVEUR
Endpoint = 203.0.113.10:51820
# Tout le trafic passe par le VPN (VPN « full tunnel »)
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Remplacez 203.0.113.10 par l’IP publique de votre VPS. Le AllowedIPs = 0.0.0.0/0 côté client signifie « route tout le trafic dans le tunnel », c’est ce qui fait de ce VPN un VPN complet. PersistentKeepalive = 25 maintient le tunnel ouvert derrière les NAT, utile en mobilité.

Générer un QR code pour le téléphone

Le plus simple pour configurer un mobile : afficher la config en QR code à scanner avec l’app WireGuard. Installez l’outil et générez le code (collez la config client dans un fichier temporaire d’abord) :

sudo apt install -y qrencode
# Créez le fichier client puis :
qrencode -t ansiutf8 < /tmp/client_phone.conf

Ouvrez l’application WireGuard sur votre téléphone, choisissez « Ajouter un tunnel > Scanner un QR code », scannez, activez le tunnel. Supprimez immédiatement le fichier temporaire contenant la clé privée :

shred -u /tmp/client_phone.conf

Étape 9 : Connecter un ordinateur (Linux / Windows / macOS)

Pour un ordinateur, on procède de même : une paire de clés dédiée, un bloc [Peer] côté serveur avec AllowedIPs = 10.8.0.3/32, et un fichier .conf côté client identique à celui du téléphone (en changeant la clé privée et l’adresse 10.8.0.3/32).

Sur Linux, placez la config dans /etc/wireguard/wg0.conf et lancez :

sudo wg-quick up wg0

Sur Windows et macOS, installez l’application officielle WireGuard, importez le fichier .conf, et activez le tunnel d’un clic.

Vérification

Une fois le tunnel actif sur un client, contrôlez côté serveur que la poignée de main a eu lieu :

sudo wg show

Vous devez voir, sous le peer, une ligne latest handshake récente et des compteurs transfer qui montent. Côté client, vérifiez votre IP publique : elle doit désormais être celle de votre VPS.

curl -s https://api.ipify.org && echo

Testez aussi que le DNS ne fuit pas (les requêtes DNS doivent passer par le serveur configuré dans DNS =). Visitez un site de test de fuite DNS depuis le client connecté.

Bonnes pratiques et sécurité

  • Une clé par appareil. Ne partagez jamais la même paire de clés entre plusieurs clients : si un appareil est perdu, vous révoquez uniquement son peer sans impacter les autres.
  • Révoquer un client se fait en supprimant son bloc [Peer] du wg0.conf puis en redémarrant le service. La clé devient inutile instantanément.
  • Split tunnel. Si vous ne voulez router que l’accès à votre homelab (et pas tout votre trafic), remplacez côté client AllowedIPs = 0.0.0.0/0 par le sous-réseau concerné, ex. 10.8.0.0/24, 192.168.1.0/24.
  • Kill switch. L’app mobile WireGuard propose une option « Bloquer le trafic hors VPN ». Sur desktop, wg-quick peut ajouter des règles de pare-feu pour empêcher toute fuite si le tunnel tombe.
  • DNS privé. Pour ne dépendre d’aucun résolveur public, hébergez un AdGuard Home ou Pi-hole sur le VPS et pointez DNS = 10.8.0.1 côté client.
  • Sauvegardez /etc/wireguard. Ce dossier contient toutes vos clés ; incluez-le dans votre stratégie de backup (voir sauvegardes chiffrées avec restic).

FAQ

WireGuard est-il vraiment plus rapide qu’OpenVPN ?

Oui, nettement. Grâce à son intégration au noyau et à une base de code minimaliste, WireGuard offre un débit supérieur et une latence plus faible qu’OpenVPN, surtout sur mobile où l’établissement de connexion est quasi instantané. Le compromis : moins d’options de configuration ésotériques, mais pour 99 % des usages c’est un avantage. Voir WireGuard vs OpenVPN vs Tailscale.

Mon propre VPN est-il plus anonyme qu’un VPN commercial ?

Différent, pas forcément plus anonyme. Vous avez la garantie qu’aucun log n’est revendu, et le contrôle total. Mais l’IP de sortie est unique et associée à vous (louée à votre nom chez l’hébergeur), donc ce n’est pas adapté à l’anonymat de masse. C’est excellent pour la confidentialité du trafic, l’accès distant et le contournement de Wi-Fi non sûrs. Pour de l’anonymat fort, un VPN no-log multi-utilisateurs reste pertinent : voir notre comparatif des meilleurs VPN.

Que faire si la connexion ne s’établit pas (pas de handshake) ?

Vérifiez dans l’ordre : le port 51820/udp est bien ouvert (sudo ufw status), l’Endpoint côté client pointe vers la bonne IP publique, le forwarding IP est actif (sysctl net.ipv4.ip_forward), et la clé publique du client déclarée côté serveur correspond bien. Un sudo wg show sans handshake indique presque toujours un blocage réseau ou une erreur de clé/endpoint.

Combien de clients puis-je connecter ?

Des dizaines sans problème sur un petit VPS : WireGuard est extrêmement léger en CPU et RAM. La limite pratique est plutôt la bande passante de votre VPS et le quota de trafic mensuel de votre offre. Chaque client a juste besoin de son bloc [Peer] et d’une adresse unique dans le sous-réseau 10.8.0.0/24.

Puis-je accéder à mon réseau local domestique via ce VPN ?

Oui, c’est un cas d’usage classique. Si votre homelab est sur le même VPS ou accessible depuis lui, ajoutez le sous-réseau concerné dans les AllowedIPs du client. Pour atteindre un réseau derrière une autre machine, il faut configurer cette machine comme peer relais avec le routage adéquat.

Sur le même sujet

Vous disposez maintenant d’un VPN personnel chiffré, rapide et entièrement sous votre contrôle. Ajoutez vos appareils au fil de l’eau et pensez à sauvegarder vos clés. Pour suivre les nouveautés du self-hosting et les bons plans VPS, rejoignez notre bot de veille Telegram.

Tags : wireguardvpnvpslinuxréseauselfhostingvie privée

Sur le même sujet

🛠️ Tutos

Héberger Nextcloud sur un VPS en 2026 : guide complet (Docker, HTTPS, performances, sauvegardes)

Guide technique 2026 pour déployer Nextcloud sur VPS via Docker. Dimensionnement, optimisation PostgreSQL/Redis, HTTPS et stratégie de backup fiable.

Lire
🛠️ Tutos

Installer et sécuriser un VPS Ubuntu 24.04 en 2026 : le guide complet de A à Z

Tutoriel complet 2026 pour installer et durcir un VPS Ubuntu 24.04 : clés SSH, désactivation du root, UFW, fail2ban, mises à jour automatiques et bonnes pratiques de hardening. Commandes exactes prêtes à copier.

Lire
🛠️ Tutos

Sauvegardes chiffrées automatiques avec restic et Backblaze B2 en 2026 (guide complet)

Tutoriel 2026 pour automatiser des sauvegardes chiffrées de votre serveur vers Backblaze B2 avec restic : dépôt chiffré, planification systemd, politique de rétention, vérification d'intégrité et procédure de restauration testée.

Lire