3X-UI — это веб-панель поверх Xray-core. Она берёт на себя то, ради чего обычно и не хочется поднимать свой VPN: генерацию ключей, учёт клиентов, лимиты трафика, ссылки и QR-коды. Вы арендуете VPS за пару сотен рублей, запускаете один скрипт — и получаете сервер, который знаете только вы, без чужих ключей из телеграм-каналов и без сервиса, который завтра закроется.

Ниже — весь путь целиком: покупка VPS, установка панели через SSH, входящее подключение VLESS + Reality с нормальной маскировкой, клиенты со ссылками, бонусом MTProto-прокси для Telegram и разбор случаев, когда подключение не поднимается. Все скриншоты сняты на реальном сервере: панель 3X-UI v3.6.0, ядро Xray v26.7.28, ОС Ubuntu 24.04 LTS.

Кому это подходит. Свой сервер — это ваш IP-адрес, которым не пользуется никто больше, полный контроль над протоколом и маскировкой и цена аренды вместо цены подписки. Взамен придётся один раз разобраться с SSH и раз в месяц продлевать VPS. Если возиться некогда — есть готовый ключ VLESS, механика подключения дальше будет ровно та же.

Что такое 3X-UI и зачем она нужна

Сам по себе Xray — это консольная программа, которая читает большой JSON-конфиг. Руками в нём можно описать что угодно, но каждый новый пользователь — это ручная правка файла, генерация UUID, перезапуск службы и пересборка ссылки для клиента.

3X-UI надстраивается сверху и превращает это в интерфейс:

  • входящие подключения (inbounds) — что сервер слушает: протокол, порт, транспорт, шифрование, маскировка;
  • клиенты — кто имеет право подключаться: UUID, лимит трафика, срок действия, ограничение по числу устройств;
  • ссылки и QR-коды — готовая строка vless://, которую остаётся вставить в приложение;
  • статистика — сколько трафика ушло у каждого клиента и кто сейчас онлайн.

Плюс мелочи, которые в ручном конфиге приходится делать отдельно: сертификат Let’s Encrypt, автозапуск, бэкап базы, Fail2ban для защиты панели от перебора паролей.

Шаг 1. Покупаем VPS

Требования к серверу для VLESS скромные: 1 ядро, 1 ГБ RAM, 10 ГБ диска. Шифрование упирается в процессор, а не в память, и одно ядро на 3 ГГц спокойно тянет несколько пользователей на скорости канала. Переплачивать за 4 ГБ RAM смысла нет.

Что действительно важно при выборе:

ПараметрНа что смотреть
ЛокацияГермания, Нидерланды, Швеция, Финляндия. Ближе — меньше пинг; Нидерланды и Германия обычно дают лучший баланс скорости и стабильности
Не РоссияРоссийская локация не решает задачу обхода: трафик остаётся внутри того же сегмента
Выделенный IPv4Обязателен. На shared-IP или NAT-хостинге Reality работать не будет
Канал100 Мбит/с хватает с запасом, 300 Мбит/с — комфортно
ОСUbuntu 22.04 / 24.04 LTS или Debian 12 — под них скрипт установки отлажен лучше всего
Панель управленияНе нужна. Выбирайте «No panel» — она только съедает память
ОплатаИз России карты Visa/Mastercard за рубежом не проходят. Смотрите хостеров с оплатой картой МИР, СБП или криптой
Проверьте репутацию IP перед настройкой. Дешёвые VPS часто выдают адрес из подсети, которую до вас использовали под спам. Симптом — Google и Cloudflare показывают капчу на каждом шаге, а часть сайтов просто не открывается. Если так — попросите у хостера сменить IP, обычно это делают бесплатно.

Где брать VPS

Дальше показываю на примере Fornex — там понятный интерфейс, оплата российскими картами и локации в Европе. Подойдёт любой хостер с теми же характеристиками, шаги установки от провайдера не зависят.

Скидки на VPS. Ссылки ниже — реферальные: по ним хостер даёт скидку вам, а нам небольшой процент. На цену для вас это не влияет, а из трёх вариантов можно выбрать тот, где условия оплаты удобнее.
  • Fornex — 5% скидки на VPS и VPN. Локации в Германии, Нидерландах, Швеции, Швейцарии.
  • 4VPS — 20% бонуса к первому пополнению или скидка на первый заказ.
  • AdminVPS — промокод OPENWRT даёт 30% скидки на оплату первого VPS.

Заказ сервера

После регистрации в панели хостера идём в раздел VPS и жмём New order.

Регистрация аккаунта на хостинге Fornex Раздел VPS в панели Fornex со списком виртуальных машин Кнопка New order для заказа новой виртуальной машины

Дальше — выбор тарифа и локации. Берём самый младший план (1 CPU / 1 ГБ / 10 ГБ), частоту процессора — 3.0 ГГц, операционную систему — Ubuntu 24.04 LTS, панель управления — No panel, локацию — Германию или Нидерланды.

Выбор тарифа, операционной системы и локации VPS в панели Fornex
Cloud NVMe 1 — 1 ядро, 1 ГБ RAM, 10 ГБ NVMe. Для VLESS этого достаточно с запасом

