VPSРейтинг
VPN6 марта 2026 · 15 мин чтения

VLESS + Xray + Reality на VPS: личный прокси, который не блокируют

Reality — это технология, которая делает ваш трафик неотличимым от обычного HTTPS даже для глубокой инспекции пакетов (DPI). Настроим 3X-UI — веб-панель для Xray — и поднимем личный прокси за 15 минут. Без собственного домена и SSL-сертификата для самого прокси, с подключением через QR-код.

1. Как работает Reality: почему его не блокируют

Обычные VPN (WireGuard, OpenVPN) создают зашифрованный туннель с характерным «отпечатком», который DPI распознаёт и блокирует. VLESS Reality работает иначе.

Что видит DPI при Reality-соединении

1

TLS ClientHello с реальным SNI

Клиент начинает TLS-хендшейк, указывая SNI целевого сайта (например, www.microsoft.com). DPI видит запрос к доверенному домену.

2

Сервер получает сертификат целевого сайта

Xray-сервер обращается к настоящему целевому сайту (dest) и получает его реальный TLS-сертификат. Для неаутентифицированных клиентов (DPI, сканеры) соединение просто проксируется к настоящему сайту.

3

Аутентификация через shortId

Клиент, знающий публичный ключ x25519 и shortId, аутентифицируется через общий секрет. Обычный браузер или сканер пройти не может — и просто получит контент настоящего сайта.

4

XTLS Vision убирает двойное шифрование

Flow xtls-rprx-vision пропускает уже зашифрованные TLS-данные без повторного шифрования — выше скорость, меньше нагрузка.

Итог

DPI видит корректный TLS к доверенному домену — заблокировать означает заблокировать этот домен. Reality не использует собственный домен и не требует SSL-сертификата.

Ситуация в России (2026)

С февраля 2026 года Роскомнадзор развернул на ТСПУ (российский DPI) ИИ-систему статистического анализа трафика, которая детектирует и замедляет VLESS Reality-соединения к зарубежным IP. Степень блокировки зависит от региона и провайдера — у кого-то работает стабильно, у кого-то скорость падает до нуля. Если столкнётесь с замедлением — попробуйте случайный высокий порт (например, 43821) вместо 443: ТСПУ пропускает deep inspection на нестандартных портах для экономии ресурсов. При смене порта не забудьте: (1) поменять порт в inbound 3X-UI, (2) открыть новый порт в UFW, (3) открыть его в firewall панели провайдера, (4) скопировать vless:// ссылку заново из 3X-UI — панель автоматически обновит порт в ссылке и QR-коде. Альтернатива — транспорт XHTTP вместо TCP (он меняет паттерн трафика после хендшейка). WebSocket без CDN тоже детектируется, однако VLESS+WS+TLS через Cloudflare CDN работает стабильнее — трафик идёт через IP Cloudflare, которые нельзя заблокировать без последствий.

2. Требования к VPS

ПараметрМинимумРекомендуется
CPU1 vCPU1–2 vCPU
RAM512 МБ1 ГБ
Диск5 ГБ SSD10 ГБ SSD
ОСUbuntu 22.04Ubuntu 22.04 / 24.04
ВиртуализацияKVM / OpenVZKVM (нужен для BBR)
РасположениеВне РФЕвропа (DE, NL, FI, LV)
IPv4ОбязателенОбязателен

Важно: локация VPS

Для маскировки Reality использует сторонний сайт (dest). Задержка до этого сайта должна быть минимальной с вашего VPS — иначе хендшейк будет заметно медленнее. Выбирайте VPS в крупных европейских дата-центрах — там легко найти подходящий dest-сайт в том же ASN. Пинг от VPS до dest ≤ 30 мс — хорошо.

3. Установка 3X-UI

3X-UI — это веб-панель управления Xray с удобным интерфейсом. Один скрипт устанавливает всё: Xray-core, панель, systemd-сервис.

Все команды ниже предполагают вход под root. Если вы работаете под обычным пользователем — добавляйте sudo перед каждой командой.

