Deze installatiehandleiding voor Xray VLESS Reality-servers leidt u door het proces van het implementeren van een moderne proxy op uw VPS. VLESS met de Reality-transportbeveiligingslaag is momenteel de meest gevraagde zelfgehoste proxy-configuratie : in tegenstelling tot een klassieke VPN produceert het geen onderscheidende handshake of een vaste pakketsignatuur. Reality kloont de TLS 1.3-handshake van een echte, populaire website (het doel), waardoor een verbinding met uw server er voor een DPI-systeem dat het netwerkverkeer monitort identiek uitziet voor iemand die die website bezoekt. Er is geen nep- of zelfondertekend certificaat om te identificeren, omdat uw server tijdens de handshake kortstondig het daadwerkelijke certificaat van de doelsite doorstuurt.
De protocolstack bestaat uit: VLESS (een lichtgewicht, stateless proxyprotocol dat authenticatie afhandelt) dat draait over XTLS Vision (een flow-controlmodus die de verbinding versnelt door reeds versleutelde TLS-records op socketniveau te kopiëren), beveiligd door Reality (de hierboven beschreven camouflagelaag). Alle drie zijn afkomstig van hetzelfde project, Xray-core, de actief onderhouden opvolger van het oorspronkelijke V2Ray/V2Fly-project.
Deze handleiding beschrijft hoe je handmatig een Xray-server configureert, volledig via de commandoregel, zonder webinterface en zonder Docker – voor een zo klein mogelijke footprint op de VPS. Je hoeft geen domeinnaam aan te maken en geen TLS-certificaat aan te schaffen: Reality gebruikt het certificaat van de doelsite voor de handshake en presenteert nooit een eigen certificaat. Vervolgens moet je bij 'your_IP' je toegewezen IP-adres invullen.
Wat je nodig hebt: een VPS met Ubuntu 22.04/24.04 of Debian 11/12, root-toegang, het IP-adres van je VPS en TCP-poort 443 die vrij is (er mag geen webserver, controlepaneel of andere proxy op draaien).
Heb je nog geen server? Bekijk dan hoe je een server kunt bestellen en betalen.
Vergelijk dit eerst met andere zelfgehoste opties? Zie de AmneziaWG Server Deployment Guide voor een WireGuard-gebaseerd alternatief, of de Hysteria2- en TUIC-configuratie voor twee andere moderne, censuurresistente protocollen.
Verbinding maken met de server
Windows (PuTTY)
Open PuTTY, voer het IP-adres van je VPS in bij het veld 'Host Name', stel de poort in op 22 en log in als root met het wachtwoord dat je van je VPS-provider hebt ontvangen.
Server-IP-adres: uw IP-adres
Inloggen als: root
Wachtwoord: uw wachtwoord
- Open PuTTY en voer het IP-adres van uw VPS in het veld 'Hostnaam' in.
- Stel de poort in op 22.
- Log in als root.
- Gebruik het wachtwoord dat je van je VPS-provider hebt ontvangen via e-mail. Je zou dan in de shellprompt van de server terecht moeten komen.
Voor een gedetailleerde handleiding over het verbinden via PuTTY/SSH, zie Hoe verbinding te maken met een Linux-server via SSH.
Linux / macOS (terminal)
ssh root@your_IP
Alle onderstaande commando's worden uitgevoerd op de server, in dezelfde SSH-sessie — dit omvat de secties 2 tot en met 6, plus de servercontroles in sectie 10. De secties 7-9 (het installeren en configureren van de VPN-client) vinden plaats op uw eigen Windows-/Android-/iOS-apparaat, aangezien dat het apparaat is waarop de proxy moet draaien; in elk van deze secties wordt expliciet vermeld welke regels, indien van toepassing, nog steeds de server benaderen.
De server voorbereiden
Werk het systeem bij
Voordat u iets installeert, vernieuw de pakketlijst en werk de geïnstalleerde pakketten bij:
apt update -y && apt upgrade -y
Als de sessie na `apt upgrade` wordt onderbroken, is dit te verwachten (dbus/polkit wordt opnieuw opgestart) - maak gewoon opnieuw verbinding via SSH.
Als dit de kernel bijwerkt, is het raadzaam om de computer opnieuw op te starten voordat u verdergaat. (Zie Linux Package Managers voor een opfrissing van apt en hoe Linux-pakketbeheerders werken .) Controleer met:
cat /var/run/reboot-required
Als het bestand bestaat, start dan eerst opnieuw op met 'reboot', wacht ongeveer 30 seconden en maak vervolgens opnieuw verbinding.
Installeer de tools die in deze handleiding worden gebruikt.
apt install -y curl wget unzip openssl ufw qrencode
Curl en unzip zijn nodig voor de Xray-installatie zelf; openssl genereert de korte ID in sectie 4; ufw is de firewall die hieronder wordt geconfigureerd; qrencode zet de voltooide clientlink om in een scanbare QR-code in sectie 7.
Controleer de systeemklok
De handshake van Reality omvat een tijdstempelcontrole (het veld maxTimeDiff, standaard uitgeschakeld maar wel handig om te weten), en een klok die merkbaar afwijkt, kan er ook voor zorgen dat de normale TLS-certificaatvalidatie elders op de server niet goed werkt. Controleer of de klok gesynchroniseerd is:
timedatectl status
Als bij "Systeemklok gesynchroniseerd" "nee" staat, schakel het dan in met:
timedatectl set-ntp true
De firewall (UFW) configureren
Voor meer informatie over UFW-regels, zie Firewall configureren op Linux.
Open de twee poorten die je nodig hebt: 22/tcp voor SSH (sla deze regel over en je riskeert de toegang tot de server te verliezen) en 443/tcp, de poort waarop Xray luistert en dezelfde poort die normaal HTTPS-verkeer gebruikt — en dat is precies waarom het de juiste keuze is voor Reality.
ufw allow 22/tcp
ufw allow 443/tcp
ufw --force enable
ufw status
Beide regels zouden als 'TOESTAAN' moeten worden weergegeven in de ufw-statusuitvoer.
Xray-core installeren voor VLESS Reality Server
Het Xray-core-project (XTLS) publiceert een officieel installatie- en upgradescript dat het binaire bestand als een systemd-service installeert. Controleer elk script van derden voordat u het via een pipe naar bash stuurt — dit script komt rechtstreeks uit de repository van het project zelf.
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
Controleer of het binaire bestand aanwezig is en welke versie is geïnstalleerd:
/usr/local/bin/xray version
Als de uitvoer van de opdracht gepagineerd is en lijkt vast te lopen, druk dan op Q om af te sluiten. Het Xray-programma is geïnstalleerd om /usr/local/bin/xrayen de configuratiebestanden ervan worden opgeslagen in /usr/local/etc/xray/.
Je kunt hetzelfde installatiescript ook gebruiken om een bestaande installatie te upgraden. Voor een volledige lijst met opties (inclusief verwijdering, updates van alleen geodata en logrotatie) voer je het volgende commando uit:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" --help
Het genereren van de sleutels en inloggegevens
De authenticatie van de realiteit is gebaseerd op vier gegevens. Genereer ze nu allemaal; u plakt ze in de serverconfiguratie in sectie 5.
Genereer een UUID voor de client.
/usr/local/bin/xray uuid
Dit is de VLESS-gebruikers-ID — beschouw deze als een authenticatiemiddel, aangezien dit de authenticatie van een client bij de server mogelijk maakt. Voer de opdracht opnieuw uit voor elk extra apparaat of elke extra persoon aan wie u toegang wilt verlenen.
Genereer het Reality X25519-sleutelpaar
/usr/local/bin/xray x25519
Dit print drie regels: PrivateKey , Password en Hash32 . PrivateKey wordt alleen in de serverconfiguratie gebruikt en mag nooit worden gedeeld. Password is de bijbehorende publieke sleutel — ondanks de naam is dit de waarde die elke client invoert; Xray heeft het veld specifiek van PublicKey naar Password hernoemd om te voorkomen dat mensen het onzorgvuldig publiceren. Hash32 wordt alleen gebruikt voor de aparte VLESS-versleutelingsfunctie en is niet nodig voor een Reality-configuratie.
Genereer een korte ID
openssl rand -hex 8
Dit genereert een hexadecimale tekenreeks van 16 tekens die gebruikt wordt om verschillende clients of clientgroepen van elkaar te onderscheiden. Zowel de server als de client moeten dezelfde waarde gebruiken.
Kies en test een realiteitsdoelwit
Het doel is de echte website waarvan uw server de TLS-handshake nabootst. Deze website moet TLS 1.3 en HTTP/2 ondersteunen, mag niet achter een CDN zoals Cloudflare staan (Xray stuurt al het verkeer dat de Reality-authenticatie niet doorstaat rechtstreeks door naar het doel, dus een doel met een CDN kan uw server veranderen in een open relay voor die CDN), en idealiter bevindt deze zich in ongeveer dezelfde netwerkregio als uw VPS voor een plausibel latentieprofiel. Test een kandidaat rechtstreeks vanaf de server:
/usr/local/bin/xray tls ping www.microsoft.com:443
Gebruik de kale hostnaam, niet een URL. Een aantal domeinen die vaak als Reality-doelwit worden gebruikt omdat ze stabiel zijn, TLS 1.3 ondersteunen en niet via een CDN worden aangeboden, zijn: www.microsoft.com, addons.mozilla.org en dl.google.com. Test er een paar en kies er een die betrouwbaar reageert vanaf de locatie van uw VPS; u gebruikt dezelfde hostnaam voor zowel het doelwit als de serverNames-vermelding in sectie 5.
Het schrijven van de serverconfiguratie
Maak een back-up van het configuratiebestand dat bij het installatieprogramma is meegeleverd en open het bestand vervolgens om het te bewerken:
cp /usr/local/etc/xray/config.json /usr/local/etc/xray/config.json.orig
nano /usr/local/etc/xray/config.json
Open het configuratiebestand om te bewerken:
nano /usr/local/etc/xray/config.json
Vervang het hele bestand door de onderstaande sjabloon en vervang de UUID, PrivateKey, korte ID en doelhostnaam uit sectie 4 door uw eigen gegevens (en de poort die u in sectie 2 hebt geopend, als u deze hebt gewijzigd van 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" }
]
}
Druk op Ctrl+O (WriteOut) om het bestand op te slaan.
Druk op Enter om de bestandsnaam te bevestigen.
Druk op Ctrl+X om nano af te sluiten.
De belangrijke velden: users[].id is de UUID uit sectie 4; users[].flow schakelt XTLS Vision in; method (voorheen network) selecteert het RAW-transport, de eenvoudige TCP-gebaseerde methode die Reality vereist; target en serverNames zijn de sites die u in sectie 4 hebt getest; privateKey is de server-side X25519-sleutel, nooit de Password-waarde; shortIds geeft een lijst van alle korte ID's die clients mogen presenteren. Om later meer gebruikers toe te voegen, voegt u extra objecten toe aan de users-array, elk met een eigen UUID en e-maillabel, en start u de service opnieuw.
Sinds Xray 26.3.27 zorgt een Reality-inbound zonder expliciet minClientVer-veld ervoor dat standaard de core-versie van de server zelf wordt gebruikt. Oudere client-apps (een verouderde v2rayN-, v2rayNG- of Streisand-build met een oudere Xray-core) worden stilzwijgend doorgestuurd naar de fallback-pagina van de doelserver in plaats van verbinding te maken, zonder foutmelding aan de clientzijde en zonder dat er iets mis lijkt te zijn in het serverlogboek. Als een client die voorheen wel werkte plotseling een time-out geeft na een update, probeer dan eerst de client-app zelf bij te werken. Als dat niet mogelijk is, voeg dan "minClientVer": "25.9.11" (of een andere oudere baseline) toe aan realitySettings. Dit heeft als nadeel dat de TLS-fingerprint van die oudere client iets minder consistent is met een moderne browser.
Valideren en opnieuw starten
Test de configuratie voordat u de live service opnieuw opstart. Zo worden typefouten in de JSON en niet-ondersteunde velden opgespoord voordat ze de proxy platleggen.
/usr/local/bin/xray run -test -c /usr/local/etc/xray/config.json
De service starten en automatisch starten inschakelen
Start Xray opnieuw op met de nieuwe configuratie en schakel de automatische opstartfunctie in bij het opnieuw opstarten van het systeem:
systemctl enable --now xray
systemctl restart xray
systemctl status xray --no-pager
De status moet actief (draaiend) zijn. Controleer of er daadwerkelijk iets luistert op poort 443:
ss -lntp | grep ':443'
Als Xray niet start, is de snelste manier om te achterhalen waarom via het systemd-logboek (voor meer informatie over het lezen van Linux-logboeken in het algemeen, zie Hoe Linux-logboeken te lezen en waar u ze kunt vinden ):
journalctl -u xray -n 50 --no-pager
Het tot stand brengen van de clientverbindingslink
Xray-clients importeren een enkele vless://-deellink in plaats van een configuratiebestand. Bouw deze op basis van de waarden die in sectie 4 zijn gegenereerd (het deellinkformaat van de client-apps gebruikt nog steeds de oudere naam type=tcp voor het transport, ook al heet het JSON-veld zelf nu method):
JOUW-UUID — afkomstig van xray uuid (bijv. a1b2c3d4-e5f6-7890-abcd-ef1234567890)
YOUR-PASSWORD-PUBLIC-KEY — is het wachtwoord van xray x25519 (NIET de privésleutel!)
UW-KORTE-ID — van openssl rand -hex 8 (bijv. a1b2c3d4e5f67890)
jouw_IP — (IP-adres van je server)
SNI — www.microsoft.com (of uw doelwebsite)
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
Voorbeeldlink:
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 is de wachtwoordwaarde van xray x25519 (de publieke sleutel, nooit de privésleutel), sni komt overeen met de doelhostnaam en de tekst na # is slechts een weergavelabel dat u in elke client vrij kunt hernoemen.
Zet het om in een QR-code, zodat mobiele gebruikers het direct kunnen scannen:
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"
Of print het direct naar de terminal zonder het bestand op te slaan:
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"
Kopieer de PNG naar je eigen computer met scp en voer het commando uit vanuit de terminal van je computer (of PowerShell op Windows), niet vanaf de server:
scp root@your_IP:~/vless-client.png .
Verbinding maken vanaf Windows
Alles in dit gedeelte gebeurt op uw Windows-pc, niet via SSH — de client moet draaien op het apparaat dat daadwerkelijk de proxy gaat gebruiken.
Installeer v2rayN
v2rayN is een gratis, actief onderhouden GUI-client die Xray-core bundelt, met native VLESS/Reality-ondersteuning. Download de nieuwste versie van de projectpagina :
Download het .zip-bestand voor Windows 64-bit (een zelfstandige build vereist geen aparte .NET-runtime meer sinds recente v2rayN-versies), pak het uit waar u wilt en start v2rayN.exe.
Importeer de server
Kopieer de vless://-link uit sectie 7 naar je klembord (of kopieer de QR-code in PNG-formaat met scp en open deze). Kies vervolgens in v2rayN voor Servers en daarna voor 'Bulk-URL importeren vanuit klembord' (of scan de QR-code met de ingebouwde scanner). Het nieuwe serverprofiel verschijnt in de lijst met het label dat je hebt ingesteld na de #.
Klik met de rechtermuisknop op het profiel en selecteer het als actief. Schakel vervolgens de systeemproxy (of TUN-modus, voor het routeren van de hele machine) in via de werkbalk in het hoofdvenster.
Verbinding maken vanaf Android
Alles wat hier gebeurt, vindt plaats op je Android-apparaat, niet via SSH.
Installeer v2rayNG
v2rayNG is de Android-tegenhanger van v2rayN, ontwikkeld door dezelfde beheerder, en is de meest gebruikte Xray-client op Android. Installeer de app via Google Play, of download de APK rechtstreeks van de releasepagina van het project als Play niet beschikbaar is in jouw regio.
Importeer de server
Open v2rayNG, tik op de + knop rechtsboven en kies 'Configuratie importeren vanuit klembord' nadat je de vless:// link hebt gekopieerd, of 'QR-code scannen' en richt de camera op de PNG die in sectie 7 is gegenereerd. Tik op het geïmporteerde profiel om het te selecteren en tik vervolgens op de ronde verbindingsknop onderaan. Android zal de eerste keer om VPN-toestemming vragen; geef deze toestemming om de tunnel tot stand te brengen.
Verbinding maken vanaf iOS
Alles gebeurt hier op je iPhone of iPad, niet via SSH. Volgens de richtlijnen van de Apple App Store zijn Xray/VLESS-clients op iOS doorgaans gratis, maar soms betaalde, op zichzelf staande apps in plaats van een systeemgeïntegreerde functie.
Installeer een Reality-compatibele client.
Streisand is een gratis, open-source client die VLESS met Reality ondersteunt, naast diverse andere protocollen. Zoek ernaar in de App Store of open deze link.
De catalogi van de App Store verschillen per winkel/regio en kunnen in de loop van de tijd veranderen; als Streisand niet in jouw winkel te vinden is, zijn er alternatieven met VLESS+Reality-ondersteuning, zoals Happ, V2Box en V2rayTun. Zoek in de App Store naar de app die beschikbaar is voor jouw account.
Importeer de server
Kopieer de vless://-link naar je klembord, open de client en gebruik de optie 'Toevoegen vanuit klembord' (of een vergelijkbare 'importeren'-optie), of scan de QR-code uit sectie 7 met de ingebouwde scanner van de client. Schakel het nieuwe profiel in; iOS zal de eerste keer om toestemming voor VPN-configuratie vragen, die je moet goedkeuren via Face ID, Touch ID of je toegangscode.
De verbinding verifiëren
Zodra de tunnel actief is vanuit sectie 8, 9 of 10, ga je terug naar je eigen apparaat (niet de SSH-sessie) en open je een willekeurige "what's my IP"-checker in een browser. Het weergegeven adres zou overeen moeten komen met het IP-adres van je VPS.
Om dit vanaf de serverzijde te controleren, kunt u het systemd-logboek raadplegen voor verbindingsactiviteit en bevestigen dat er een actieve TCP-sessie op poort 443 bestaat:
journalctl -u xray -n 50 --no-pager
ss -tnp | grep ':443'
Met het standaard logniveau "warning" geeft Xray weinig informatie over individuele verbindingen weer. Als u tijdens het oplossen van problemen meer details wilt zien, kunt u "loglevel" tijdelijk instellen op "info" in config.json en de service opnieuw starten. Zodra alles weer werkt, kunt u het logniveau weer terugzetten naar "warning".
Referentie:
|
Veld |
Waarde |
|
Adres |
het openbare IP-adres van uw VPS |
|
Haven |
443 (dezelfde haven die in sectie 2 werd geopend) |
|
UUID / id |
YOUR-UUID-HERE — gegenereerd in Sectie 4 met xray uuid |
|
Stroom |
xtls-rprx-vision — moet aan beide zijden overeenkomen |
|
Security |
realiteit |
|
SNI / serverName |
De doelhostnaam die in sectie 4 is getest, bijvoorbeeld www.microsoft.com |
|
Vingerafdruk (fp) |
Chrome — een ondersteunde uTLS-vingerafdruk; moet op de client worden ingesteld. |
|
Openbare sleutel / pbk |
De wachtwoordwaarde van xray x25519 — nooit de privésleutel. |
|
Korte ID / sid |
Gegenereerd met openssl rand -hex 8; moet overeenkomen met een waarde in shortIds |
Conclusie
Door deze handleiding te volgen, draait uw VPS een eigen Xray VLESS+Reality-server, vermomd als gewoon HTTPS-verkeer naar een echte website, zonder domein en zonder certificaat dat beheerd hoeft te worden. De service draait als de systemd-eenheid xray en blijft na een herstart functioneren zonder dat u iets hoeft te doen.
Voeg op elk gewenst moment nieuwe clients toe door een nieuw object toe te voegen aan de `users`-array in `config.json` met een nieuwe UUID van `xray uuid` en een uniek e-maillabel. Start vervolgens de service opnieuw (`systemctl restart xray`) en maak voor die gebruiker een eigen deelbare link aan, zoals beschreven in sectie 7. Aparte UUID's per persoon of apparaat maken het mogelijk om een account in te trekken zonder anderen te storen.
Enkele gewoontes die de moeite waard zijn om aan te houden zodra de server draait:
- Zorg dat Xray altijd up-to-date is. Voer het installatiescript uit sectie 3 periodiek opnieuw uit — hiermee wordt een bestaande installatie bijgewerkt — en zorg er ook voor dat de client-apps up-to-date zijn, gezien het gedrag van minClientVer zoals beschreven in sectie 5.
- Maak een back-up van config.json op een privélocatie buiten de server. Dit bestand bevat de privésleutel van de Reality-server en de UUID van elke client; als u het kwijtraakt, moet u voor elk apparaat de inloggegevens opnieuw genereren.
- Deactiveer verloren apparaten onmiddellijk. Verwijder de betreffende vermelding uit de gebruikersarray in config.json en herstart de service.
Als de verbinding niet tot stand komt, controleer dan in de volgende volgorde:
- de servicestatus (systemctl status xray --no-pager) en het logboek (journalctl -u xray -n 50 --no-pager)
- de firewallregels (ufw status — poort 443/tcp moet open zijn)
- dat poort 443 niet al bezet is door een andere service (ss -lntp | grep ':443' zou alleen xray moeten weergeven)
- dat de UUID, publieke sleutel, korte ID, SNI en flow in de client exact overeenkomen met config.json — een enkel afwijkend teken zorgt ervoor dat de handshake stilzwijgend mislukt.
- Het Reality-doelwit zelf, met röntgen-TLS-ping :443, voor het geval de site zijn TLS-configuratie heeft gewijzigd.
Vergelijk je Xray met andere opties? Zie de AmneziaWG Server Deployment Guide en How to set up Wireguard VPN on your server voor WireGuard-gebaseerde alternatieven, of Hysteria2 en TUIC setup voor twee andere censuurresistente protocollen die zijn ontworpen voor netwerken met pakketverlies of zware filters. Als je alleen een eenvoudige proxy nodig hebt in plaats van een volledige tunnelconfiguratie, is de 3proxy-configuratie op CentOS/ArchLinux een veel lichter alternatief, en de oudere VPN-serverconfiguratie op Linux: PPTP of OpenVPN? behandelt protocollen die eenvoudiger te configureren zijn, maar veel gemakkelijker door DPI te detecteren en te blokkeren zijn. Voor algemene serverbeveiliging zodra de proxy actief is, zie Linux-gebruikers: Beheer en machtigingen.