Через минуту-две сервер готов. Открываем его карточку — данные для подключения лежат в блоке Access via SSH: IP-адрес, готовая команда и пароль root.

Карточка VPS в Fornex с блоком Access via SSH: IP-адрес, команда подключения и пароль
Блок Access via SSH — отсюда берём IP, команду подключения и пароль. Их же понадобится сверить на этапе установки
Запишите IP сразу. Он понадобится трижды: для подключения по SSH, для проверки на этапе выпуска сертификата и в адресе панели. И ещё раз — если решите завернуть трафик через роутер.

Шаг 2. Подключаемся к серверу по SSH

В Windows 10/11, macOS и Linux SSH-клиент уже встроен — достаточно открыть терминал (в Windows это PowerShell или Терминал) и выполнить команду с IP вашего сервера:

ssh root@158.160.25.201

При первом подключении клиент спросит, доверяете ли вы отпечатку ключа сервера — отвечаем yes. Затем вводим пароль: символы при вводе не отображаются, это нормально, просто вставьте пароль и нажмите Enter.

Успешное подключение к VPS по SSH: приветствие Ubuntu 24.04 LTS в терминале
Приветствие Ubuntu и строка приглашения — вы внутри сервера

Если SSH — тёмный лес, начните с короткого разбора, что это такое и как им пользоваться. Там же — про ключи вместо паролей, что заметно безопаснее.

Обновляем пакеты и доставляем curl с wget, если их вдруг нет:

apt update && apt upgrade -y
apt install -y curl wget
Обновление пакетов Ubuntu и установка curl и wget в SSH-консоли
Пакеты обновлены, curl и wget на месте — можно ставить панель
Если вы вошли не под root. Часть хостеров даёт пользователя ubuntu или admin вместо root — тогда установка упадёт на правах доступа. Переключитесь одной командой: sudo -i. В приглашении должен появиться root@.

Шаг 3. Устанавливаем 3X-UI

Установка — одна команда. Скрипт сам определит архитектуру, скачает свежий релиз, поставит службу и проведёт через мастер настройки:

bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

Дальше скрипт задаст несколько вопросов. Разберём каждый — здесь легко нажать не то и потом полдня искать, почему панель не открывается.

Выбор базы данных

Database Selection
  1) SQLite    (default — recommended for < 500 clients)
  2) PostgreSQL (recommended for high client counts / many nodes)
Choose [1]:

Отвечаем 1. SQLite — это один файл /etc/x-ui/x-ui.db, его удобно бэкапить и он не требует отдельной службы. PostgreSQL нужен, когда клиентов сотни и вы строите на этом сервис.

Выбор базы данных при установке 3X-UI: SQLite или PostgreSQL
Для личного сервера — вариант 1, SQLite

Порт панели и учётные данные

Would you like to customize the Panel Port settings? [y/n]: n
Generated random port: 59330
Username and password updated successfully

Отвечаем n — и скрипт сам выберет случайный порт из верхнего диапазона, а заодно сгенерирует случайные логин, пароль и секретный путь (WebBasePath). Это лучше, чем свои «красивые» значения: панель на порту 54321 с логином admin находят сканеры за часы.

Генерация случайного порта панели 3X-UI при установке
Случайный порт 59330 и автоматически сгенерированные учётные данные — так безопаснее

Сертификат SSL

Дальше самый важный вопрос установки:

Choose SSL certificate setup method:
1. Let's Encrypt for Domain (90-day validity, auto-renews)
2. Let's Encrypt for IP Address (6-day validity, auto-renews)
3. Custom SSL Certificate (Path to existing files)
4. Skip SSL (advanced — behind reverse proxy / SSH tunnel only)

Как выбирать:

  • Есть свой домен, направленный на этот IP → вариант 1. Сертификат на 90 дней, панель откроется по https://ваш-домен:порт/путь.
  • Домена нет → вариант 2. Let’s Encrypt научился выдавать сертификаты прямо на IP-адрес; срок жизни всего 6 дней, но acme.sh продлевает его сам по расписанию.
  • Вариант 4 — только если панель уже спрятана за nginx/Caddy или вы ходите в неё через SSH-туннель. Иначе логин и пароль полетят по открытому HTTP.

Мы берём 2 — домена в примере нет.

Выбор способа выпуска SSL-сертификата при установке 3X-UI
Варианты 1 и 2 требуют открытого порта 80 — через него Let's Encrypt проверяет владение адресом

Следом скрипт просит подтвердить публичный IP. Сверьте его с тем, что показывал хостер — если сервер за NAT и адреса не совпадают, сертификат не выпустится:

Is 158.160.25.201 the correct incoming public IPv4 address for this server? [Default y]: y
Подтверждение публичного IPv4-адреса сервера при выпуске сертификата
Адрес должен совпадать с тем, что указан в панели хостера

Про IPv6 спрашивают следом — поле можно оставить пустым и нажать Enter, для работы VLESS он не нужен:

Запрос IPv6-адреса при установке 3X-UI — поле можно оставить пустым
IPv6 пропускаем — пустое поле и Enter