Шаг 1: обновить систему

Обновить пакеты перед установкой
apt update && apt upgrade -y

Шаг 2: запустить установщик

Официальный установщик 3X-UI (github.com/MHSanaei/3x-ui)
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

Перед запуском установщика

В 3X-UI выбор SSL-сертификата обязательный (пропустить нельзя). На самой работе VLESS это не сказывается — SSL нужен только для веб-панели. Подготовьтесь заранее:

  • Вариант по умолчанию (проще всего) — откройте входящий порт 80/tcp в firewall панели провайдера. Тогда сработает вариант 2 (Let's Encrypt IP-сертификат, 6 дней с автопродлением, Enter — и всё).
  • Если порт 80 открыть нельзя — сгенерируйте самоподписанный сертификат заранее (команда ниже) и в установщике выберите вариант 3, указав пути к этим файлам.
Самоподписанный сертификат (только если выбираете вариант 3)
openssl req -x509 -newkey rsa:2048 -nodes \
  -keyout /root/xui-key.pem -out /root/xui-cert.pem \
  -days 3650 -subj "/CN=localhost"

Что спросит установщик

Would you like to customize the Panel Port settings? [y/n]y — задать свой порт, n — случайный из диапазона 1024–62000 (запомните его в финальном выводе).
Choose SSL certificate setup method (MANDATORY)1 — Let's Encrypt для домена (нужен домен, направленный на IP VPS, и открытый 80 порт). 2 — Let's Encrypt для IP (только открытый 80 порт) — рекомендуемый, введите 2 и нажмите Enter (это же значение по умолчанию). 3 — свой сертификат (зациклит prompt, если файлов нет — готовьте заранее командой выше).
Вариант 1 — подвопросы (Let's Encrypt для домена)1) Please enter your domain name: — введите домен, у которого A-запись указывает на IP VPS. 2) Please choose which port to use (default is 80): — Enter (80). 3) Ожидание 5–30 секунд, пока acme.sh выпускает сертификат. 4) Would you like to modify --reloadcmd for ACME? (y/n): — Enter (оставить reload-команду по умолчанию). 5) Would you like to set this certificate for the panel? (y/n): — y (чтобы применить сертификат к панели).
Вариант 2 — подвопросы (Let's Encrypt для IP)1) Do you have an IPv6 address to include? (leave empty to skip): — Enter (если у вас только IPv4, вводить ничего не нужно). 2) Port to use for ACME HTTP-01 listener (default 80): — Enter (80). 3) Ожидание 5–30 секунд, acme.sh выпускает сертификат (профиль shortlived, 6 дней, автопродление уже настроено).
Вариант 3 — подвопросы (свой сертификат)1) Please enter domain name certificate issued for: — для самоподписанного cert можно просто нажать Enter (подставится IP VPS). 2) Input certificate path (keywords: .crt / fullchain): — введите полный путь к сертификату, например /root/xui-cert.pem. 3) Input private key path (keywords: .key / privatekey): — полный путь к приватному ключу, например /root/xui-key.pem. Важно: если пути неверные или файл пустой — prompt будет спрашивать заново в цикле, пока не введёте валидные пути.

Что покажет в конце (обязательно запишите — повторно не выводится)

UsernameСлучайные 10 символов (сгенерированы автоматически)
PasswordСлучайные 10 символов (сгенерированы автоматически)
PortВаш заданный или случайный порт панели
WebBasePathСлучайные 18 символов — часть URL панели
Access URLПолный адрес: https://IP:PORT/WebBasePath

Сохраните данные для входа!

После установки скрипт покажет логин, пароль, порт и URL панели. Запишите их — больше они не будут показаны. Если потеряете: запустите x-ui → пункт 6 (Reset Username & Password),7 (Reset Web Base Path), 9 (Change Port) или 10 (View Current Settings).

После установки: статус и управление
# Проверить статус
systemctl status x-ui

# Открыть меню управления (статус, перезапуск, смена порта)
x-ui

