Transparence affiliation - Cet article contient des liens affiliés Contabo. Si vous prenez un VPS via eux, nous touchons une commission sans surcoût pour vous.
Taper une clé privée en base64 sur le clavier d'un téléphone est assez pénible pour que beaucoup finissent par copier leurs configs via une messagerie, ce qui est pire. Le code QR existe pour éviter les deux.
C'est une seule commande, et la partie qui mérite d'être lue, c'est ce qui se passe après le scan.
Pas encore de config, ou pas de terminal sous la main ? Notre générateur de config WireGuard crée le fichier serveur et une config client par appareil, chacune avec son code QR, entièrement dans votre navigateur : les clés sont générées localement avec Curve25519 et rien n'est envoyé à un serveur. Il ne convertit pas un .conf existant ; pour cela, l'outil est qrencode, présenté ci-dessous. Pas encore de serveur non plus ? Les fichiers qu'il écrit tournent sur n'importe quel VPS avec une IPv4 publique, par exemple un VPS Cloud 4 Contabo à 5,50 €/mois (lien affilié, engagement 24 mois, TVA comprise).
En générer un
Installez l'encodeur :
apt install qrencode # Debian, Ubuntu
dnf install qrencode # Fedora, RHEL
Puis, sur la machine qui contient la config client :
qrencode -t ansiutf8 < /etc/wireguard/client1.conf
Le code apparaît dans le terminal, dessiné en caractères blocs. Ouvrez WireGuard sur le téléphone, ajoutez un tunnel, choisissez le scan d'un code QR et pointez l'appareil photo vers l'écran. Le tunnel est ajouté avec son nom, ses adresses, ses clés et son pair, au complet.
Il n'y a pas de format spécial. Le code QR contient le fichier de config en texte brut. Tout ce qui sait lire un code QR peut lire votre config.
La taille est rarement une contrainte ici. Une config client WireGuard typique pèse quelques centaines d'octets, et la norme QR va jusqu'à la version 40, une grille de 177 sur 177 modules qui contient 2 953 octets au plus bas de ses quatre niveaux de correction d'erreur. Une config y tient largement, et c'est précisément pour cela que l'ensemble, clé privée comprise, voyage dans une seule image.
Pour obtenir un fichier plutôt qu'un dessin dans le terminal :
qrencode -o client1.png < /etc/wireguard/client1.conf
Si le code ne se scanne pas, les causes habituelles sont une police de terminal qui déforme les blocs, ou une config très longue. -t utf8 au lieu de ansiutf8 produit un rendu plus petit, et réduire la taille de la police du terminal aide plus que tout le reste.

La partie qui compte
Une config client WireGuard contient PrivateKey : une clé Curve25519 de 32 octets, écrite sous forme de 44 caractères base64 sur une seule ligne. Le code QR contient la config. Donc le code QR est la clé privée, dans un format conçu pour être lu à distance par un appareil photo.
Cela change la façon de le manipuler :
- Ne le photographiez pas. Une photo part dans votre pellicule et, sur la plupart des téléphones, directement dans une sauvegarde en ligne.
- Ne le mettez ni dans un message ni dans un e-mail. Ce sont deux copies stockées que vous ne contrôlez pas.
- Effacez le terminal après le scan.
clearseul ne vide pas l'historique de défilement. Utilisezreset, ou fermez complètement la fenêtre du terminal. - Supprimez les fichiers PNG immédiatement. Un
client1.pngqui traîne dans un répertoire personnel survit à la raison pour laquelle il a été créé. - Ne l'affichez pas à portée d'un appareil photo, ce qui, dans un bureau partagé, inclut la fenêtre derrière vous.
Une clé privée par client : c'est la règle que le code QR rend facile à enfreindre. Générer une seule config et la scanner sur trois téléphones donne la même identité aux trois, et le serveur ne peut alors plus les distinguer, ne peut pas en révoquer un seul, et routera mal le trafic quand deux sont connectés en même temps. L'ajout d'un pair distinct par appareil est détaillé dans ajouter un pair WireGuard.
Générer d'abord la config, si vous n'en avez pas
Le code QR est la dernière étape. Avant cela, le client a besoin d'une paire de clés et d'une entrée de pair sur le serveur :
wg genkey | tee client1.key | wg pubkey > client1.pub
Il faut ensuite une config qui référence la clé publique du serveur, son endpoint et les AllowedIPs, ainsi qu'un bloc [Peer] correspondant sur le serveur contenant client1.pub. Oublier le côté serveur est la raison la plus fréquente pour laquelle un tunnel scanné ne se connecte à rien : le téléphone est configuré, mais le serveur n'en a jamais entendu parler.
Si vous préférez ne pas écrire les fichiers à la main, le générateur de config produit les deux côtés en une fois (le [Interface] du serveur avec chaque bloc [Peer], plus un fichier client et un code QR par appareil), de sorte que le téléphone que vous scannez et le serveur auquel il parle sont cohérents dès le départ.
Le serveur a besoin d'une adresse IP publique que votre téléphone peut joindre depuis un réseau mobile. Une connexion domestique derrière un CGNAT n'en a pas (vérifiez la vôtre avec le vérificateur de port WireGuard) ; un petit VPS en a une, pour environ 5 € par mois.
★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · port 200 Mbit/s
Un serveur WireGuard que votre téléphone joint toujours → Contabo Cloud VPS 45,50 €/mois (relevé le 18 oct. 2026, 24 premiers mois) · IPv4 publique fixe · 4 vCPU, 8 Go de RAM→Les guides complets, côté serveur compris, se trouvent dans l'installation de WireGuard avec PiVPN pour un Raspberry Pi et l'auto-hébergement sur un VPS pour un serveur loué. Les deux génèrent des configs client que vous pouvez envoyer directement à qrencode.
Si le scan fonctionne mais pas le tunnel
Le code QR a fait son travail dès que le tunnel apparaît dans l'application. Tout ce qui suit relève du WireGuard ordinaire.
Vérifiez que le téléphone affiche une poignée de main récente. Un pair en bonne santé refait une poignée de main environ toutes les 120 secondes, donc tout ce qui dépasse deux minutes environ sur un tunnel actif est un symptôme et non une pause. Si ce n'est pas le cas, suivez le dépannage de la poignée de main : adresse de l'endpoint, port joignable depuis l'extérieur (51820/UDP par défaut), pare-feu du serveur et entrée du pair. Si la poignée de main réussit mais que les pages restent bloquées, c'est le MTU, un cas particulièrement fréquent sur les réseaux mobiles.
Les notes de configuration propres à chaque plateforme se trouvent dans configurer WireGuard sur Android et configurer WireGuard sur iOS.
★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · port 200 Mbit/s
Héberge ton VPN sur ton propre VPS → ContaboAccès root complet · IPv4 publique · choisis ta région→


