Все команды выполняйте от root.
XVEI ставит и настраивает Xray-core (и по желанию Hysteria2), а затем позволяет менять конфигурацию без переустановки — добавлять/удалять inbounds, включать/выключать WARP/TOR, править правила маршрутизации, менять шаблон страны, подменять сайт-прикрытие. Каждое изменение проверяется и применяется автоматически.
Вся конфигурация хранится в одном файле состояния
(/usr/local/etc/xray/xvei-state.json). Небольшой движок на Python (только
стандартная библиотека, без сторонних пакетов) заново собирает config.json,
проверяет его через xray -test и только после этого подменяет боевой конфиг и
перезапускает сервисы. Если проверка не прошла — рабочий конфиг не трогается.
| тип | описание |
|---|---|
vless-tls |
VLESS + TCP + TLS + xtls-rprx-vision, порт :443, фолбэк в nginx |
vless-ws |
VLESS + WebSocket через фолбэк :443 (нужен vless-tls) |
vless-xhttp-reality |
VLESS + XHTTP + REALITY — маскировка под чужой сайт, домен и сертификат НЕ нужны |
vless-xhttp-tls |
VLESS + XHTTP + TLS-сертификат (делит :443 или отдельный порт) |
shadowsocks |
Shadowsocks 2022 / legacy шифры |
hysteria2 |
Hysteria2 на :443/udp; весь его трафик уходит в локальный SOCKS5-inbound Xray, поэтому маршрутизацию делает Xray |
direct, block и опционально WARP (Cloudflare, docker) или TOR —
второй прыжок, скрывающий IP сервера.
Выбираются при установке (потом меняются через xvei template). Это правила
для сервера: то, что уходит с реального IP VPS, а не с устройства клиента.
- Шаблон страны —
russia/iran/china/none. Внутристрановые адреса (geoip:<cc>+ локальные категорииgeosite) никогда не идут напрямую с сервера — прямой выход VPS в сети РФ/Ирана/ Китая палит его реальный IP перед этой сетью и рискует довести до блокировки. Вместо этого такой трафик обязателен--exit warp|tor|block:warp/tor— уходит вторым прыжком, IP сервера не светится;block— просто блокируется. Остальной (не внутристрановой) трафик идёт по обычному режиму выхода:--direct— напрямую наружу;--tunnel warp|tor— через туннель.
- Шаблон «Популярное напрямую» —
popular. Общемировые сервисы (geosite:youtube,instagram,google,telegram,netflix,githubи т.д. — теги, которые есть практически в любой сборке geosite.dat) идут напрямую для скорости; весь остальной трафик обязателен--tunnel warp|tor.
block, direct, warp, tor — добавляйте/удаляйте матчеры
(geosite:…, geoip:…, domain:…, 1.2.3.0/24, regexp:…) на лету.
То, что видит обычный браузер при заходе на домен напрямую (фолбэк nginx для
vless-tls / vless-xhttp-tls). Меняется в любой момент через xvei site:
auth— запрос HTTP Basic-авторизации в пустой файл, всегда 401 (по умолчанию, как в старом скрипте)blank/404— пустая страница / просто 404- статические заготовки — без единого внешнего запроса (безопасно, работают офлайн):
nebula(факты о планетах),critters(энциклопедия животных),game2048,snake,notes(личный блог) proxy <url|preset>— реверс-прокси реального сайта. Большинство сайтов ломаются при проксировании (защита от ботов, проверка Host, абсолютные редиректы), поэтому есть заготовки известных «проксируемых»:example,rfc,cern,gnu,iana.
apt-get update && apt-get -y install curl
bash <(curl -fsSL https://raw.githubusercontent.com/Shark-vil/xray_vless_easy_install_script/master/xvei.sh) installПервый запуск скачает дерево скриптов в /usr/local/lib/xvei и создаст симлинк
xvei в /usr/local/bin — дальше достаточно команды xvei.
xvei интерактивное меню (или предложит установку)
xvei install мастер первичной установки
xvei edit интерактивное меню
xvei apply пересобрать + проверить + перезапустить из текущего состояния
xvei add-inbound <тип> [--port N] [--dest SNI] [--method M]
xvei remove-inbound <tag>
xvei add-outbound <warp|tor>
xvei remove-outbound <warp|tor>
xvei rule <add|remove|list> <block|warp|tor|direct> [матчер ...]
xvei template <russia|iran|china> --exit <warp|tor|block> [--tunnel <warp|tor> | --direct]
xvei template popular --tunnel <warp|tor>
xvei template none [--tunnel <warp|tor> | --direct]
xvei site [list | auth | blank | 404 | <заготовка> | proxy <url|preset>]
xvei links [tag] вывести клиентские ссылки
xvei qr <tag> QR-код для одного inbound
xvei status сервисы и активный шаблон
xvei set-meta [--domain D --email E ...]
xvei update-geo обновить geoip/geosite (необязательно; их ставит установщик xray)
xvei self-update перекачать дерево скриптов
xvei remove полное удаление
Примеры:
xvei add-inbound vless-xhttp-reality --dest www.samsung.com
xvei add-outbound tor
xvei rule add tor geosite:openai
xvei rule add block geosite:category-ads-all
xvei template russia --exit warp --direct # RU-трафик через WARP, остальное напрямую
xvei template popular --tunnel tor # популярные сайты напрямую, остальное через TOR
xvei remove-inbound hy2 # остановит и удалит Hysteria2, остальное не тронет
xvei site game2048 # отдавать на домене игру 2048
xvei site proxy gnu # реверс-прокси www.gnu.orgКаждая команда, меняющая состояние, сама выполняет сборку → xray -test →
подмену → перезапуск.
Вместе с сертификатом ставится deploy-hook certbot
(/etc/letsencrypt/renewal-hooks/deploy/xvei-restart.sh): после каждого
продления Let's Encrypt он обновляет копию сертификата для Hysteria2 и
перезапускает xray, nginx и hysteria2.
| путь | содержимое |
|---|---|
/usr/local/etc/xray/xvei-state.json |
источник правды (root, 0600) |
/usr/local/etc/xray/config.json |
сгенерированный конфиг Xray (.bak сохраняется) |
/etc/hysteria/config.yaml |
сгенерированный конфиг Hysteria2 |
~/xray_eis/<tag>.link |
клиентская ссылка на каждый inbound |
~/xray_eis/<tag>.json |
полный клиентский конфиг Xray на каждый inbound |
xvei.sh точка входа + bootstrap + разбор подкоманд
lib/*.sh системная часть: пакеты, xray, nginx, сертификаты, hysteria2, warp, tor, apply, menu
pyengine/*.py движок конфигурации (только stdlib): state, inbounds, outbounds, routing, sites, links, editor
assets/sites/* автономные сайты-прикрытия (без внешних запросов)
v2rayNG, NekoBox / nekoray, Hiddify. Для REALITY и XHTTP нужен свежий клиент.
Это про локальный сплит-туннелинг на устройстве клиента (свой ISP вместо
VPN) — с сервером он не связан и не палит его IP. Шаблон уже кладёт такие
правила «внутристрановое / популярное → напрямую» в ~/xray_eis/<tag>.json.
Если приложение импортирует только ссылку vless://, добавьте на клиенте
правила direct вручную, например для России:
IP: geoip:private, geoip:ru
Домены: geosite:private, geosite:category-ru, geosite:category-gov-ru