# Панель доступна по адресу (из вывода установщика):
# https://IP_СЕРВЕРА:ПОРТ/ВЕБ-ПУТЬ/

Войдите в панель

Откройте браузер, перейдите по адресу из финального вывода установщика: https://IP:ПОРТ/ПУТЬ. Введите логин и пароль. Дополнительные меры защиты — в разделе «UFW и безопасность сервера».

Браузер ругается «Your connection is not private»?

Это нормально, если вы выбрали вариант 3 (самоподписанный сертификат). Такой cert не подписан публичным CA — браузер не может его проверить, но шифрование работает. Нажмите Advanced → Proceed to IP (unsafe) (Chrome / Edge) или Подробнее → Перейти на сайт(Яндекс.Браузер, Firefox). Если выбирали вариант 1 или 2 (Let's Encrypt) — такого предупреждения быть не должно.

Не открывается панель?

У Hetzner, Selectel, Aeza, AWS, DigitalOcean и других провайдеров есть отдельный сетевой firewall на уровне панели управления — он режет трафик до того, как тот дойдёт до VPS. Откройте нужный порт там (Firewall / Security Groups / Правила сети). Подробнее в разделе «Если не работает».

4. Настройка VLESS Reality inbound

В 3X-UI перейдите в Inbounds → Add Inbound. Настройте параметры по таблице ниже — объяснение каждого поля.

ПолеЗначениеПочему
ProtocolVLESSЛёгкий протокол без лишней аутентификации
Port443Стандартный HTTPS-порт. Если замедляют — случайный высокий порт (40000+)
TransmissionTCP (RAW)В dropdown подписано именно так. TCP + Reality: нативный XTLS Vision
SecurityRealityВключает режим маскировки под HTTPS
uTLSchromeИмитирует TLS-отпечаток Chrome — самый распространённый
Dest (SNI Target)www.microsoft.com:443Сайт, под который маскируемся. Должен поддерживать TLS 1.3 и H2
Server Nameswww.microsoft.comСовпадает с Dest. Можно добавить несколько
CertificatesКнопка «Get New Cert»Генерирует пару ключей x25519. ShortId заполняется автоматически
Flowxtls-rprx-visionУстанавливается при добавлении клиента (раздел 5)

Выбор Dest: что важно

Сайт-маска должен: поддерживать TLS 1.3 и HTTP/2, не стоять за Cloudflare. Хорошие варианты: www.microsoft.com:443, www.samsung.com:443, www.nvidia.com:443.

Идеально — найти сайт в том же дата-центре (ASN), что и ваш VPS, с помощью утилиты RealiTLScanner (github.com/XTLS/RealiTLScanner). Запускайте сканер с локальной машины, а не на VPS — иначе IP сервера может попасть в чёрные списки. Избегайте сайтов за Cloudflare — активные зонды увидят, что TLS-сертификат Cloudflare приходит с IP, не принадлежащего Cloudflare. Не используйте apple.com (ASN-несоответствия) и слишком популярные цели (dl.google.com) — массовое использование создаёт паттерн для DPI.

Проверить, что сайт подходит для Dest (выполнить на VPS)
# 1. TLS 1.3 — обязательно для Reality (-servername нужен для CDN-сайтов)
openssl s_client -connect www.microsoft.com:443 -servername www.microsoft.com -tls1_3 </dev/null 2>&1 | grep -iE "TLSv1.3|Cipher is"
# Ожидаем строку вида: "New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384".
# Если ошибка или TLSv1.2 — выберите другой dest.

# 2. HTTP/2 (ALPN h2) на TLS 1.3 — тоже обязательно для Reality
openssl s_client -connect www.microsoft.com:443 -servername www.microsoft.com -tls1_3 -alpn h2 </dev/null 2>&1 | grep -i "ALPN"
# Ожидаем: ALPN protocol: h2. Если "no application protocol" — сайт не годится.

# 3. Проверка, что сайт НЕ за Cloudflare
curl -sI https://www.microsoft.com | grep -iE "^cf-ray:|^server: cloudflare"
# Хорошо, если вывод ПУСТОЙ. Любая строка в выводе — признак Cloudflare, берите другой сайт.

# 4. Задержка до целевого сайта (Microsoft блокирует ICMP, поэтому меряем TLS-handshake)
curl -so /dev/null -w "TLS handshake: %{time_appconnect}s | total: %{time_total}s\n" https://www.microsoft.com/
# Ожидаем time_appconnect < 0.2 s (в идеале <100 мс, нормально до 200 мс с европейского VPS).
# Если >300 мс — возможны заметные задержки, рассмотрите dest ближе к вашему ДЦ.

Все четыре проверки должны пройти успешно. Если хоть одна не проходит — возьмите другой dest из списка или проверьте кандидата вручную.

Нажмите Create. Inbound создан — 3X-UI автоматически применит конфигурацию к Xray без перезапуска.

6. Подключение клиентов

Windows — v2rayN

v2rayN — самый популярный клиент для Windows, бесплатный. Скачать: github.com/2dust/v2rayN → Releases. Обе версии — с графическим интерфейсом: v2rayN-windows-64.zip (WPF, классический Windows-стиль, рекомендуется большинству) или v2rayN-windows-64-desktop.zip (Avalonia UI, новее, кроссплатформенный движок).

  1. 1Распакуйте архив и запустите v2rayN.exe
  2. 2Скопируйте vless:// ссылку из 3X-UI в буфер обмена
  3. 3В главном окне: Configuration → Import Share Links from clipboard (или просто Ctrl+V в главном окне)
  4. 4В списке серверов правой кнопкой на добавленный → Set as active
  5. 5В нижней строке статуса главного окна v2rayN (слева) — выпадающий список System proxy, выберите пункт Set system proxy (прокси для браузера и приложений, которые его уважают). Альтернатива — правый клик по иконке v2rayN в трее → System proxy → Set system proxy. Для заворачивания всего трафика системы — тумблер Enable Tun в той же строке статуса рядом с ComboBox.

Альтернатива для Windows: Hiddify — красивый современный клиент с автоматическим выбором протокола. Скачать: github.com/hiddify/hiddify-app.

Android — v2rayNG или Hiddify

v2rayNG

  • 1.Скачать APK с github.com/2dust/v2rayNG → Releases (в Google Play приложение удалено — не ищите там)
  • 2.Нажать + → Scan QR code
  • 3.Включить переключатель VPN

Hiddify

  • 1.Установить из Google Play или github.com/hiddify/hiddify-app
  • 2.Нажать + → Scan QR / Import link
  • 3.Нажать Connect

iOS — Streisand, Hiddify или Shadowrocket

Streisand

App Store (бесплатно)

Простой и стабильный, поддерживает VLESS Reality

Hiddify

App Store (бесплатно)

Кроссплатформенный — тот же клиент на iOS, Android, Windows

Shadowrocket

App Store (платный, ≈ $3)

Самый популярный iOS-клиент, множество протоколов

На iOS: установите приложение → нажмите + или «Добавить конфигурацию» → выберите «QR-код» и отсканируйте код из 3X-UI. Разрешите создание VPN-профиля.

Проверить подключение

После подключения откройте 2ip.ru или whoer.net — должен отображаться IP вашего VPS, а не домашний. Пинг и трассировку проверить можно через browserleaks.com.

7. UFW и безопасность сервера

Панель 3X-UI доступна извне — это потенциальная точка атаки. Минимальная защита: файрвол UFW и SSH-ключи.

Настройка UFW

Открыть только нужные порты
# Сначала добавить все правила, потом включать UFW
# SSH (обязательно — добавить ДО включения, иначе потеряете доступ)
# Если ваш SSH на нестандартном порту — укажите его вместо 22
ufw allow 22/tcp

# VLESS Reality (порт из настроек inbound, обычно 443)
# Если в разделе 1 выбрали нестандартный порт против ТСПУ — замените 443 на свой
ufw allow 443/tcp

# Порт 80 — нужен для автопродления Let's Encrypt сертификата (варианты 1 и 2).
# Если выбрали вариант 3 (свой сертификат) — эту строку можно пропустить.
ufw allow 80/tcp

# Порт панели — ТОЛЬКО с вашего домашнего IP (безопаснее всего)
# Узнать свой публичный IP: откройте 2ip.ru или выполните на локальной машине: curl ifconfig.me
ufw allow from ВАШ_ДОМАШНИЙ_IP to any port ПОРТ_ПАНЕЛИ

# Или открыть для всех (менее безопасно, но проще):
# ufw allow ПОРТ_ПАНЕЛИ/tcp

# Включить UFW (после добавления правил)
ufw enable

# Проверить правила
ufw status verbose

UFW — не единственный firewall

UFW работает внутри VPS. У Hetzner, Selectel, Yandex Cloud, AWS, DigitalOcean, Aeza и многих других есть ещё и сетевой firewall на уровне панели провайдера — он срабатывает до UFW. Те же порты (22, 443, порт панели) нужно открыть и там: обычно в разделе Firewall / Security Groups / Правила сети.

SSH-ключи вместо пароля

Генерация ключа на вашем компьютере (выполнить локально)
# Создать SSH-ключ (если ещё нет)
ssh-keygen -t ed25519 -C "vps-proxy"

# Скопировать публичный ключ на сервер
ssh-copy-id root@IP_СЕРВЕРА

# Проверить, что ключ реально оказался на сервере:
# ssh root@IP_СЕРВЕРА "grep -c ssh-ed25519 /root/.ssh/authorized_keys"
# (команда выполняется локально, внутри кавычек — grep, который отработает на сервере)
# Ожидаем число ≥ 1. Если 0 — ssh-copy-id не сработал, повторите.

Важно: cloud-init override на Ubuntu 22.04/24.04

Облачные образы Ubuntu обычно поставляются с файлом /etc/ssh/sshd_config.d/50-cloud-init.conf (у некоторых провайдеров имя другое — например, 60-cloudimg-settings.conf), в котором прописано PasswordAuthentication yes. Этот файл подключается после основного конфига и перекрывает ваши настройки. Если просто отредактировать sshd_config — пароль останется включённым. Ниже — правильный способ: находим и удаляем override, после перезапуска проверяем итоговое состояние.

Отключить вход по паролю (на сервере, после настройки ключей)
# 1. Убедитесь что ключ работает — откройте НОВУЮ сессию SSH и попробуйте войти
#    без пароля. Не закрывайте текущую сессию, пока не проверите!

# 2. Удалить cloud-init override (флаг -f, чтобы не было ошибки,
#    если на вашем образе этого файла нет)
rm -f /etc/ssh/sshd_config.d/50-cloud-init.conf

# 3. Отредактировать основной конфиг
nano /etc/ssh/sshd_config

# Найти и установить:
PasswordAuthentication no
PermitRootLogin prohibit-password

# 4. Перезапустить SSH (работает и на 22.04, и на 24.04)
systemctl restart ssh

# 5. Проверить итоговое значение (не содержимое файлов, а effective config):
sshd -T | grep -iE "passwordauthentication|permitrootlogin"
# Должно быть:
#   passwordauthentication no
#   permitrootlogin prohibit-password

Пункт 5 — критичный. Если sshd -T показывает passwordauthentication yes — остался ещё один override-файл в /etc/ssh/sshd_config.d/. Посмотрите содержимое: grep -r PasswordAuth /etc/ssh/.

Смена порта и пути панели (если нужно после установки)

Через меню x-ui
# Открыть меню управления 3X-UI
x-ui

# Актуальные пункты меню (проверено на 3X-UI 2.x):
# 6  — Reset Username & Password
# 7  — Reset Web Base Path
# 9  — Change Port
# 10 — View Current Settings (посмотреть текущие значения)
# 13 — Restart (перезапустить панель)
# 2  — Update (обновить 3X-UI)

Делать

  • Нестандартный порт и путь панели
  • UFW с минимумом открытых портов
  • SSH только по ключам
  • Сложный пароль панели (16+ символов)
  • Регулярно обновлять x-ui (x-ui → обновить)

Не делать

  • Оставлять порт панели открытым для всего интернета
  • Использовать простые пароли (admin/admin)
  • Использовать CDN-сайты (Cloudflare) как dest
  • Игнорировать обновления Xray-core
  • Передавать ссылки через незащищённые каналы

Обновление 3X-UI

Обновить 3X-UI до последней версии
x-ui

# Выбрать пункт 2 (Update)
# Или запустить установщик повторно — он обновит, сохранив настройки:
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

8. Если не работает

В 95% случаев «не подключается» — это одна из шести причин ниже. Проверяйте по порядку.

1. Не открывается веб-панель (адрес из финального вывода установщика)

Это причина номер один. Обычно дело в firewall провайдера (не UFW), который работает до того, как пакет попадает на VPS. Последовательность проверки:

На VPS — убедиться, что панель запущена и слушает порт
# 1. Статус сервиса
systemctl status x-ui

# 2. Порт реально слушается? (замените ПОРТ_ПАНЕЛИ на значение из вывода установщика)
ss -tlnp | grep ':ПОРТ_ПАНЕЛИ'

Если панель запущена и порт слушается, но снаружи не открывается — проверьте доступность с локального компьютера:

Linux / macOS
nc -zv IP_ВАШЕГО_VPS ПОРТ_ПАНЕЛИ
Windows — PowerShell
Test-NetConnection -ComputerName IP_ВАШЕГО_VPS -Port ПОРТ_ПАНЕЛИ

Connection refused / быстрый отказ — сервис на VPS не запущен (см. systemctl выше).
Connection timed out / долгое зависание — блокирует firewall, скорее всего в панели провайдера. Зайдите в панель провайдера → Firewall / Security Groups / Правила сети → добавьте входящее правило TCP на порт панели — лучше только с вашего публичного IP (безопаснее), либо временно из 0.0.0.0/0 на время диагностики.

2. Клиент не подключается (vless:// ссылка)

Симптом: клиент (v2rayN, v2rayNG, Hiddify) показывает таймаут или «connection failed». Проверки по порядку:

  • Firewall VPS и провайдера — порт VLESS (443 или другой, который вы задали при создании inbound) открыт в UFW и в панели провайдера? Проверить: nc -zv IP ПОРТ_VLESS с локальной машины.
  • Xray реально слушает? — на VPS: ss -tlnp | grep :ПОРТ_VLESS (замените на свой порт; если выбрали нестандартный против ТСПУ — см. раздел 1). Если пусто — Xray не запущен или inbound не активирован в 3X-UI (тумблер напротив inbound должен быть включён).
  • Время клиента и сервера — Reality чувствителен к рассинхрону. Проверьте что на VPS и на клиенте время точное (разница < 5 минут): timedatectl на VPS, настройки даты/времени на клиенте.
  • Совпадение параметров — vless:// ссылка содержит pbk (публичный ключ), sid (shortId), sni (домен), fp (fingerprint), flow. Все они должны совпадать с настройками inbound. После смены чего-либо в inbound — регенерируйте ссылку из 3X-UI, не переносите параметры вручную.

3. Клиент подключается, но интернета нет / сильно тормозит

  • Reality-хендшейк ломается — dest не поддерживает HTTP/2 или TLS 1.3, или стоит за Cloudflare. Проверьте dest командами из раздела 4 (openssl с флагами -tls1_3 и -alpn h2).
  • ТСПУ замедляет соединение (Россия) — в 2026 активно детектирует Reality к нестандартным IP. Смените dest, порт VPS (не 443, а случайный высокий вроде 43821), регион/провайдера. Альтернатива — VLESS+WS+TLS через Cloudflare CDN.
  • DNS-утечки или блокировка DNS — в настройках клиента проверьте, что DNS-запросы идут через прокси (обычно включено по умолчанию). Проверить утечки: browserleaks.com/dns.
  • Роутинг в клиенте — в v2rayN/v2rayNG/Hiddify проверьте, что выбран режим «Global» или «Proxy», а не «Bypass LAN/China». В противном случае трафик может идти мимо прокси.
  • Зонды от провайдера — если dest отдаёт 403/404 при прямом запросе с VPS (curl -I https://DEST), выберите другой сайт-маску: Reality должен пересылать неаутентифицированный трафик на живой сайт.

4. Потерял SSH-доступ после отключения пароля

Частый сценарий: ключ не был корректно добавлен, пароль выключен — пользователь заперт снаружи. Единственный способ восстановления — через консоль в панели провайдера (VNC / Serial Console / Rescue mode). У любого нормального VPS-провайдера такая консоль есть.

Войдя через консоль, проверьте:

Восстановление SSH-доступа через консоль провайдера
# 1. Посмотреть итоговые настройки SSH
sshd -T | grep -iE "passwordauthentication|permitrootlogin|authorizedkeysfile"

# 2. Посмотреть какие публичные ключи у root
cat /root/.ssh/authorized_keys

# 3. Временно включить вход по паролю, пока не настроите ключ
rm -f /etc/ssh/sshd_config.d/50-cloud-init.conf
sed -i 's|^#*PasswordAuthentication.*|PasswordAuthentication yes|' /etc/ssh/sshd_config
systemctl restart ssh

Урок: никогда не закрывайте текущую SSH-сессию, пока в отдельной новой сессии не убедитесь, что ключ работает. Откройте второе окно терминала и войдите туда, прежде чем закрывать первое.

5. 3X-UI / x-ui service не запускается

Сервис в состоянии failed или activating:

Диагностика сервиса
# Логи сервиса панели
journalctl -u x-ui -n 100 --no-pager

# Отдельно — логи Xray-core внутри systemd-журнала
journalctl -u x-ui -n 100 --no-pager | grep -iE "xray|error"

# Интерактивно следить за логами в реальном времени
journalctl -u x-ui -f

Частые причины:

  • Порт VLESS уже занят (Nginx/Apache/Caddy на 443) — проверить: ss -tlnp | grep :ПОРТ_VLESS. Либо остановите конфликтующий сервис, либо смените порт VLESS.
  • Порт панели занят — то же самое, проверьте и смените через x-ui → пункт 9.
  • Битая конфигурация — сбросьте через x-ui → пункт 8 (Reset Settings), потом перезапустите сервис (пункт 13).

6. VPS за NAT (серый IP)

На некоторых дешёвых тарифах нет публичного IPv4 — вы получаете только «серый» адрес за NAT провайдера. Порт снаружи не проброшен, и VLESS не работает. Проверка:

Сверить IP на интерфейсе с внешним IP
ip -4 addr show | grep inet
curl -4 ifconfig.me

Если IP на сетевом интерфейсе начинается с 10., 172.16–31. или 192.168., а ifconfig.me показывает другой — у вас NAT. Решение — заказать «белый» IPv4 (обычно платно) или сменить тариф.

Быстрый чек-лист

Панель не открываетсяОткрыть порт в firewall панели провайдера + UFW
Клиент: таймаутПроверить порт снаружи: nc -zv IP ПОРТ_VLESS
Клиент: handshake failПроверить dest: TLS 1.3 + ALPN h2 (раздел 4)
Подключение есть, сайты не грузятсяСмена dest / порта / ТСПУ-замедление
x-ui в failedjournalctl -u x-ui -n 100 — обычно занят порт
SSH запертКонсоль провайдера, проверить sshd -T
Ошибка "no application protocol"Dest без HTTP/2 — взять другой (раздел 4)
Серый IPcurl -4 ifconfig.me ≠ ip addr — нужен белый IPv4

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

Нужен VPS для личного прокси? Смотрите наш рейтинг

Топ VPS хостингов →

Смотрите также