Installation¶
Supported systems¶
| system | status |
|---|---|
| Ubuntu 20.04 / 22.04 / 24.04 | ✅ supported |
| Debian 11 / 12 / 13 | ✅ supported |
| CentOS Stream 9 | ✅ supported |
| AlmaLinux / Rocky / RHEL 9, CentOS Stream 10, Fedora | ❓ not tested, probably works |
| CentOS 7, CentOS Stream 8, other EL8 | ❌ not supported (end of life, Python 3.6) |
| Alpine, systems without systemd | ❌ not supported |
On other systems the installer warns and asks before going on.
Needed: root, systemd, Python 3.7+ (installed if missing). Everything else — Xray, certbot, nginx, Hysteria2, docker for WARP, tor — is installed only when a setting needs it.
On CentOS the installer also turns on EPEL (certbot, tor and qrencode live there), lets nginx use its local ports under SELinux, and turns on the certificate renewal timer.
Ways to install¶
Install curl first if it is missing: apt-get update && apt-get -y install
curl (Ubuntu / Debian) or dnf -y install curl tar (CentOS).
Full install — the script, Xray and the setup wizard:
bash <(curl -fsSL https://raw.githubusercontent.com/Shark-vil/xray_vless_easy_install_script/master/xvei.sh) install
Script only — puts the script into /usr/local/lib/xvei and creates the
xvei command; nothing else is installed until you run xvei install:
bash <(curl -fsSL https://raw.githubusercontent.com/Shark-vil/xray_vless_easy_install_script/master/xvei.sh) help
From a git clone — the xvei command then points to the clone, and you
update it with git pull:
git clone https://github.com/Shark-vil/xray_vless_easy_install_script.git
cd xray_vless_easy_install_script
bash xvei.sh install
Server with Xray already installed¶
If the server already has Xray with /usr/local/etc/xray/config.json,
xvei install takes it over: nothing is installed, changed or restarted.
xvei works with that config.json as it is. It keeps no copy of its own, so
whatever you change in the file by hand is visible in xvei at once and stays
when you change something through xvei. You can:
- get links and QR codes for the existing connections, one per client;
- use the existing outbounds in rules and templates (if the config already has
its own
warp_proxyortor_proxy, xvei uses it instead of starting its own); - see, add and delete routing rules;
- add new connection types — WebSocket, XHTTP and Trojan go behind the existing TLS connection on port 443;
- remove inbounds and outbounds (not while a rule uses them).
xvei only stops or changes nginx, WARP, TOR and Hysteria2 if it started them
itself. Before its first change the original config is saved as
config.json.xvei-orig, comments included.
Not taken over (nothing changes, the reason is shown): Xray managed by a panel
(x-ui / 3x-ui), or xray.service that reads its config from another path or a
folder (-confdir).