Последний вопрос — порт для проверки ACME. Оставляем 80:

Выбор порта 80 для ACME HTTP-01 при выпуске сертификата Let's Encrypt
Порт 80 должен быть открыт в фаерволе хостера, иначе проверка не пройдёт

Записываем данные для входа

Если всё прошло успешно, скрипт покажет блок Panel Installation Complete — самый ценный экран за всю установку:

Username:    IMG9JKq6gH
Password:    fIPBeVixgP
Port:        59330
WebBasePath: vwNkzqCGj12ew7W2vC
Database:    SQLite (/etc/x-ui/x-ui.db)
Access URL:  https://158.160.25.201:59330/vwNkzqCGj12ew7W2vC
API Token:   ZQ33f7BwZBmTzzwbZhIHDF1wf2G5dye2abCuHuSDYcqbT3DN
Окно успешной установки 3X-UI с логином, паролем, портом и адресом панели
Сохраните эти данные. Дубликат лежит на сервере в /etc/x-ui/install-result.env
Скопируйте всё в менеджер паролей прямо сейчас. Без WebBasePath вы не попадёте в панель: адрес https://IP:порт/ без секретного пути отдаёт 404, и это задумано — так панель не находят сканеры. Если потеряли — данные можно посмотреть на сервере командой cat /etc/x-ui/install-result.env или через меню x-ui.

Заодно скрипт поставит Fail2ban — он банит IP, с которых подбирают пароль к панели. Полезные команды на будущее:

x-ui              # интерактивное меню: смена логина, порта, перезапуск
x-ui status       # состояние службы
x-ui restart      # перезапуск панели
x-ui settings     # текущие настройки, включая WebBasePath
x-ui banlog       # кого забанил Fail2ban
x-ui update       # обновление панели вместе с ядром Xray
Завершение установки 3X-UI: список команд x-ui и вывод ufw status — inactive
Установка закончена, доступен весь набор команд x-ui. Внизу — ufw status: inactive: локальный фаервол выключен
Про фаервол. На большинстве VPS ufw по умолчанию выключен (Status: inactive), и порты фильтруются только на стороне хостера — в его панели. Это удобно на старте: не нужно ничего открывать вручную. Но если вы решите включить ufw, не забудьте разрешить порт панели и порт VLESS до того, как нажмёте enable, — иначе вы отрежете сами себя вместе с SSH.

Шаг 4. Первый вход в панель

Открываем Access URL в браузере. Если выбирали сертификат на IP, браузер может ругнуться на самоподписанность в первые секунды после выпуска — обновите страницу через минуту.

Страница входа в панель 3X-UI с полями имени пользователя и пароля
Вводим логин и пароль из блока Panel Installation Complete

После входа попадаем на дашборд: загрузка процессора, память, диск, скорость и число открытых сокетов. Сверху — статус ядра Xray · Запущен с номером версии.

Главный дашборд 3X-UI: загрузка CPU, память, диск, трафик и количество соединений
Дашборд 3X-UI v3.6.0 с ядром Xray v26.7.28. Зелёная точка слева сверху — ядро работает

Что настроить сразу

Загляните в Настройки панели — там несколько вещей, которые лучше поправить до того, как появятся клиенты.

Раздел «Настройки панели» в 3X-UI с предупреждением безопасности и полями порта и URI-пути
Красный блок сверху — встроенная проверка безопасности. Панель сама подсказывает, что стоит поменять
  • Язык интерфейса — русский, если он не подхватился сам.
  • URI-путь — тот самый секретный путь из установки. Менять не нужно, но полезно знать, где он лежит: если потеряете адрес панели, он здесь.
  • Вкладка «Уведомления» — привязка Telegram-бота. Панель будет писать о входах, перезапусках и присылать бэкапы базы.
  • Вкладка «Сертификаты» — тут видно срок жизни выпущенного сертификата.
Обратите внимание на блок «Предупреждения безопасности». Панель сама проверяет типовые дыры и на свежей установке чаще всего ругается на путь подписки: /sub/ по умолчанию известен всем, и его перебирают сканеры. Если раздаёте доступ по подписке — смените этот путь на случайный. Пароль и логин от самой панели меняются не здесь, а через меню x-ui в SSH.

Какой протокол выбрать

При создании входящего подключения 3X-UI предложит список протоколов. Коротко, что из этого зачем:

ПротоколКогда брать
VLESSОсновной выбор на сегодня. Без собственного шифрования — им занимается TLS/Reality, поэтому даёт минимальные накладные расходы и максимальную скорость
VMessПредшественник VLESS со встроенным шифрованием. Работает, но медленнее и заметнее для DPI. Ставить сегодня незачем
TrojanМаскируется под обычный HTTPS-сайт, требует домена и настоящего сертификата. Хорошая альтернатива, если у вас есть домен
ShadowsocksПростой и быстрый, но без TLS-маскировки узнаётся DPI по характерному профилю трафика
HysteriaПоверх QUIC/UDP. Отлично работает на плохих каналах с потерями, но UDP у части провайдеров режется или приоритизируется по остаточному принципу
WireGuardКлассический VPN. Быстрый, но DPI опознаёт его рукопожатие мгновенно — против блокировок нужен AmneziaWG
MTProtoНе VPN, а прокси именно для Telegram. Отличная штука в довесок — сделаем ниже

