3X-UI-panel installeren op een VPS
Complete, productiegerichte handleiding: het 3X-UI Xray-panel op Ubuntu installeren, de webinterface beveiligen, TLS uitgeven, een VLESS Reality-inbound aanmaken, gebruikers beheren en clients op desktop en mobiel verbinden.

3X-UI is een webpanel voor Xray-core. Je beheert er inbounds mee (VLESS, VMess, Trojan, Shadowsocks en andere), geeft abonnementslinks uit, zet verkeerslimieten en vervaldatums en volgt live verbindingen — zonder JSON met de hand te bewerken. Voor wie al een VPS heeft, is dit een van de snelste manieren om tot een onderhoudbare proxystack te komen, in plaats van een eenmalige config die niemand zes maanden later nog durft aan te raken.
Deze gids is bedoeld voor een verse Ubuntu 22.04- of 24.04-VPS, zoals de meeste Hiddence-Linux-images er na de eerste start uitzien. We installeren de veelgebruikte MHSanaei-build van 3X-UI, wijzigen bij de eerste login elk standaardgeheim, zetten het panel achter HTTPS, openen alleen de poorten die je echt nodig hebt, maken een VLESS + Reality-inbound aan en lopen daarna de client-apps door. Als je ons Marzban-artikel al hebt gevolgd: het idee is vergelijkbaar — een panel bovenop Xray — maar het installatiepad, de bestandsindeling en het dagelijkse werk verschillen. Meng ze niet op dezelfde server tot je poorten echt kunt scheiden.
Waarom 3X-UI in plaats van een kale Xray-config
Een kale Xray-config is prima voor één gebruiker en één inbound. Zodra je vrienden toevoegt, Reality-sleutels roteert of een abonnements-URL nodig hebt die telefoons met één tik importeren, bespaart een panel uren. 3X-UI slaat gebruikers op in een lokale database, herstart Xray netjes na wijzigingen en toont een compact dashboard voor verkeer en onlinestatus. Het is geen magische anonimiteitslaag: de locatie van de VPS, de TLS-fingerprint, het inboundtype en je eigen operationele hygiëne bepalen nog steeds hoe de setup zich op het netwerk gedraagt.
- Web-UI voor inbounds, clients, verkeer en verval in plaats van met de hand bewerkt JSON
- Ingebouwde abonnementslinks voor v2rayN, v2rayNG, Streisand, Happ en vergelijkbare clients
- Installatie met één commando plus een gedocumenteerd updatepad
- Werkt goed op een kleine VPS (1 vCPU / 1 GB RAM is genoeg voor persoonlijk gebruik)
- Je houdt root op je eigen server — het panel stuurt geen configs naar een clouddienst van derden
Wat je nodig hebt voordat je begint
Sla het domein en de firewall niet over. Een panel dat op HTTP op poort 2053 blijft staan met het standaardwachtwoord, wordt binnen uren door bots gescand. Bereid deze punten voor en verbind als root (of een sudo-gebruiker) via SSH.
- Een Linux-VPS met een openbaar IPv4-adres (Ubuntu 22.04/24.04 aanbevolen)
- Minstens 1 GB RAM en 10 GB schijf; 2 GB RAM is comfortabeler als er ook andere diensten draaien
- Root- of sudo-toegang via SSH
- Een domein of subdomein met een A-record naar het VPS-IP (nodig voor een fatsoenlijk panelcertificaat)
- Ongeveer 20–30 minuten, plus DNS-wachttijd als je het A-record net hebt aangemaakt
Stap 1: Systeem bijwerken en tijdzone instellen
Een splinternieuwe VPS heeft vaak openstaande beveiligingsupdates en UTC als klok. Werk pakketten eerst bij, zodat de installer niet vecht met een verouderde OpenSSL of curl. De tijdzone is optioneel voor Xray zelf, maar maakt panellogs en vervaldatums van certificaten veel leesbaarder.
ssh root@YOUR_VPS_IP
apt update && apt -y upgrade
apt -y install curl wget ca-certificates gnupg socat tar unzip
timedatectl set-timezone UTC
hostnamectl set-hostname panel
# Confirm DNS for your subdomain (should print your VPS IP):
dig +short panel.example.comStap 2: 3X-UI installeren
Het officiële installatiescript van de MHSanaei-build van 3X-UI downloadt de laatste versie, installeert Xray-core, maakt een systemd-service aan en print de URL voor de eerste login. Lees de uitvoer nauwkeurig: er staat een willekeurig pad in en een gegenereerde gebruikersnaam/wachtwoord. Kopieer die meteen naar een wachtwoordbeheerder. Als het script naar de panelpoort vraagt, houd 2053 of kies een vrije hoge poort; onthoud die voor de firewallstap.
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
# After install, useful commands:
x-ui # interactive menu (start/stop/restart, reset, update)
systemctl status x-ui # confirm the service is active
ss -tulpn | grep x-ui # see which port the panel listens onStap 3: Eerste login en meteen harden
Open de URL die de installer print, meestal http://YOUR_IP:2053/<willekeurig-pad>. Log in met de gegenereerde gegevens en ga naar de panelinstellingen (Panel Settings of Configuration). Wijzig gebruikersnaam en wachtwoord naar unieke waarden. Als het panel het webbasispad laat wijzigen, doe dat dan: een lang willekeurig pad snijdt een enorme hoeveelheid drive-by-scans weg. Stel de luisterpoort in als je iets anders dan 2053 wilt. Opslaan, het panel herstarten via de UI of met systemctl restart x-ui, en opnieuw inloggen op de nieuwe URL.
Zet daarna tweefactorauthenticatie aan als jouw build die biedt, en schakel inbound-sjablonen uit die je nooit gebruikt. Laat onder de Xray-instellingen de coreversie staan die met het panel meekwam, tenzij je een concrete reden hebt om een andere build te pinnen. Zet het panel nog niet op poort 80/443 als die poorten later door Reality of een reverse proxy worden gebruikt — kies één strategie en houd je daaraan.
- Vervang de gegenereerde beheerderslogin meteen
- Houd het geheime webpad; verplaats het panel niet naar /
- Kies bij voorkeur een niet-standaard panelpoort en noteer die
- Hergebruik dit wachtwoord nergens anders
Stap 4: TLS-certificaat voor het panel
Browsers waarschuwen bij HTTP, en het beheerderswachtwoord in klare tekst over een openbaar netwerk sturen is een slecht idee. 3X-UI kan een Let's Encrypt-certificaat aanvragen als poort 80 vrij is en het domein naar deze VPS wijst. Open in het panel de sectie certificaat / SSL, vul panel.example.com in en vraag het certificaat aan. Als poort 80 al bezet is, gebruik dan een DNS-01-stroom of zet Caddy/Nginx ervoor en reverse-proxy naar 127.0.0.1:2053.
# Quick check that port 80 is free before the panel ACME challenge:
ss -tulpn | grep ':80'
# If you terminate TLS on Caddy instead of inside 3X-UI:
# Caddyfile example (panel stays on 127.0.0.1:2053):
# panel.example.com {
# reverse_proxy 127.0.0.1:2053
# }Stap 5: Een VLESS Reality-inbound aanmaken
Maak onder Inbounds een nieuwe inbound. Een stevige standaard voor veel netwerken is VLESS met Reality en TCP. Kies een poort die niet de panelpoort is — 443 is gebruikelijk als daar verder niets aan hangt; anders een hoge TCP-poort, en wees consistent in de firewall. Genereer een UUID voor de eerste client, Reality-sleutelparen in de UI, en zet dest / serverNames op een legitiem doel dat je mag nabootsen (een bekende site met TLS 1.3). Sla de inbound op en controleer in de panellogs dat Xray zonder fouten herlaadt.
Voeg daarna extra clients toe op die inbound als je ze nodig hebt: elke gebruiker krijgt een UUID, optioneel een e-mailtag en optioneel een verkeers- of tijdslimiet. Kopieer de verbindingslink of de abonnements-URL uit de gebruikersrij. Plaats die links niet in openbare chats; ze zijn gelijkwaardig aan een wachtwoord.
# On the server, confirm Xray is listening on the inbound port (example: 443):
ss -tulpn | grep -E ':443|:2053'
# Follow Xray logs if a client cannot connect:
journalctl -u x-ui -fStap 6: Firewall — alleen de poorten die je nodig hebt
UFW op Ubuntu is voldoende. Sta eerst SSH toe zodat je jezelf niet buitensluit, daarna de panelpoort en de inboundpoort. Als je een Let's Encrypt-certificaat vanaf het panel hebt aangevraagd, sta tijdens de uitgifte ook 80/tcp toe. Een Reality-inbound op 443 heeft 443/tcp nodig (en niet het panel op dezelfde poort).
ufw allow OpenSSH
ufw allow 2053/tcp comment '3x-ui panel (change if you picked another port)'
ufw allow 443/tcp comment 'VLESS Reality inbound'
# ufw allow 80/tcp comment 'only if panel ACME needs it'
ufw enable
ufw status verboseClients verbinden
Op Windows kan v2rayN een VLESS-link uit het klembord importeren. Op Android doen v2rayNG of vergelijkbare Xray-clients hetzelfde vanaf een QR-code. Op iOS gebruik je een client die VLESS Reality ondersteunt (bijvoorbeeld Streisand of Happ, afhankelijk van wat er in jouw regio beschikbaar is). Na importeren het profiel inschakelen en de onlinelijst van het panel controleren. Blijft de client offline, dan zijn de gebruikelijke oorzaken een verkeerde poort, UDP aan laten staan op een inbound die alleen TCP is, een Reality-serverName die niet bij dest past, of een lokale firewall op de laptop.
- Windows: v2rayN — VLESS-link importeren, routing instellen zoals je wilt (globaal of regelgebaseerd)
- Android: v2rayNG — QR scannen vanaf de gebruikerspagina in het panel
- macOS / iOS: een client met VLESS + Reality-ondersteuning; plak dezelfde link
- Abonnements-URL: voeg die in de client toe zodat UUID-rotaties geen handmatige herimport vragen
Updates, back-up en veilige herinstallatie
Download voor elke panelupdate een back-up uit de UI (database + configuratie). Bewaar die buiten de VPS. Updates gaan doorgaans via x-ui en de update-optie in het menu, of via hetzelfde installatiescript dat een bestaande installatie herkent. Bevestig na een update dat de systemd-service actief is en dat inbounds nog luisteren. Als je het OS opnieuw installeert, herstel de back-up in het panel in plaats van elke UUID met de hand opnieuw aan te maken.
x-ui # choose update when prompted, or:
# bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
# Backup files commonly live under /etc/x-ui/ — copy them off-box:
ls -la /etc/x-ui/
# Example offsite copy:
# scp -r /etc/x-ui/ you@backup-host:~/x-ui-backup-$(date +%F)/Problemen oplossen
De meeste storingen op dag één zijn DNS, poorten of Reality-velden. Werk deze lijst door voordat je het panel opnieuw installeert. Opnieuw installeren zonder back-up is hoe mensen elke client-UUID kwijtraken.
- Web-UI opent niet: controleer systemctl status x-ui, ss -tulpn en UFW. Bevestig dat het geheime pad in de URL staat.
- Beheerderswachtwoord vergeten: voer x-ui uit op de server en gebruik de resetoptie.
- Client verbindt en blijft hangen: inboundpoort geblokkeerd, of UDP ingeschakeld op een TCP Reality-inbound.
- TLS-fouten op het panel: A-record van het domein wijst hier nog niet naartoe, of poort 80 is bezet tijdens ACME.
- Reality-handshake mislukt: dest/serverNames komen niet overeen, of een andere dienst is al gebonden aan 443.
- Hoge CPU: te veel inbounds op een 1-vCPU-plan, of een scan/flood op een open poort — controleer ss en het onlineaantal in het panel.
Beveiligingspunten die er echt toe doen
Behandel het panel als productiesoftware voor beheer. Het kan nieuwe gebruikers aanmaken en elke UUID lezen. Beperk wie de webpoort kan bereiken: heb je een vast kantoor-IP, sta dan alleen dat IP in UFW toe voor 2053/tcp. SSH met sleutels, niet met wachtwoorden. Host geen ongerelateerde openbare websites op hetzelfde IP als je Reality op 443 gebruikt — concurrerende TLS-stacks op één poort zijn een klassieke bron van storingen. Roteer het beheerderswachtwoord als er ooit een screenshot van het panel in een chat is beland.
- Alleen SSH-sleutels; schakel wachtwoordlogin uit zodra sleutels werken
- Beperk de panelpoort in de firewall wanneer je kunt
- Maak op schema een back-up van /etc/x-ui buiten de server
- Deel geen abonnements-URL’s in openbare Telegram-groepen
- Let op schijfgebruik: logs en verkeersstatistieken groeien op een drukke inbound
Praktische tips
- Eén inbound met veel clients is eenvoudiger te beheren dan tien bijna identieke inbounds
- Benoem clients naar apparaat (laptop-anna, phone-ben) zodat verkeersgrafieken iets betekenen
- Heb je ook een reverse proxy voor een website nodig, zet de site dan op een ander IP of een andere poort — vecht niet met Reality om 443
- Test na elke x-ui-herstart één client voordat je de SSH-sessie sluit
- Lees het changelog voor je bijwerkt; sla sprongen naar latest op vrijdagavond over
Je hebt nu 3X-UI als systemd-service, een afgeschermde beheer-URL, TLS op het panel, een VLESS Reality-inbound, firewallregels die bij die poorten passen, en de gewoonte om te back-uppen. Voeg clients toe vanaf de inboundpagina, importeer de link op elk apparaat en werk het panel alleen bij na een back-up. Als iets stukgaat, is het x-ui-menu op de VPS het herstelpad — niet een volledige herinstallatie.