Ce guide d'installation du serveur Xray VLESS Reality vous accompagne dans le déploiement d'un proxy moderne sur votre VPS. La configuration VLESS avec la couche de sécurité de transport Reality est actuellement la plus demandée pour les proxys auto-hébergés : contrairement à un VPN classique, elle ne génère ni poignée de main distinctive ni signature de paquet fixe. Reality clone la poignée de main TLS 1.3 d'un véritable site web populaire (la cible), de sorte que pour un système DPI surveillant le trafic, une connexion à votre serveur est identique à celle d'un utilisateur visitant ce site web : aucun certificat falsifié ou auto-signé ne peut être identifié, car votre serveur transmet brièvement le certificat réel du site cible lors de la poignée de main.
La pile de protocoles est la suivante : VLESS (un protocole proxy léger et sans état gérant l’authentification) fonctionnant sur XTLS Vision (un mode de contrôle de flux qui accélère la connexion en copiant les enregistrements TLS déjà chiffrés au niveau brut du socket), le tout étant sécurisé par Reality (la couche de camouflage décrite précédemment). Ces trois éléments proviennent du même projet, Xray-core, successeur activement maintenu du projet original V2Ray/V2Fly.
Ce guide vous explique comment configurer un serveur Xray manuellement, entièrement en ligne de commande, sans interface web ni Docker — une empreinte minimale sur votre VPS. Aucun nom de domaine ni certificat TLS ne sont nécessaires : Reality utilise le certificat du site cible pour l’établissement de la connexion et n’en présente jamais un. Ensuite, à l’emplacement indiqué « votre_IP », vous devrez saisir votre adresse IP.
Ce dont vous aurez besoin : un VPS exécutant Ubuntu 22.04/24.04 ou Debian 11/12, un accès root, l'adresse IP de votre VPS et le port TCP 443 libre (aucun serveur web, panneau ou autre proxy n'est déjà à l'écoute sur ce port).
Vous n'avez pas encore de serveur ? Consultez la page « Comment commander un serveur et le payer ».
Vous souhaitez d'abord comparer cette solution avec d'autres options auto-hébergées ? Consultez le guide de déploiement du serveur AmneziaWG pour une alternative basée sur WireGuard, ou la configuration Hysteria2 et TUIC pour deux autres protocoles modernes résistants à la censure.
Connexion au serveur
Windows (PuTTY)
Ouvrez PuTTY, entrez l'adresse IP de votre VPS dans le champ Nom d'hôte, définissez le port sur 22 et connectez-vous en tant que root en utilisant le mot de passe que votre fournisseur de VPS vous a envoyé par e-mail.
Adresse IP du serveur : votre adresse IP
Se connecter en tant que : root
Mot de passe : votre mot de passe
- Ouvrez PuTTY et saisissez l'adresse IP de votre VPS dans le champ Nom d'hôte.
- Configurez le port sur 22.
- Saisissez « connection as root ».
- Utilisez le mot de passe que votre fournisseur VPS vous a envoyé par e-mail. Vous devriez alors accéder à l'invite de commande du serveur.
Pour une description détaillée de la connexion via PuTTY/SSH, consultez Comment se connecter à un serveur Linux via SSH.
Linux / macOS (terminal)
ssh root@your_IP
Toutes les commandes ci-dessous sont exécutées sur le serveur, dans cette même session SSH — cela couvre les sections 2 à 6, ainsi que les vérifications côté serveur de la section 10. Les sections 7 à 9 (installation et configuration du client VPN) se déroulent quant à elles sur votre propre appareil Windows/Android/iOS, puisque c'est sur cet appareil que le proxy doit s'exécuter ; chacune de ces sections indique explicitement quelles lignes, le cas échéant, touchent encore le serveur.
Préparation du serveur
Mettre à jour le système
Avant toute installation, actualisez la liste des paquets et mettez à jour les paquets installés :
apt update -y && apt upgrade -y
Si la session est interrompue après la mise à jour d'apt, c'est normal (dbus/polkit redémarré) - il suffit de se reconnecter via SSH.
Si cette opération met à jour le noyau, il est conseillé de redémarrer l'ordinateur avant de continuer. (Pour un rappel sur apt et le fonctionnement des gestionnaires de paquets Linux, consultez la documentation relative aux gestionnaires de paquets Linux .) Vérifiez auprès de :
cat /var/run/reboot-required
Si le fichier existe, redémarrez d'abord avec la commande « reboot », attendez environ 30 secondes, puis reconnectez-vous.
Installez les outils utilisés dans ce guide
apt install -y curl wget unzip openssl ufw qrencode
Curl et unzip sont nécessaires à l'installateur Xray lui-même ; openssl génère l'identifiant court dans la section 4 ; ufw est le pare-feu configuré ci-dessous ; qrencode transforme le lien client final en un code QR scannable dans la section 7.
Vérifiez l'horloge système
La procédure d'authentification TLS inclut une vérification de l'horodatage (champ maxTimeDiff, désactivé par défaut mais utile à connaître). Un décalage d'horloge notable peut également perturber la validation des certificats TLS sur le serveur. Assurez-vous que l'horloge est synchronisée.
timedatectl status
Si « Horloge système synchronisée » affiche « non », activez-la avec :
timedatectl set-ntp true
Configurer le pare-feu (UFW)
Pour plus d'informations sur les règles UFW, consultez Configuration du pare-feu sous Linux.
Ouvrez les deux ports dont vous aurez besoin : le port 22/tcp pour SSH (ignorez cette règle et vous risquez de perdre l’accès au serveur) et le port 443/tcp, le port sur lequel Xray écoutera et le même port que celui utilisé par le trafic HTTPS ordinaire — c’est précisément pourquoi c’est le bon choix pour Reality.
ufw allow 22/tcp
ufw allow 443/tcp
ufw --force enable
ufw status
Les deux règles devraient apparaître comme AUTORISÉES dans la sortie d'état ufw.
Installation de Xray-core pour VLESS Reality Server
Le projet Xray-core (XTLS) publie un script d'installation et de mise à jour officiel qui installe le binaire en tant que service systemd. Vérifiez tout script tiers avant de l'exécuter dans bash ; celui-ci provient directement du dépôt du projet.
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
Vérifiez que le fichier binaire est bien présent et contrôlez la version installée :
/usr/local/bin/xray version
Si la sortie de la commande est paginée et semble bloquée, appuyez sur Q pour quitter. Le binaire Xray est installé sur /usr/local/bin/xrayet ses fichiers de configuration sont stockés dans /usr/local/etc/xray/.
Vous pouvez également utiliser le même script d'installation pour mettre à niveau une installation existante. Pour obtenir la liste complète des options (y compris la suppression, les mises à jour des données géographiques uniquement et la rotation des journaux), exécutez :
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" --help
Génération des clés et des identifiants
L'authentification Reality repose sur quatre éléments de données. Générez-les tous maintenant ; vous les collerez dans la configuration du serveur à la section 5.
Générer un UUID pour le client
/usr/local/bin/xray uuid
Il s'agit de l'identifiant utilisateur VLESS ; considérez-le comme une authentification, car il permet au client de se connecter au serveur. Répétez la commande pour chaque appareil ou personne supplémentaire à qui vous souhaitez accorder l'accès.
Générez la paire de clés Reality X25519
/usr/local/bin/xray x25519
Ceci affiche trois lignes : PrivateKey , Password et Hash32 . PrivateKey est réservée à la configuration du serveur et ne doit jamais être partagée. Password correspond à la clé publique ; malgré son nom, c’est cette valeur que chaque client saisit. Xray a renommé ce champ de PublicKey à Password afin d’éviter toute divulgation imprudente. Hash32 est utilisé uniquement pour la fonctionnalité de chiffrement VLESS et n’est pas nécessaire pour une configuration Reality.
Générer un identifiant court
openssl rand -hex 8
Cela génère une chaîne hexadécimale de 16 caractères permettant de distinguer les différents clients ou groupes de clients. Le serveur et le client doivent utiliser la même valeur.
Choisissez et testez une cible de réalité
La cible est le site web réel dont votre serveur imite la négociation TLS. Ce site doit prendre en charge TLS 1.3 et HTTP/2, ne doit pas se trouver derrière un CDN comme Cloudflare (Xray redirige tout trafic dont l'authentification Reality échoue directement vers la cible ; une cible utilisant un CDN peut donc transformer votre serveur en relais ouvert pour ce CDN), et idéalement être hébergé dans la même région réseau que votre VPS pour une latence réaliste. Testez un site candidat directement depuis le serveur :
/usr/local/bin/xray tls ping www.microsoft.com:443
Utilisez le nom d'hôte complet, et non une URL. Voici quelques domaines couramment utilisés comme cibles Reality car ils sont stables, compatibles TLS 1.3 et ne passent pas par un CDN : www.microsoft.com, addons.mozilla.org, dl.google.com. Testez-en quelques-uns et choisissez celui qui répond de manière fiable depuis votre VPS ; vous utiliserez le même nom d'hôte comme cible et dans l'entrée serverNames de la section 5.
Rédaction de la configuration du serveur
Sauvegardez la configuration fournie par le programme d'installation, puis ouvrez le fichier pour le modifier :
cp /usr/local/etc/xray/config.json /usr/local/etc/xray/config.json.orig
nano /usr/local/etc/xray/config.json
Ouvrez le fichier de configuration pour le modifier :
nano /usr/local/etc/xray/config.json
Remplacez l'intégralité du fichier par le modèle ci-dessous, en substituant votre propre UUID, PrivateKey, identifiant court et nom d'hôte cible de la section 4 (et le port que vous avez ouvert dans la section 2, si vous l'avez modifié par rapport à 443) :
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"listen": "0.0.0.0",
"port": 443,
"protocol": "vless",
"settings": {
"users": [
{
"id": "YOUR-UUID-HERE",
"flow": "xtls-rprx-vision",
"email": "client1"
}
],
"decryption": "none"
},
"streamSettings": {
"method": "raw",
"security": "reality",
"realitySettings": {
"show": false,
"target": "www.microsoft.com:443",
"serverNames": ["www.microsoft.com"],
"privateKey": "YOUR-SERVER-PRIVATE-KEY",
"shortIds": ["YOUR-SHORT-ID"]
}
}
}
],
"outbounds": [
{ "protocol": "freedom", "tag": "direct" },
{ "protocol": "blackhole", "tag": "blocked" }
]
}
Appuyez sur Ctrl+O (WriteOut) pour enregistrer le fichier.
Appuyez sur Entrée pour confirmer le nom du fichier.
Appuyez sur Ctrl+X pour quitter nano.
Les champs importants : `users[].id` correspond à l’UUID de la section 4 ; `users[].flow` active XTLS Vision ; `method` (anciennement `network`) sélectionne le transport RAW, la méthode TCP simple requise par Reality ; `target` et `serverNames` correspondent au site testé dans la section 4 ; `privateKey` est la clé X25519 côté serveur, jamais la valeur du mot de passe ; `shortIds` liste tous les identifiants courts autorisés pour les clients. Pour ajouter d’autres utilisateurs ultérieurement, ajoutez des objets supplémentaires au tableau `users`, chacun avec son propre UUID et son adresse e-mail, puis redémarrez le service.
Depuis Xray 26.3.27, une requête Reality entrante sans champ minClientVer explicite impose la version du noyau du serveur par défaut. Les anciennes applications clientes (une version obsolète de v2rayN, v2rayNG ou une version Streisand intégrant un noyau Xray ancien) sont redirigées silencieusement vers la page de secours de la cible au lieu de se connecter, sans erreur côté client ni anomalie apparente dans les journaux du serveur. Si un client fonctionnel cesse soudainement de se connecter après une mise à jour, commencez par mettre à jour l'application cliente elle-même. Si cela s'avère impossible, ajoutez « minClientVer : "25.9.11" (ou une autre version antérieure) dans realitySettings, au risque de rendre l'empreinte TLS de ce client ancien légèrement moins compatible avec un navigateur moderne.
Valider et redémarrer
Testez la configuration avant de redémarrer le service en production — cela permet de détecter les erreurs de frappe JSON et les champs non pris en charge avant qu'ils n'entraînent l'arrêt du proxy :
/usr/local/bin/xray run -test -c /usr/local/etc/xray/config.json
Démarrage du service et activation du démarrage automatique
Redémarrez Xray avec la nouvelle configuration et activez le démarrage automatique au redémarrage :
systemctl enable --now xray
systemctl restart xray
systemctl status xray --no-pager
L'état devrait indiquer « actif (en cours d'exécution) ». Vérifiez qu'un service écoute bien sur le port 443.
ss -lntp | grep ':443'
Si Xray ne démarre pas, le moyen le plus rapide d'en connaître la raison est de consulter le journal systemd (pour plus d'informations sur la lecture des journaux Linux en général, voir Comment lire les journaux Linux et où les trouver ) :
journalctl -u xray -n 50 --no-pager
Établir le lien de connexion avec le client
Les clients Xray importent un seul lien de partage vless:// au lieu d'un fichier de configuration. Ce lien est construit à partir des valeurs générées dans la section 4 (le format du lien de partage des applications clientes utilise toujours l'ancien nom type=tcp pour le transport, même si le champ JSON lui-même s'appelle désormais method) :
VOTRE-UUID — issu de l'UUID de xray (par exemple, a1b2c3d4-e5f6-7890-abcd-ef1234567890)
VOTRE-MOT-DE-PASSE-CLÉ-PUBLICE — est le mot de passe de xray x25519 (et NON la clé privée !)
VOTRE-ID-COURT — généré par openssl rand -hex 8 (par exemple, a1b2c3d4e5f67890)
votre_IP — (Adresse IP de votre serveur)
SNI — www.microsoft.com (ou votre cible)
vless://YOUR-UUID-HERE@your_IP:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=YOUR-PASSWORD-PUBLIC-KEY&sid=YOUR-SHORT-ID&type=tcp&flow=xtls-rprx-vision#My-Xray-Server
Exemple de lien :
vless://a1b2c3d4-e5f6-7890-abcd-ef1234567890@your_IP:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=xyz_public_key_here&sid=a1b2c3d4e5f67890&type=tcp&flow=xtls-rprx-vision#My-Xray-Server
pbk est la valeur du mot de passe de xray x25519 (la clé publique, jamais la clé privée), sni correspond au nom d'hôte cible et le texte après # est simplement une étiquette d'affichage que vous pouvez renommer librement dans n'importe quel client.
Transformez-le en code QR pour que les clients mobiles puissent le scanner directement :
qrencode -o ~/vless-client.png "vless://YOUR-UUID@your_IP:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=YOUR-PASSWORD-PUBLIC-KEY&sid=YOUR-SHORT-ID&type=tcp&flow=xtls-rprx-vision#My-Xray-Server"
Ou imprimez-le directement dans le terminal sans enregistrer de fichier :
qrencode -t ansiutf8 "vless://YOUR-UUID@your_IP:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=YOUR-PASSWORD-PUBLIC-KEY&sid=YOUR-SHORT-ID&type=tcp&flow=xtls-rprx-vision#My-Xray-Server"
Copiez le fichier PNG sur votre ordinateur avec scp, puis exécutez la commande depuis le terminal de votre ordinateur (ou PowerShell sous Windows), et non depuis le serveur :
scp root@your_IP:~/vless-client.png .
Connexion depuis Windows
Tout ce qui est décrit dans cette section se passe sur votre PC Windows, et non via SSH ; le client doit être exécuté sur l’appareil qui utilisera effectivement le proxy.
Installer v2rayN
v2rayN est un client GUI gratuit et activement maintenu, intégrant Xray-core et prenant en charge nativement VLESS/Reality. Téléchargez la dernière version sur la page du projet :
Récupérez le fichier .zip Windows 64 bits (une version autonome ne nécessite pas d'environnement d'exécution .NET séparé depuis les versions récentes de v2rayN), extrayez-le où vous le souhaitez et exécutez v2rayN.exe.
Importer le serveur
Copiez le lien vless:// créé à la section 7 dans votre presse-papiers (ou copiez le fichier QR PNG avec scp et ouvrez-le), puis dans v2rayN, sélectionnez Serveurs, puis Importer une URL en masse depuis le presse-papiers (ou scannez le code QR avec le scanner intégré). Le nouveau profil de serveur apparaît dans la liste avec l'étiquette que vous avez définie après le #.
Cliquez avec le bouton droit sur le profil et sélectionnez-le comme actif, puis activez le proxy système (ou le mode TUN, pour acheminer l'ensemble de la machine) à partir de la barre d'outils de la fenêtre principale.
Connexion depuis Android
Tout se passe ici sur votre appareil Android, et non via SSH.
Installer v2rayNG
v2rayNG est la version Android de v2rayN, développée par le même auteur, et c'est le client Xray le plus utilisé sur Android. Installez-le depuis Google Play ou téléchargez le fichier APK directement depuis la page des versions du projet si Play n'est pas disponible dans votre région.
Importer le serveur
Ouvrez v2rayNG, appuyez sur le bouton + en haut à droite, puis choisissez Importer la configuration depuis le presse-papiers après avoir copié le lien vless://, ou scannez le code QR et pointez l'appareil photo vers le fichier PNG généré à la section 7. Appuyez sur le profil importé pour le sélectionner, puis sur le bouton de connexion rond en bas. Android vous demandera l'autorisation VPN la première fois ; autorisez-la pour établir la connexion VPN.
Connexion depuis iOS
Tout se passe ici sur votre iPhone ou iPad, sans passer par SSH. Conformément aux directives de l'App Store d'Apple, les clients Xray/VLESS sur iOS sont généralement gratuits, mais parfois payants, et constituent des applications autonomes plutôt qu'une fonctionnalité intégrée au système.
Installer un client compatible Reality
Streisand est un client gratuit et open source compatible avec VLESS et Reality, ainsi qu'avec plusieurs autres protocoles. Vous pouvez le trouver sur l'App Store ou en cliquant sur ce lien.
Les catalogues de l'App Store varient selon la plateforme/région et peuvent évoluer avec le temps ; si Streisand n'est pas disponible sur la vôtre, des alternatives compatibles VLESS+Reality telles que Happ, V2Box et V2rayTun sont disponibles ; recherchez sur l'App Store celle qui est disponible pour votre compte.
Importer le serveur
Copiez le lien vless:// dans votre presse-papiers, ouvrez l'application et utilisez l'option « Ajouter depuis le presse-papiers » (ou l'option équivalente « Importer »), ou scannez le code QR de la section 7 avec le scanner intégré de l'application. Activez le nouveau profil ; iOS vous demandera l'autorisation de configurer le VPN lors de la première utilisation, autorisation que vous devrez confirmer via Face ID, Touch ID ou votre code.
Vérification de la connexion
Avec le tunnel actif à partir de la section 8, 9 ou 10, retournez sur votre propre appareil (et non sur la session SSH) et ouvrez n'importe quel vérificateur « quel est mon IP » dans un navigateur — l'adresse affichée devrait correspondre à l'adresse IP de votre VPS.
Pour vérifier côté serveur, consultez le journal systemd pour détecter toute activité de connexion et confirmez l'établissement d'une session TCP sur le port 443 :
journalctl -u xray -n 50 --no-pager
ss -tnp | grep ':443'
Au niveau de journalisation par défaut « avertissement », Xray n'affiche pas beaucoup d'informations sur les connexions individuelles ; si vous avez besoin de plus de détails lors du dépannage, définissez temporairement « loglevel » : « info » dans config.json et redémarrez le service, puis repassez-le à « avertissement » une fois que tout fonctionne correctement.
Référence:
|
Champ |
Valeur |
|
Adresse |
l'adresse IP publique de votre VPS |
|
Port |
443 (le même port ouvert dans la section 2) |
|
UUID / identifiant |
VOTRE-UUID-ICI — généré dans la section 4 avec xray uuid |
|
Débit |
xtls-rprx-vision — doit correspondre des deux côtés |
|
Sécurité |
réalité |
|
SNI / nom_serveur |
Le nom d'hôte cible testé dans la section 4, par exemple www.microsoft.com |
|
Empreinte digitale (p) |
chrome — une empreinte uTLS prise en charge ; doit être configurée sur le client |
|
Clé publique / pbk |
La valeur du mot de passe renvoyée par xray x25519 — jamais la clé privée |
|
Identifiant court / sid |
Généré avec openssl rand -hex 8 ; doit correspondre à une valeur dans shortIds |
Conclusion
En suivant ce guide, votre VPS exécutera son propre serveur Xray VLESS+Reality, dissimulé sous forme de trafic HTTPS ordinaire vers un véritable site web, sans nom de domaine ni certificat à gérer. Le service s'exécute via l'unité systemd xray et reste opérationnel après un redémarrage sans aucune intervention de votre part.
Ajoutez de nouveaux clients à tout moment en ajoutant un nouvel objet au tableau users dans config.json avec un nouvel UUID provenant de xray uuid et une étiquette email distincte, puis redémarrez le service (systemctl restart xray) et créez pour cet utilisateur son propre lien de partage à partir de la section 7. Des UUID distincts par personne ou appareil permettent d'en révoquer un sans déranger personne d'autre.
Quelques habitudes à conserver une fois le serveur en marche :
- Maintenez Xray à jour. Réexécutez régulièrement le script d'installation de la section 3 (il met à niveau une installation existante) et veillez également à la mise à jour des applications clientes, compte tenu du comportement de minClientVer décrit dans la section 5.
- Sauvegardez le fichier config.json dans un emplacement privé, hors du serveur. Il contient la clé privée Reality du serveur et l'UUID de chaque client ; sa perte implique de régénérer les identifiants pour chaque appareil.
- Révoquez rapidement les appareils perdus. Supprimez l'entrée correspondante du tableau des utilisateurs dans le fichier config.json et redémarrez le service.
Si la connexion ne s'établit pas, vérifiez dans l'ordre :
- l'état du service (systemctl status xray --no-pager) et le journal (journalctl -u xray -n 50 --no-pager)
- les règles du pare-feu (état ufw — le port 443/tcp doit être ouvert)
- que le port 443 n'est pas déjà utilisé par un autre service (ss -lntp | grep ':443' ne devrait afficher que xray).
- L'UUID, la clé publique, l'identifiant court, le SNI et le flux du client doivent correspondre exactement au fichier config.json ; une seule erreur de frappe suffit à faire échouer la négociation silencieusement.
- la cible Reality elle-même, avec ping TLS à rayons X :443, au cas où le site aurait modifié sa configuration TLS
Vous souhaitez comparer Xray à d'autres solutions ? Consultez le guide de déploiement du serveur AmneziaWG et le tutoriel « Configuration d'un VPN WireGuard sur votre serveur » pour découvrir des alternatives basées sur WireGuard, ou encore les procédures de configuration d'Hysteria2 et de TUIC pour deux autres protocoles résistants à la censure, conçus pour les réseaux sujets aux pertes de paquets ou fortement filtrés. Si vous n'avez besoin que d'un simple proxy plutôt que d'une configuration de tunnel complète, la configuration de 3proxy sur CentOS/Arch Linux est une alternative beaucoup plus légère. L'article « Configuration d'un serveur VPN plus ancien sous Linux : PPTP ou OpenVPN ? » aborde des protocoles plus simples à configurer, mais beaucoup plus faciles à détecter et à bloquer par l'inspection approfondie des paquets (DPI). Pour renforcer la sécurité de votre serveur une fois le proxy opérationnel, consultez la documentation « Utilisateurs Linux : Gestion et permissions ».