В этой инструкции — VLESS + Reality. Это связка, которая сейчас лучше всего переживает DPI: снаружи соединение выглядит как обычный визит на популярный зарубежный сайт, а сертификат в рукопожатии — настоящий, чужой и валидный.

Подробнее про сам формат ключа и что означают его параметры — в разборе что такое ключи VLESS.

Шаг 5. Создаём входящее подключение VLESS + Reality

Идём в раздел Входящие и жмём Создать подключение.

Раздел «Входящие» в 3X-UI с кнопкой создания подключения
Список входящих пока пуст — создаём первое подключение

Откроется окно с вкладками: Основное, Протокол, Поток, Безопасность, Сниффинг, Расширенный шаблон. Пройдём по ним по очереди.

Вкладка «Основное»

  • Примечание — любое имя, например vless-main. Оно попадёт в название сервера у клиента.
  • Протокол — выбираем vless.
  • Адрес — оставляем пустым, чтобы слушать все интерфейсы.
  • Порт — вот здесь стоит подумать (см. врезку ниже).
  • Общий расход, Сброс трафика, Дата окончания — для личного сервера не трогаем.
Выбор протокола vless в окне создания входящего подключения 3X-UI Вкладка «Основное» входящего подключения 3X-UI: примечание germany и порт 443
Какой порт ставить. По умолчанию панель подставит случайный (у нас при создании был 20954), и это рабочий вариант. Но 443 лучше: весь HTTPS в мире идёт через него, и соединение на 443 не выделяется в статистике провайдера. Reality как раз притворяется HTTPS — логично, чтобы и порт совпадал. Нестандартный пятизначный порт у части мобильных операторов и в корпоративных сетях просто закрыт.
Протокол меняется только при создании. На скриншоте выше поле «Протокол» серое — это уже режим редактирования. Если ошиблись с протоколом, входящее придётся удалить и создать заново; порт, примечание и настройки безопасности правятся в любой момент.

Вкладка «Поток» — транспорт

Здесь всё просто: Транспорт — RAW (в старых версиях этот же режим назывался TCP). Остальные тумблеры — Proxy Protocol, HTTP Обфускация, Sockopt — не трогаем.

Вкладка «Поток» в 3X-UI: выбор транспорта RAW
RAW — единственный транспорт, с которым работает Reality
Reality работает только с RAW. WebSocket, gRPC и XHTTP с ним несовместимы: Reality подменяет TLS-рукопожатие и требует прямого соединения. Эти транспорты нужны для другого сценария — когда точка входа стоит за CDN, как при белых списках. Выберете WS вместе с Reality — узел не поднимется.

Вкладка «Безопасность» — Reality

Главная вкладка. Переключаем Безопасность на Reality — и появляется десяток полей.

Вкладка «Безопасность» в 3X-UI с выбранным режимом Reality и полями настроек
Ключи, Short IDs и SpiderX панель генерирует сама — вручную заполняем только «Цель» и uTLS

Что означает каждое поле:

ПолеЧто это
uTLSОтпечаток браузера, под который маскируется TLS-рукопожатие клиента
Цель (dest)Настоящий сайт, к которому сервер проксирует «чужие» соединения. Обязательно с портом: www.amd.com:443
SNI (serverNames)Список доменов, которые клиенту разрешено называть в рукопожатии. Заполняется автоматически из сертификата цели
Short IDsКороткие метки, по которым сервер отличает своих клиентов от случайных гостей. Панель генерирует набор сама
Публичный / приватный ключПара ключей X25519. Приватный остаётся на сервере, публичный уходит в ссылку клиента
SpiderXПуть, по которому клиент ходит на сайт-маскировку для правдоподобия. Оставляем как есть
XverВерсия PROXY protocol. Ставится в 0, если перед Xray нет nginx или HAProxy
Мин./макс. версия клиентаОтсекает старые клиенты. Пустые поля = без ограничений
Ключи Reality можно сгенерировать и заранее — например, чтобы подготовить конфиг до установки сервера. Пара X25519 считается прямо в браузере нашим генератором ключей Reality, наружу ничего не уходит.

Отпечаток uTLS

В поле uTLS выбираем firefox. Раньше по умолчанию ставили chrome, но именно хромовый отпечаток стал самым массовым — и первым, по которому системы фильтрации учатся ловить нестыковки между заявленным браузером и поведением соединения.

Выбор отпечатка uTLS firefox в настройках Reality в 3X-UI
Список отпечатков: chrome, firefox, safari, ios, android, edge. Firefox сейчас — разумный выбор по умолчанию

Отпечаток должен совпадать на сервере и в клиенте — панель подставит его в ссылку сама. Если у вашего провайдера конкретный вариант не идёт, попробуйте другой: это одно поле, и его смена не требует пересоздания подключения.

Что такое SNI и как работает маскировка

Прежде чем выбирать сайт для маскировки, стоит понять, что именно видит провайдер. Это тот случай, когда пять минут теории экономят вечер отладки.

