Свой VLESS Reality сервер на VPS через 3x-ui
3x-ui это веб-панель для Xray: пользователи, ключи, лимиты трафика и ссылки для приложений собраны в одном окне, а конфиги в JSON руками писать не нужно. Эта инструкция для тех, кто поднимает свой первый сервер: поставим панель, спрячем её от сканеров, заведём подключение VLESS Reality и подключим устройства.
Reality на серверах OBLAKO разрешён
Держать VLESS Reality на VPS OBLAKO можно: правила разрешают личный VPN для себя и домашнего круга. Сервер, настроенный по этой инструкции с маскировкой под ваш собственный домен, полностью соответствует правилам, и вопросов к нему у нас не будет. Запрещены публичная раздача и продажа доступа. И ещё одно условие: в SNI должен стоять ваш домен. Сервер, который отдаёт сертификат популярного чужого сайта (Google, Microsoft, Яндекс и подобных), система OBLAKO находит и выключает автоматически, потому что РКН блокирует такие IP-адреса целиком.
Сервер получится личный: для вас, семьи или небольшой команды. Так разрешают правила OBLAKO, публичный доступ и продажа подписок запрещены.
Что понадобится
- VPS с Ubuntu 22.04, 24.04 или Debian 12. Для нескольких устройств хватает младшего тарифа, см. тарифы VPS.
- Свой домен, направленный на IP сервера. Дешёвый домен можно взять прямо в панели OBLAKO, подробнее в статье Домен для self-steal.
- Терминал с SSH: на Windows подойдёт встроенный PowerShell, см. подключение по SSH.
Зачем домен, если Reality работает и без него
Раньше Reality настраивали под чужой крупный сайт, и домен был не нужен. В 2026 году такие серверы в России находят и блокируют по несоответствию имени сайта и сети хостера. Почему так и чем помогает свой сайт, разобрано в статье Блокировки VLESS Reality и self-steal. Здесь сразу делаем правильно.
Шаг 1. Подготовьте сайт-маскировку
Reality отдаёт любому постороннему посетителю настоящий сайт. Этим сайтом будет ваш собственный: nginx с сертификатом Let's Encrypt, который слушает только локальный адрес 127.0.0.1:8443.
Выполните шаги 1, 2 и 3 из статьи про self-steal: A-запись домена, nginx с certbot и перенос сайта на локальный порт. Xray оттуда ставить не нужно, его принесёт панель. Когда curl -sk https://127.0.0.1:8443 -H "Host: ВАШ_ДОМЕН" на сервере отдаёт вашу страницу, можно продолжать.
Шаг 2. Установите 3x-ui
Подключитесь к серверу по SSH и запустите официальный установщик проекта MHSanaei:
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)Скрипт скачает панель вместе с Xray, создаст службу x-ui и задаст несколько вопросов. Отвечайте так (инструкция проверена на 3x-ui 3.11.0):
| Вопрос установщика | Что ответить |
|---|---|
| Database Selection | 1, SQLite: для личного сервера этого достаточно |
| Customize the Panel Port settings? | n, панель получит случайный порт |
| Choose SSL certificate setup method | 4, Skip SSL |
| Bind the panel to 127.0.0.1 only? | y |
Не нажимайте Enter на вопросе про SSL
Если оставить ответ пустым, установщик выберет вариант 2 и попробует выпустить сертификат на IP через acme.sh на порту 80. Этот порт уже занят nginx из шага 1, так что выпуск сломается. Сертификат панели не нужен: она будет доступна только через SSH-туннель, а HTTPS снаружи обслуживает ваш nginx.
После ответа y панель слушает только 127.0.0.1 и снаружи не видна. В конце скрипт выведет блок с полями Username, Password, Port и WebBasePath (секретный путь панели). Сохраните их в менеджер паролей: это ключи от всего сервера.
Потерянные данные можно посмотреть или сбросить в меню, которое открывается командой x-ui: пункт View Current Settings показывает порт и путь, Reset Username & Password задаёт новые логин и пароль.
Почему без доступа снаружи
Сканеры круглосуточно ищут панели 3x-ui на случайных портах, а адрес вида http://IP:порт/путь без HTTPS передаёт пароль открытым текстом. Поэтому панель работает только через SSH-туннель, а снаружи остаются SSH, 80 и 443.
Шаг 3. Зайдите в панель через туннель
SSH-туннель пробрасывает порт панели с сервера на ваш компьютер. Снаружи порт не виден, а в браузере вы открываете его как локальный.
На своём компьютере выполните, подставив порт панели из шага 2:
ssh -L 8080:127.0.0.1:ПОРТ_ПАНЕЛИ root@IP_СЕРВЕРАПока это окно открыто, панель доступна по адресу http://127.0.0.1:8080/СЕКРЕТНЫЙ_ПУТЬ/. Язык интерфейса переключается на русский в настройках панели. Войдите и сразу загляните в Настройки панели:
- Поменяйте логин и пароль на свои длинные.
- Проверьте, что в поле IP-адрес для управления панелью стоит
127.0.0.1. Его выставил установщик после ответаy. - Если подписки (шаг 6) вам не нужны, выключите переключатель Включить подписку. Сервер подписок включён сразу после установки и слушает порт 2096 на всех адресах.
Теперь включите файрвол и оставьте открытыми только нужные порты:
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enableПорт 80 нужен certbot для продления сертификата. Порты панели и подписок (2096) файрвол теперь закрывает для всех, кроме самого сервера. Подробнее о защите сервера читайте в статье Как защитить свой VPS.
Шаг 4. Создайте подключение VLESS Reality
В меню откройте Входящие и нажмите Создать подключение. Форма разбита на вкладки. Ниже названия полей из 3x-ui 3.11.0, в русском интерфейсе рядом указан перевод:
| Вкладка | Поле | Что указать |
|---|---|---|
| Basics | Protocol | vless |
| Basics | Port | 443 |
| Basics | Share address strategy (Стратегия адреса для ссылок) | Custom, а в появившемся поле Custom share address впишите ВАШ_ДОМЕН |
| Stream (Поток) | Transmission (Транспорт) | RAW, это бывший tcp |
| Security (Безопасность) | Security | Reality |
| Security | uTLS | chrome |
| Security | Target (Цель) | 127.0.0.1:8443 |
| Security | SNI | ВАШ_ДОМЕН |
| Security | Short IDs | оставьте сгенерированные |
Ключи Reality создаёт кнопка Get New Cert (Получить новый сертификат) под полями Public Key и Private Key. Приватный ключ остаётся на сервере, публичный попадёт в ссылку клиента автоматически. Нажмите Create.
Пользовательский адрес для ссылок нужен потому, что вы открываете панель через туннель: без него панель подставит в ссылки 127.0.0.1, и с телефона они работать не будут.
Только свой домен
Не вписывайте в Target и SNI чужие сайты вроде google.com или microsoft.com, даже если так советуют старые инструкции. Как выбирать имя для Reality и чем рискует каждый вариант, разобрано в статье Как выбрать SNI для Reality.
Проверьте маскировку: откройте https://ВАШ_ДОМЕН в браузере. Должна открыться ваша страница с нормальным сертификатом. Если вместо неё ошибка, значит Xray не может достучаться до nginx на 127.0.0.1:8443.
Шаг 5. Добавьте пользователей и подключите устройства
В 3x-ui 3.x клиенты живут на отдельной странице Клиенты и привязываются к подключениям. Нажмите Добавить клиентов и заполните форму:
- На вкладке Основные задайте имя в поле Email (это просто метка, настоящая почта не нужна) и при желании лимит трафика и срок действия.
- В поле Привязанные входящие выберите подключение из шага 4.
- На вкладке Учетные данные в поле Flow выберите
xtls-rprx-vision. Поле появляется после привязки VLESS-подключения. Это режим Vision: он убирает характерный для прокси «TLS внутри TLS» и ускоряет передачу.
Заведите отдельного клиента на каждого человека или устройство: так видно, кто сколько тратит, и любой доступ можно отозвать, не трогая остальных.
Ссылку vless:// и QR-код открывает кнопка QR-код в строке клиента. Проверьте, что в ссылке стоит ваш домен, а не 127.0.0.1. Если там локальный адрес, вернитесь к полю Custom share address из шага 4.
Приложения, которые понимают VLESS Reality с Vision:
- Windows: v2rayN, Hiddify, Happ.
- macOS: v2rayN, Hiddify, Happ.
- Android: v2rayNG, Hiddify, Happ.
- iPhone и iPad: Happ, Hiddify, Streisand.
Скачивайте их с GitHub разработчиков или из официальных магазинов: в App Store много клонов с похожими названиями. Во всех приложениях работает одно и то же: скопируйте ссылку и выберите импорт из буфера или отсканируйте QR-код камерой.
Держите приложения обновлёнными. Сервер может ограничить минимальную версию клиента (параметр Min Client Ver на вкладке Security), а Xray с 26.7.11 по 26.9.7 по умолчанию не пускал клиентов на ядре старше 26.3.27. В текущих версиях ограничения по умолчанию нет, но старые сборки клиентов всё равно отстают по совместимости.
Шаг 6. Подписка вместо ссылок
Ссылка хороша, пока вы ничего не меняете. Если потом смените домен, порт или ключи, придётся заново раздавать ссылки всем. Подписка решает это: клиент сам забирает актуальные настройки по адресу.
В 3x-ui подписка включена сразу после установки, её параметры в Настройки панели, раздел Подписка. Чтобы её адрес не выдавал сервер:
- поменяйте URI-путь подписки со стандартного
/sub/на случайный; - отдавайте её через ваш nginx по HTTPS, а не открытым портом 2096 по HTTP, иначе параметры подключения уходят открытым текстом;
- не публикуйте ссылку на подписку в чатах и каналах.
Если устройств мало и настройки вы меняете редко, подписку можно не включать вовсе.
Обновления
Панель обновляется через меню x-ui, пункт Update. Xray внутри панели обновляется отдельно: на странице Дашборд нажмите на версию Xray и выберите новую (Выбор версии). Это важно: 3x-ui 3.11.0 ставит Xray 26.10.21, а исправление уязвимости MPTCP вышло в 26.10.31.
Раз в месяц стоит проверять обновления и заглядывать в описание релиза на GitHub: в 2026 году в Xray несколько раз выходили срочные исправления безопасности, а часть старых настроек объявлена устаревшей. Что изменилось в последних версиях, собрано в статье XHTTP и VLESS Encryption.
Перед обновлением сделайте копию базы панели: при выборе SQLite это файл /etc/x-ui/x-ui.db.
cp /etc/x-ui/x-ui.db /root/x-ui-$(date +%F).dbЕсли что-то не работает
- Подключение не устанавливается вообще: проверьте, что служба запущена (
systemctl status x-ui) и порт 443 открыт в файрволе. - Сайт по домену не открывается: проблема в nginx или DNS, вернитесь к шагу 1.
- Работало и перестало: пройдите по шагам статьи VLESS Reality перестал работать, там разобраны блокировки IP, SNI и мобильные сети.