VLESS + TLS + XHTTP в 3X-UI: транспорт на случай блокировки Reality
Поднимаем VLESS с обычным TLS и транспортом XHTTP на своём домене через панель 3X-UI: сертификат acme.sh, настройки подключения, fail2ban и UFW. Ubuntu 24.04.

XHTTP — транспорт Xray, который маскирует туннель под обычные HTTP-запросы. Трафик режется на фрагменты и ходит через стандартные POST и GET по HTTP/1.1 или HTTP/2. Для провайдера это выглядит как загрузка картинок или обращение к API сайта, и заблокировать такое, не сломав половину обычного интернета, очень сложно. Это хороший запасной вариант рядом с VLESS Reality.
sing-box не поддерживает XHTTP. Hiddify, NekoBox, Throne с ним не работают. Нужны клиенты на Xray-core 1.8.10 и новее: Incy, Happ, v2rayN, v2rayNG.
Что нужно
- Сервер на tanaka.host с Ubuntu 24.04, от 1 ядра, 1 ГБ памяти и 10 ГБ диска.
- Собственный домен, направленный на сервер. Подойдёт самый дешёвый у любого регистратора.
- Доступ по SSH под root.
Домен выбирайте нейтральный, похожий на обычный сайт. Без слов vpn, proxy, xray, vless, reality — имя уходит в открытом виде в SNI и легко ловится по списку.
1. Домен
В DNS у регистратора создайте A-запись с IP сервера. Обычно она применяется за минуты-часы, в худшем случае до 48 часов. Проверка:
dig myserver.com A +short
Если вывод — IP вашего сервера, идём дальше. Если домен за Cloudflare — отключите проксирование записи (серое облако), иначе трафик пойдёт через Cloudflare, а не на ваш VPS.
2. Обновите сервер
apt update && apt upgrade -y
reboot
После перезагрузки подключитесь снова.
3. Установите 3X-UI
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
Установщик спросит про порт панели:
Would you like to customize the Panel Port settings? (If not, a random port will be applied) [y/n]:
Ответьте y, порт — 8080. На вопрос о сертификате для панели выберите вариант 2 (сертификат на IP-адрес через Let’s Encrypt) и дальше просто нажимайте Enter. В конце установщик выведет адрес панели, логин и пароль — сохраните их.
4. Сертификат для домена
XHTTP работает поверх обычного TLS, поэтому нужен сертификат именно на ваш домен. Выпустим его через acme.sh, подставив свою почту и домен:
curl https://get.acme.sh | sh -s email@example.com
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
~/.acme.sh/acme.sh --issue -d ваш-домен.ru --standalone
Режим --standalone поднимает временный веб-сервер на порту 80, так что порт должен быть свободен. Файлы после выпуска:
Сертификат: /root/.acme.sh/ваш-домен.ru_ecc/fullchain.cer
Ключ: /root/.acme.sh/ваш-домен.ru_ecc/ваш-домен.ru.key
acme.sh сам добавляет задание в cron и продлевает сертификат.
5. Подключение в панели
Откройте адрес панели из вывода установщика, войдите и перейдите в Входящие → Создать подключение:
- Протокол —
vless, Порт —443. - Транспорт —
XHTTP. Путь — любой нейтральный, например/api/v1/. Хост — ваш домен. - Безопасность —
TLS. SNI — ваш домен. - uTLS —
firefoxилиedge, неchrome. Отпечаток Chrome стоит почти во всех VPN-приложениях и чаще других вызывает подозрение у фильтров. Ограничение наedgeиз статей про Reality к XHTTP с обычным TLS не относится. - Публичный ключ и Приватный ключ сертификата — пути из шага 4:
fullchain.cerи.key.
После каждого изменения настроек подключения нажимайте
Get New ECH Cert. Если соединение работает нестабильно, по очереди попробуйте режимы XHTTPstream-up,stream-oneиpacket-upи оставьте тот, что лучше идёт в вашей сети.
Сохраните подключение, добавьте клиента в разделе Клиенты (как в статье про 3X-UI), нажмите QR-код и импортируйте его в приложение. Проверка — api.ipify.org должен показать IP сервера.
6. Защита сервера
Fail2ban для панели настраивается из меню 3X-UI:
x-ui
Выберите 21 — IP Limit Management, затем Install Fail2ban and configure IP Limit, подтвердите y.
Сначала SSH, потом UFW. Если переносите SSH на другой порт по статье про смену порта, откройте его командой
ufw allow ВАШ-ПОРТ/tcpдоufw enable, иначе останетесь снаружи.
ufw allow 22/tcp
ufw allow 443/tcp
ufw allow 8080/tcp
ufw enable
Порт 80 после выпуска сертификата можно не держать открытым постоянно, но для продления acme.sh в режиме standalone он понадобится — проще оставить ufw allow 80/tcp. Остальные меры — брандмауэр, вход по ключу, fail2ban.
Какой клиент
| Клиент | Платформы | Примечание |
|---|---|---|
| Incy | iPhone, iPad, Mac, Android, Windows, macOS, Linux | Доступен в российском App Store |
| Happ | все | Из российского App Store удалён, на iPhone нужен Apple ID другой страны |
| v2rayN | Windows, macOS, Linux | Для опытных, полный контроль |
| v2rayNG | Android | То же |
iPhone. VPN-приложения в iOS живут с жёстким лимитом памяти, а XHTTP даёт кратковременные скачки потребления — система может убить процесс, и соединение оборвётся. Попробуйте другой режим XHTTP или платный Shadowrocket.
Частые ошибки
- acme.sh не выпускает сертификат. Порт 80 занят (
ss -lntp | grep ':80 ') или A-запись ещё не разошлась (dig). - Клиент не подключается. Проверьте, что клиент на Xray-core, а не sing-box; что путь, хост и SNI в клиенте совпадают с подключением; нажат ли
Get New ECH Certпосле последней правки. - Панель недоступна после
ufw enable. Не открыли 8080 или новый порт SSH. Консоль сервера в кабинете tanaka.host работает без SSH — зайдите через неё и поправьте правила.
Для основного подключения с маскировкой под свой сайт смотрите self-steal для VLESS Reality — XHTTP хорошо работает как второе подключение в той же подписке.