Когда браузер открывает https://example.com, он сначала устанавливает TLS-соединение. И самая первая посылка в этом обмене — ClientHello — уходит в открытом виде, до всякого шифрования. Внутри неё есть поле SNI (Server Name Indication) — имя сайта, к которому вы обращаетесь. Оно там нужно по делу: на одном IP-адресе живут тысячи сайтов, и сервер должен понять, чей сертификат отдавать.

Побочный эффект: провайдер читает SNI каждого вашего соединения. Не содержимое — его защищает шифрование, — но адрес назначения виден всем по дороге. Именно по SNI и работает большинство блокировок: DPI ищет в поле запрещённый домен и рвёт соединение.

Отсюда три поколения маскировки:

  • Обычный TLS с вашим доменом. В SNI стоит vpn.мой-домен.ру. Домен свежий, трафика на нём нет, ходит по нему один человек круглосуточно — для DPI это яркая аномалия, такие домены находят и блокируют.
  • Domain fronting. В SNI пишется разрешённый домен, а внутри шифрования — запрос к другому. Работало, пока крупные CDN не закрыли эту лазейку у себя.
  • Reality. Ваш сервер не притворяется чужим сайтом — он действительно проксирует к нему соединения. Клиент в ClientHello называет www.amd.com, сервер устанавливает настоящее TLS-соединение с реальным www.amd.com и отдаёт клиенту его подлинный сертификат.

Ключевой момент, ради которого всё затевалось: у Reality нет собственного сертификата, который можно было бы опознать. Проверяющий видит валидный сертификат DigiCert, выданный на amd.com, и настоящее рукопожатие TLS 1.3 с настоящим сервером AMD.

А различает своих и чужих сервер по Short ID внутри рукопожатия. Пришёл клиент с правильным коротким идентификатором и знанием публичного ключа — соединение уходит в туннель. Пришёл кто-то другой, включая цензора, который решил проверить ваш IP, — его молча проксируют на настоящий amd.com, и он увидит обычный корпоративный сайт. Активное зондирование — когда систему фильтрации натравливают на подозрительный адрес — на этом и ломается.

Почему в поле SNI список из двадцати доменов. Панель вытаскивает из сертификата цели все имена, на которые он выдан: amd.com, www.amd.com, shop.amd.com и так далее. Клиент может назвать любое из них — соединения выглядят разнообразнее, чем если бы все они шли на один-единственный хост.

Как выбрать сайт для маскировки

В 3X-UI встроен сканер: он проверяет кандидатов и показывает, годится ли сайт для Reality. Нажимаем Найти цели рядом с полем «Цель».

Кнопка «Найти цели» и подсказка о том, что цель должна содержать порт
Подсказка не врёт: без порта в поле «Цель» ядро Xray не запустится

Сканер вернёт таблицу с колонками TLS, ALPN, обмен ключами, сертификат и задержка. Зелёный статус «Подходит» — сайт удовлетворяет требованиям Reality.

Сканер целей REALITY в 3X-UI со списком подходящих сайтов и задержкой
Кандидаты с задержкой 45–90 мс. Жмём «Выбрать» напротив подходящего — поля «Цель» и SNI заполнятся сами

Требования к сайту-маскировке:

  • TLS 1.3 — обязательно. На 1.2 механика Reality не работает;
  • ALPN h2 — сайт должен уметь HTTP/2;
  • X25519 в обмене ключами;
  • не за Cloudflare и не в России — цель должна быть настоящим зарубежным сервером, а не CDN, куда вас и так маршрутизируют локально;
  • низкая задержка от вашего VPS — цель должна быть географически близко к серверу, а не к вам. Немецкий VPS + европейский сайт = 40–70 мс;
  • сайт крупный и живой — трафик к нему не должен вызывать вопросов.

Плохие кандидаты: домены Google (у них своя специфика с QUIC и слишком много внимания), российские сайты, всё за Cloudflare, мелкие сайты без постоянного потока посетителей, а также самые заезженные варианты вроде www.microsoft.com — по ним уже накоплена статистика.

Хорошие: сайты производителей железа и техники (AMD, Intel, NVIDIA, Samsung, Sony), крупные зарубежные магазины и медиа, которые никто не блокирует и к которым обращаются постоянно.

После выбора цели поле окрасится зелёным, а SNI заполнится автоматически:

Итоговые настройки Reality в 3X-UI: цель www.amd.com:443, TLS 1.3, ALPN h2 и список SNI
Цель проверена: TLS 1.3, ALPN h2, обмен ключами X25519MLKEM768, сертификат amd.com от DigiCert, задержка 65 мс
Если конкретная цель не пошла — соединение поднимается, но сайты не грузятся, — просто выберите в сканере другую и нажмите «Сохранить». Ссылки клиентов при этом придётся раздать заново: SNI входит в строку подключения.

Вкладка «Сниффинг»

Последняя вкладка перед созданием. Сниффинг позволяет Xray заглядывать в первый пакет соединения и определять настоящее доменное имя — без этого маршрутизация по доменам работать не будет.

