Offre de lancement — -20% sur tous les VPS avec le code NVH20 · Déploiement en 60 secondes
Accueil / Documentation / Installation
Installation

Monter son propre VPN WireGuard sur un VPS

Par Équipe NVHCloud 2026-09-18 Lecture : 4 min

WireGuard est un VPN moderne intégré au noyau Linux : quelques lignes de configuration, un chiffrement récent et des performances nettement supérieures à OpenVPN. Sur un VPS, il crée un réseau privé entre vos appareils et le serveur. Ce guide monte un serveur WireGuard et configure un premier client en une quinzaine de minutes.

1. À quoi ça sert sur un VPS

  • Accéder à des services sans les exposer : base de données, panneau txAdmin, Netdata, interface d'administration. Ils n'écoutent que sur le réseau privé du VPN, et restent invisibles depuis Internet.
  • Relier plusieurs serveurs entre eux par un réseau chiffré, par exemple un serveur de jeu et sa base de données.
  • Faire sortir votre trafic par le VPS, pour naviguer depuis un réseau Wi-Fi public avec une connexion chiffrée jusqu'en France.

Les exemples utilisent le réseau privé 10.8.0.0/24 : le serveur y prend l'adresse 10.8.0.1, les appareils 10.8.0.2, 10.8.0.3, etc.

2. Installer WireGuard

apt update && apt install -y wireguard qrencode

qrencode servira à configurer un téléphone en scannant un QR code.

3. Générer les clés

Chaque participant, serveur comme appareil, possède une paire de clés : la clé privée reste sur la machine, la clé publique est donnée aux autres. Générez celles du serveur et d'un premier client :

cd /etc/wireguard
umask 077
wg genkey | tee serveur.key | wg pubkey > serveur.pub
wg genkey | tee client1.key | wg pubkey > client1.pub

umask 077 garantit que les fichiers de clés ne sont lisibles que par root.

4. Configurer le serveur

Repérez d'abord le nom de l'interface réseau publique du VPS :

ip route show default

Le nom apparaît après dev, souvent eth0 ou ens18. Créez ensuite /etc/wireguard/wg0.conf, en remplaçant les valeurs entre chevrons par le contenu des fichiers de clés :

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <contenu de serveur.key>
# sortie Internet des clients par le VPS (remplacez eth0 si besoin)
PostUp   = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

[Peer]
# client1 : ordinateur portable
PublicKey = <contenu de client1.pub>
AllowedIPs = 10.8.0.2/32

Les lignes PostUp et PostDown ne servent que si vous voulez faire sortir le trafic Internet des clients par le VPS. Dans ce cas, activez aussi le routage :

echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-wireguard.conf
sysctl --system

Ouvrez enfin le port dans le pare-feu, et autorisez le routage si UFW est actif :

ufw allow 51820/udp comment 'WireGuard'
ufw route allow in on wg0 out on eth0

5. Configurer un client

Installez l'application WireGuard officielle sur votre appareil (Windows, macOS, Linux, Android ou iOS). La configuration du client ressemble à ceci :

[Interface]
PrivateKey = <contenu de client1.key>
Address = 10.8.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = <contenu de serveur.pub>
Endpoint = IP_DU_VPS:51820
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25

La ligne AllowedIPs décide de ce qui passe par le VPN :

  • 10.8.0.0/24 : seul le trafic vers le réseau privé passe par le VPN. Votre navigation reste sur votre connexion habituelle. C'est le bon choix pour administrer vos serveurs.
  • 0.0.0.0/0, ::/0 : tout le trafic passe par le VPS. Nécessite les lignes PostUp et le routage de l'étape précédente.

PersistentKeepalive maintient la connexion ouverte derrière une box ou un réseau mobile. Pour un téléphone, enregistrez la configuration dans client1.conf sur le serveur et affichez-la sous forme de QR code, à scanner dans l'application :

qrencode -t ansiutf8 < client1.conf

Supprimez ensuite les fichiers client1.key et client1.conf du serveur : la clé privée d'un appareil n'a rien à faire sur le VPS.

6. Démarrer et vérifier

systemctl enable --now wg-quick@wg0
wg show

Activez le tunnel dans l'application du client, puis relancez wg show : une ligne latest handshake récente confirme que la connexion est établie. Depuis le client, ping 10.8.0.1 doit répondre.

Pas de handshake ? Vérifiez dans l'ordre : le port 51820 en UDP dans le pare-feu, l'adresse du VPS dans Endpoint, et que chaque côté possède bien la clé publique de l'autre.

7. Réserver un service au VPN

C'est l'usage le plus utile sur un VPS. Pour qu'un service ne soit joignable qu'à travers le VPN, ouvrez son port uniquement depuis le réseau privé :

ufw allow from 10.8.0.0/24 to any port 3306 proto tcp comment 'MariaDB via VPN'
ufw allow from 10.8.0.0/24 to any port 40120 proto tcp comment 'txAdmin via VPN'

Pour une base de données, faites-la écouter sur 10.8.0.1 en plus de l'adresse locale. Vous pouvez même réserver SSH au VPN, mais gardez alors un accès de secours, comme la console de secours (VNC) de l'espace client. Voir aussi sécuriser MariaDB et configurer UFW.

8. Ajouter des appareils

Pour chaque nouvel appareil : générez une paire de clés, ajoutez un bloc [Peer] dans wg0.conf avec l'adresse suivante (10.8.0.3/32, etc.), puis appliquez sans couper les connexions existantes :

wg syncconf wg0 <(wg-quick strip wg0)

Pour révoquer un appareil perdu, supprimez son bloc [Peer] et relancez la même commande.

Questions fréquentes

WireGuard ou OpenVPN ?
WireGuard pour un nouveau projet : sa configuration tient en quelques lignes, il est intégré au noyau Linux et nettement plus rapide. OpenVPN reste utile si vous devez passer par un réseau qui ne laisse sortir que le port 443 en TCP, car WireGuard fonctionne uniquement en UDP.
Un VPN WireGuard sur un VPS permet-il de jouer avec moins de latence ?
Rarement. Le VPN ajoute un détour par le VPS, donc de la latence, sauf si le chemin de votre fournisseur d'accès vers le serveur de jeu est particulièrement mauvais. Son intérêt principal est la sécurité et l'accès à vos services privés.
Combien d'appareils peut-on connecter ?
Autant que vous voulez : un bloc Peer par appareil, chacun avec sa propre adresse dans le réseau privé. La consommation de ressources de WireGuard est très faible, même avec des dizaines de clients.
Mon client se connecte mais n'accède pas à Internet, pourquoi ?
Si AllowedIPs vaut 0.0.0.0/0 côté client, le serveur doit router le trafic : vérifiez que net.ipv4.ip_forward vaut 1, que les lignes PostUp utilisent le bon nom d'interface, et que UFW autorise le routage de wg0 vers l'interface publique.