Marzban
Xray management panel
VPN / ProxyFree
Xray panel with limits
The script is free · VPS from $2.79 per month · installs in about 6 minutes
root@vps:~# bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
✓ 3x-ui 3.8.5 installed · about 60 seconds
root@vps:~#
3x-ui is a web panel for Xray-core, a continuation of the X-UI project. In it you create connections (inbounds) and clients, set a traffic limit, expiry and device count for each, and hand out links, QR codes and subscriptions.
The panel installs with a single script, without Docker, and uses almost no resources, which is why it is a popular choice for one or two servers. Besides VLESS with REALITY, it supports VMess, Trojan, Shadowsocks, WireGuard, AmneziaWG, Hysteria2 and MTProto.
During installation the script generates a random username, password, port and panel path, and the service is managed through the x-ui console menu.
x-ui menu.For 3x-ui: at least 1 vCPU, 2 GB RAM and 10 GB NVMe.
Three steps in the bot, no command line. The bot shows progress; installation usually takes about 6 minutes.
The install button on this page opens @ExpressHost_bot, and the bot fills in 3x-ui by itself.
The script appears at the “Скрипты” (Scripts) step automatically; then pay for the server.
When installation finishes, the bot sends the login details to the chat.
server-name.expresshost.cloud, so the panel opens over HTTPS right away./root/info.txt.If you already have a server or want your own setup, install the panel with the official script. It runs on Ubuntu, Debian, AlmaLinux and other distributions and must be run as root.
| Port | Protocol | Purpose |
|---|---|---|
| 2053 | tcp | Web panel (default port; the installer suggests a random one) |
| 443 | tcp | Typically used for VLESS REALITY (configured in the panel) |
The bot sends the IP and root password once the server is created.
ssh root@SERVER_IPThe script installs the service and the x-ui management command and generates a random username, password and panel path. Set the port yourself or keep a random one.
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)The installer offers Let’s Encrypt for a domain (90 days) or for the IP address (6 days); both renew automatically. Validation needs port 80 open; for a domain, create an A record pointing to the server IP first.
At the end the script prints Username, Password, Port, WebBasePath and Access URL — the full panel address. It also writes them to /etc/x-ui/install-result.env. The command below shows the current settings.
x-ui settingsTurn on two-factor authentication in Panel Settings and open only the ports you need in the firewall. Username, password, path and port can be changed from the x-ui menu.
REALITY disguises the connection as the TLS handshake of a real, popular website, so it needs no domain or certificate of your own. It works with VLESS; the recommended flow is xtls-rprx-vision.
In Inbounds add a connection: protocol VLESS, Security set to reality. Pick a free port, for example 443.
Use someone else’s busy website with TLS 1.3 and HTTP/2 that both the server and the clients can reach — the documentation’s example is www.microsoft.com:443. The domain must not be a redirect. In SNI / Server Names enter a name from that site’s certificate.
The panel creates the x25519 key pair and the Short ID for you. The private key stays on the server; clients only get the public one.
Flow is xtls-rprx-vision, both in the client entry and in the link. Use a common uTLS fingerprint such as chrome.
Create a client, set a traffic limit and expiry, and send the vless:// link or QR code. v2rayNG, Hiddify, Mihomo and other clients work.
AmneziaWG is a WireGuard fork with obfuscation, so DPI does not recognise WireGuard. In 3x-ui it runs inside the panel (amneziawg-go in user space), without a kernel module or DKMS. The bot has no separate AmneziaWG script — install 3x-ui and add an inbound. Other methods, requirements and clients are in a separate guide.
AmneziaWG server on a VPS: every methodChoose the AmneziaWG protocol and set the port and tunnel subnet, for example 10.8.1.0/24.
The panel generates a random Jc, Jmin/Jmax, S1–S4, H1–H4 set and can regenerate it. The values must match on the server and the clients — client configs inherit them automatically.
Each client gets its own keys and address. Download the .conf or copy the vpn:// link — the official AmneziaWG and AmneziaVPN apps import it. Version 3.1 parameters need an Amnezia app that supports 3.1.
Updating keeps the database and settings. Take a backup before a major-version jump.
All connections, clients and settings live in /etc/x-ui/x-ui.db, certificates in /root/cert/. Keep the copy off the server.
cp /etc/x-ui/x-ui.db /root/x-ui-backup-$(date +%F).dbThe Update item of the x-ui menu does the same.
x-ui updateOpen the whole Access URL — with the port and the secret path. Check the service with x-ui status and the logs in the x-ui menu (Logs Management); the panel port must not be taken by another service.
The domain’s A record must point to the server before issuing, and port 80 must be reachable from the internet for HTTP validation. REALITY needs no certificate.
Most often the target and SNI are to blame: the site must support TLS 1.3 and HTTP/2, and the SNI must match its certificate. Check the xtls-rprx-vision flow in the client and the link, and that the inbound port is open.
Check whether the client has used up its traffic, expiry or IP limit.
Run x-ui and choose Reset Username & Password. x-ui settings shows the panel port and path.
Commands and steps were checked against the official documentation on October 25, 2026. What the bot install does comes from its install script.
Didn’t find an answer? Message @ExpressHost_SupportBot.
The panel barely loads the server; resources go to Xray. 1 vCPU and 2 GB RAM is enough for dozens of active clients; as you grow, keep an eye on CPU load and bandwidth.
Run x-ui update or use the x-ui menu. The installer verifies the archive checksum; settings and clients are preserved.
The panel database is /etc/x-ui/x-ui.db, program files are in /usr/local/x-ui. To back up, just copy x-ui.db.
3x-ui installs without Docker and suits one or two servers. Marzban and Remnawave are stronger at multi-server setups and subscriptions for selling access.
3x-ui installs at checkout — in the bot.
Netherlands, Amsterdam
$2.89/mo
$0.10 for 24 hours · $0.72 for 7 days
Pick 3x-ui at the “Scripts” step when you order the server.
Germany, Frankfurt
$3.14/mo
$0.11 for 24 hours · $0.79 for 7 days
Pick 3x-ui at the “Scripts” step when you order the server.
Poland, Warsaw
$2.79/mo
$0.10 for 24 hours · $0.70 for 7 days
Pick 3x-ui at the “Scripts” step when you order the server.
Estonia, Tallinn
$3.10/mo
$0.11 for 24 hours · $0.78 for 7 days
Pick 3x-ui at the “Scripts” step when you order the server.