Вкладка «Сниффинг» в 3X-UI с включёнными HTTP, TLS, QUIC и FAKEDNS
Включаем сниффинг с HTTP, TLS, QUIC и FAKEDNS — так сервер видит домены, а не только IP-адреса

Включать стоит, если вы планируете правила маршрутизации (например, российские сайты — напрямую, остальное — в туннель). Если сервер используется как простой полный туннель, без сниффинга тоже всё работает.

Жмём Создать — подключение появится в списке.

Созданное входящее подключение vless + TCP + Reality в списке входящих 3X-UI
Метки vless / TCP / Reality в строке подключения — всё собралось правильно

Шаг 6. Добавляем клиента и получаем ссылку

Входящее подключение — это «дверь». Теперь нужен ключ от неё. В версии 3.6.0 клиенты вынесены в отдельный раздел меню — Клиенты.

Раздел «Клиенты» в боковом меню панели 3X-UI
Раздел «Клиенты» — все пользователи всех входящих в одном списке

Жмём Добавить клиентов и заполняем:

  • Email — просто идентификатор, почта не нужна. Панель подставит случайную строку, её удобно оставить как есть;
  • Лимит трафика (ГБ)0 означает «без ограничений»;
  • Лимит IP — сколько устройств может подключаться одновременно. 0 — без ограничений, для себя удобно поставить 3–5, чтобы заметить утечку ключа;
  • Срок действия — для себя оставляем пустым;
  • Привязанные входящие — обязательное поле: выбираем созданное подключение (in-20954-tcp).
Форма добавления клиента в 3X-UI с полем «Привязанные входящие»
Ключевое поле — «Привязанные входящие». Без него клиент создастся, но подключиться не сможет
По клиенту на устройство. Соблазн раздать один ключ на телефон, ноутбук и роутер велик, но лучше сделать три клиента: видно, кто сколько трафика съел, и при утечке достаточно удалить одного, не переподключая остальных.

Ещё одно поле, до которого стоит дойти, — Flow на вкладке «Учетные данные». Для связки VLESS + Reality + RAW рекомендуемое значение — xtls-rprx-vision: этот режим отдаёт часть работы напрямую ядру, добавляет случайную набивку пакетов и заметно ускоряет тяжёлый трафик вроде видео. Пустой Flow (в карточке отображается как «Нет») тоже работает — просто медленнее и чуть заметнее для анализа по размерам пакетов.

Вкладка «Учетные данные» клиента в 3X-UI: UUID, пароль, ID подписки, Flow xtls-rprx-vision и секрет MTProto
Вкладка «Учетные данные»: здесь живут UUID, ID подписки, Flow и секрет MTProto. Кнопка справа от поля перегенерирует значение

На этой же вкладке лежат остальные секреты клиента, и каждый — под свой протокол: UUID для VLESS и VMess, Пароль для Trojan и Shadowsocks, Hysteria Auth для Hysteria, Секрет MTProto для телеграм-прокси. Панель генерирует их сразу все, поэтому один клиент работает с любым входящим, к которому его привязали.

Flow должен совпадать на сервере и в клиенте. Панель подставляет его в ссылку сама, но если вы поменяли значение уже после раздачи ключей — старые ссылки перестанут работать. Симптом характерный: соединение устанавливается и сразу рвётся. Раздайте ссылки заново.

После создания клиент появится в списке. Нажимаем значок i в колонке «Действия»:

Значок информации о клиенте в списке клиентов 3X-UI
Значок «i» открывает карточку клиента со всеми ссылками

В карточке — UUID, ID подписки, статистика и блок Копировать ссылку с готовыми строками подключения и QR-кодами.

Карточка клиента в 3X-UI со ссылками VLESS Reality и MTProto
Кнопка копирования рядом со ссылкой, вторая кнопка — QR-код для телефона
Ссылка vless:// — это и есть ваш доступ. В ней зашиты UUID, публичный ключ и Short ID. Кто угодно, кому она попадёт, подключится к вашему серверу. Не выкладывайте её в чаты и не показывайте на скриншотах.

Шаг 7. Подключаем клиента

Ссылка одна и та же для всех приложений — меняется только то, куда её вставлять.

ПлатформаПриложение
AndroidHapp, v2rayNG, NekoBox, Hiddify
iOSHapp, Streisand, V2Box, Shadowrocket
WindowsHiddify, v2rayN, NekoRay
macOSHapp, V2Box, Hiddify
Роутер OpenWrtpodkop, Passwall2 + Xray, Netshift

В мобильном приложении проще всего нажать «+», выбрать «Из буфера обмена» (или отсканировать QR-код с экрана) и подключиться.

Приложение Happ на телефоне: подключение к своему серверу VLESS установлено
Happ подключился к своему серверу: VLESS, задержка 226 мс

Проверка результата: откройте 2ip.ru и посмотрите строку «Вы из». Должна быть страна вашего VPS.

Для всей квартиры — на роутер. Телевизор, приставка, телефоны гостей: ставить клиент на каждое устройство не нужно. Ссылку достаточно один раз прописать на роутере с OpenWrt — и обход заработает для всей сети. Как это делается, разобрано в инструкции по VLESS на роутере через podkop, а если ссылку нужно превратить в JSON-конфиг или обратно — поможет конвертер.

Бонус: MTProto-прокси для Telegram

Пока сервер уже стоит, можно бесплатно получить второй сервис. MTProto — это встроенный протокол прокси самого Telegram: он работает только для мессенджера, зато включается прямо в клиенте, без VPN-режима и без расхода батареи на весь трафик.

Создаём ещё одно входящее подключение, протокол — mtproto:

Создание входящего подключения с протоколом mtproto в 3X-UI
Порт панель подставит случайный — его можно оставить

На вкладке Протокол есть поле Домен FakeTLS (SNI) — по умолчанию www.cloudflare.com. Это то же самое, что «Цель» у Reality, только для MTProto: соединение маскируется под визит на указанный сайт.

Настройка домена FakeTLS для MTProto-прокси в 3X-UI
Домен FakeTLS можно оставить стандартным или заменить на другой популярный сайт

Дальше в карточке клиента появится вторая ссылка — с меткой MTProto FAKETLS. Открываете её на телефоне, Telegram сам предложит добавить прокси.

Зачем это нужно, если есть VLESS. MTProto включается внутри Telegram и не трогает остальной трафик: банки, госуслуги и маркетплейсы продолжают видеть ваш настоящий IP. Плюс он выживает в ситуациях, когда VPN-режим на телефоне запрещён политиками или мешает работе других приложений.

На что обратить внимание в серверном конфиге

Чек-лист, по которому стоит пройтись после настройки — здесь собраны решения, которые потом сложно менять:

  • Порт входящего — 443. Самый неприметный вариант для Reality. Случайный пятизначный работает, но закрыт в части мобильных и корпоративных сетей.
  • Цель и SNI из одного сертификата. Если вписать в SNI домен, которого нет в сертификате цели, рукопожатие развалится. Всегда заполняйте это поле через сканер, а не руками.
  • Порт в поле «Цель» обязателен. www.amd.com без :443 — и Xray не стартует вообще.
  • uTLS одинаковый на обеих сторонах. Панель кладёт отпечаток в ссылку, но если правите конфиг руками — следите за совпадением.
  • Flow — xtls-rprx-vision. Для Reality поверх RAW это рабочий по умолчанию режим: быстрее и незаметнее пустого Flow.
  • Short IDs не удаляйте все. Пустой список означает, что подойдёт любой клиент, знающий публичный ключ.
  • Приватный ключ никогда не покидает сервер. В ссылку клиента идёт только публичный. Если приватный где-то засветился — генерируйте новую пару и раздавайте ссылки заново.
  • Порт панели ≠ порт VPN. Это разные вещи. Панель на 59330, VLESS на 443 — так и должно быть.
  • Фаервол хостера. Откройте 443 (или ваш порт), 80 (для продления сертификата) и порт панели. Про закрытые порты вспоминают в последнюю очередь, а симптом ровно тот же, что при ошибке в конфиге.
  • Бэкап базы. /etc/x-ui/x-ui.db — это все клиенты и настройки. Панель умеет отправлять бэкап в Telegram-бота, это делается в настройках.
  • Обновления. x-ui → пункт обновления. Ядро Xray обновляется вместе с панелью; после обновления проверьте, что входящие поднялись.
Не гоните весь трафик через туннель без разбора. Российские банки и госуслуги при заходе с немецкого IP начнут запрашивать подтверждения, а часть сервисов просто откажет. Правильнее развести трафик: заблокированное — в туннель, российское — напрямую. На роутере это делает podkop, на компьютере — режим по правилам в клиенте.

Почему подключения может не быть

Разбор по симптомам — от самого частого к редкому.

Клиент пишет «подключено», но сайты не открываются. Классика Reality. Проверьте по очереди: цель ещё жива (прогоните сканер повторно), SNI в ссылке совпадает с тем, что в панели, отпечаток uTLS одинаковый. Чаще всего виновата цель — сайт сменил конфигурацию TLS или стал недоступен с вашего VPS.

Соединение вообще не устанавливается, таймаут. Порт закрыт. Проверьте по порядку: слушает ли Xray нужный порт, что говорит локальный фаервол и открыт ли порт в панели хостера.

ss -tlnp | grep xray        # слушает ли Xray нужный порт
ufw status                  # правила локального фаервола

Если ufw показывает inactive, а порт всё равно недоступен снаружи — фильтрует хостер, идите в его панель. Если ufw активен, порт нужно открыть явно: ufw allow 443/tcp.

Панель не открывается по своему адресу. Убедитесь, что в URL есть WebBasePath — без секретного пути будет 404. Данные можно перечитать на сервере:

cat /etc/x-ui/install-result.env
x-ui settings

Работало, потом перестало — и на всех устройствах сразу. Провайдер начал резать эту цель или IP сервера попал в блокировку. Смените цель Reality на другую из сканера; если не помогло — проверьте, отвечает ли сервер вообще (ping до IP), и при необходимости попросите у хостера смену адреса.

Работает на Wi-Fi, не работает на мобильном интернете. Первое подозрение — нестандартный порт: у операторов он может быть закрыт, перенесите входящее на 443. Если и на 443 глухо, а госуслуги при этом открываются — вы попали под белые списки, и там нужен другой подход: Reality против них не работает в принципе.

Xray не запускается после сохранения настроек. Смотрите логи прямо в панели — кнопка Логи на дашборде. Самые частые причины: цель без порта, занятый порт, Reality вместе с транспортом WebSocket или gRPC.

Скорость заметно ниже, чем на тарифе хостера. Проверьте загрузку CPU на дашборде: если он в полке, упирается шифрование — берите тариф с более быстрым ядром. Если процессор свободен, дело в маршруте до вашего провайдера, помогает смена локации сервера.

Всё поднялось, но Google и Cloudflare показывают капчу. Плохая репутация IP-адреса — им до вас пользовались для рассылок. Решается только сменой адреса у хостера.

Часть сайтов открывается через раз. Обычно виноват QUIC: браузер уходит по UDP/443 мимо ваших правил. Отключите QUIC в браузере или заблокируйте UDP/443 на роутере.

Проверить, жив ли сервер, не заходя в панель, можно инструментом проверки серверов — он принимает ссылку и показывает, отвечает ли узел.

Частые вопросы

Сколько стоит свой VPN на 3X-UI? Только аренда VPS — от 300 до 700 рублей в месяц за минимальную конфигурацию в Европе. Сама панель, ядро Xray и сертификат Let’s Encrypt бесплатны. Одного сервера хватает на всю семью.

Хватит ли VPS с 1 ГБ RAM? Да, с запасом. На скриншотах в статье панель с работающим ядром занимает около 400 МБ памяти и 0.6% процессора. Упереться можно в скорость шифрования на слабом CPU, но не в память.

Чем 3X-UI отличается от Marzban и Hiddify? Все три — панели поверх Xray. 3X-UI проще всех ставится и лучше подходит для личного сервера. Marzban рассчитан на продажу подписок и много узлов, Hiddify — что-то среднее с упором на готовые пресеты. Для себя и семьи 3X-UI — оптимальный выбор.

Нужен ли домен для Reality? Нет, и это его главное удобство. Reality использует чужой сертификат настоящего сайта, поэтому свой домен и свой сертификат не нужны — хватает IP-адреса. Домен понадобится только для протокола Trojan или обычного TLS.

Reality точно защищает от блокировок? Против DPI и блокировок по чёрному списку это сейчас один из самых устойчивых вариантов: трафик неотличим от визита на реальный сайт, а активное зондирование упирается в подлинный чужой сертификат. Против белых списков, где разрешён только трафик к перечню адресов, Reality не поможет — там нужна точка входа за разрешённым CDN.

Что выбрать при установке, если у меня нет домена? Вариант 2 — Let’s Encrypt для IP-адреса. Сертификат живёт 6 дней, но acme.sh продлевает его автоматически по cron. Панель будет доступна по HTTPS и IP-адресу.

Провайдер видит, что я пользуюсь VPN? Он видит факт TCP-соединения с вашим IP и имя сайта в SNI — то есть www.amd.com вместо чего-либо подозрительного. Содержимое трафика зашифровано, а профиль соединения совпадает с обычным HTTPS.

Можно ли раздать доступ друзьям? Да, для этого панель и нужна: создайте отдельного клиента на каждого, при желании с лимитом трафика и сроком. Ссылку каждый добавляет в своё приложение. Учтите: весь их трафик пойдёт с вашего IP-адреса.

Сервер выключится, если не продлить VPS? Да, и вместе с ним пропадут все настройки. Хостеры обычно дают несколько дней на продление и предупреждают письмом. Держите включённым бэкап базы в Telegram — восстановление на новом сервере займёт пару минут.

Как перенести всё на другой сервер? Установить 3X-UI на новом VPS и восстановить бэкап базы через раздел «Бэкап и восстановление». Ссылки клиентов при этом изменятся: в них зашит IP-адрес.

Что делать после обновления панели? Зайти на дашборд и проверить, что ядро в статусе «Запущен», а входящие подключения активны. Изредка после мажорных обновлений меняются названия полей — как транспорт TCP, который стал называться RAW.

Итог

Весь путь занимает минут двадцать: заказать VPS, подключиться по SSH, запустить скрипт установки, создать одно входящее подключение VLESS + Reality и одного клиента. Дальше сервер работает сам, а панель нужна только чтобы добавить нового человека или сменить цель маскировки, если старая перестала пропускать.

Три вещи, которые определяют, будет ли всё это работать: порт 443 вместо случайного, живая цель Reality с TLS 1.3 и низкой задержкой от вашего VPS, и разведённый трафик — заблокированное в туннель, российское напрямую.

Если нужно накрыть обходом сразу всю квартиру — ссылку с этого сервера можно прописать на роутере: VLESS через podkop для простого сценария, Passwall2 + Xray — когда серверов несколько и нужна маршрутизация по правилам. А если разбираться некогда, мы настраиваем роутер под ключ или отдаём готовый ключ VLESS без своего сервера.