Reality прячет VPN под обычный сайт. Если этот сайт чужой, например microsoft.com или dl.google.com, сервер легко вычислить, поэтому в 2026 году такие серверы массово блокируют. Self-steal решает проблему – сервер маскируется под ваш собственный сайт с настоящим сертификатом.
TIP
Коротко о статье
- Результат – VLESS Reality, который для всех выглядит как ваш сайт;
- Время – около 20 минут;
- Понадобится – VPS на Ubuntu или Debian и свой домен;
- Подходит – для Xray без панели, 3X-UI, Marzban и Remnawave.
Почему серверы блокируют
| Когда | Что произошло |
|---|---|
| Ноябрь 2025 | Массовые обрывы VLESS Reality на порту 443 у домашних провайдеров |
| 17 февраля 2026 | Крупная волна блокировок VLESS Reality поверх TCP по всей стране |
| Май 2026 | Тесты новых методов в Сибири, на Дальнем Востоке и в Москве |
| Август – сентябрь 2026 | Блокировки IP-адресов и подсетей популярных VPS-хостингов |
Сам Reality не взломан. Фильтры провайдеров (ТСПУ) ищут косвенные признаки, и главный из них – маскировка под чужой сайт:
- имя сайта (SNI) передаётся в открытом виде;
- microsoft.com на IP-адресе небольшого хостинга выглядит неестественно;
- любой, кто подключится к серверу, увидит настоящий сайт Microsoft на чужом IP-адресе.
Что говорят разработчики Xray
С 2026 года Xray выводит предупреждение, если целью выбраны apple.com, icloud.com или microsoft.com, а с июля 2026 года – и сайты в зонах .ru, .ir и .cn. Официальная документация Reality советует брать сайт из той же сети, что и сервер. Проще всего выполнить это условие, разместив сайт на самом сервере.
Как работает self-steal
| Кто подключается | Что видит |
|---|---|
| Ваш клиент с ключом | VPN-подключение |
| Провайдер, сканер, браузер | Ваш сайт с настоящим сертификатом |
Домен, сертификат и IP-адрес совпадают, поэтому сервер выглядит как тысячи обычных сайтов. Xray принимает подключения на порту 443, а сайт работает в nginx на внутреннем адресе 127.0.0.1:8443.
WARNING
Self-steal не даёт полной гарантии. В августе и сентябре 2026 года под блокировки подсетей попадали и такие серверы. Лучше всего схема работает вместе с нейтральным доменом, небольшим числом пользователей и отпечатком firefox.
Что понадобится
- VPS на Ubuntu 22.04, 24.04 или Debian 12 – для себя хватит DE-PROMO, для канала 1 Гбит/с подойдёт DE-RZ9-1;
- домен или поддомен, направленный на этот сервер;
- свободные порты 80 и 443.
TIP
Выбор домена. Берите нейтральное имя вроде блога или портфолио, без слов vpn, proxy, xray, reality и node. Для сервера в Германии лучше международная зона (.com, .net, .org) или .de – о зоне .ru Xray выводит предупреждение.
Шаг 1. Запись DNS
Создайте у регистратора запись A с IP-адресом сервера. Если домен подключён к Cloudflare, выключите прокси (серое облако) – Reality не работает через CDN.
dig +short example.comКоманда должна вывести IP-адрес сервера.
Шаг 2. Сайт и сертификат
Установите nginx и certbot, затем положите на сайт простую страницу – блог, визитку, что угодно, кроме пустой заглушки:
apt update && apt install -y nginx certbot
nano /var/www/html/index.htmlВыпустите сертификат, заменив домен и почту на свои:
certbot certonly --webroot -w /var/www/html -d example.com -m you@example.com --agree-tos --no-eff-email --deploy-hook "systemctl reload nginx"Certbot будет сам продлевать сертификат и перезагружать nginx.
Шаг 3. Настройка nginx
Откройте файл /etc/nginx/sites-available/default и замените его содержимое, подставив свой домен:
server {
listen 80;
listen [::]:80;
server_name example.com;
location /.well-known/acme-challenge/ {
root /var/www/html;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 127.0.0.1:8443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}nginx -t && systemctl reload nginxЧто делает эта настройка
- Порт 80 – продление сертификата и переадресация посетителей на HTTPS.
- 127.0.0.1:8443 – сам сайт. Он доступен только изнутри сервера, а порт 443 остаётся свободным для Xray.
- Предупреждение
listen ... http2 is deprecatedв новых версиях nginx можно не учитывать. Не заменяйте строку наhttp2 on;– в Ubuntu 22.04, 24.04 и Debian 12 nginx такую директиву не знает и не запустится.
Шаг 4. Установка Xray и ключи
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
xray uuid
xray x25519
openssl rand -hex 8Сохраните четыре значения:
| Значение | Откуда взять | Где нужно |
|---|---|---|
| UUID | xray uuid | Сервер и клиент |
| Приватный ключ | xray x25519, строка PrivateKey | Только сервер |
| Публичный ключ | xray x25519, строка Password (PublicKey) или Public key | Только клиент |
| Short ID | openssl rand -hex 8 | Сервер и клиент |
Шаг 5. Настройка Xray
WARNING
Если в файле /usr/local/etc/xray/config.json уже есть ваши подключения, не стирайте его – вы потеряете пользователей. Измените только блок realitySettings по таблице ниже.
Для новой установки откройте файл командой nano /usr/local/etc/xray/config.json и вставьте конфигурацию, заменив значения в верхнем регистре.
Конфигурация Xray для новой установки
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"listen": "0.0.0.0",
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "UUID",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"target": "127.0.0.1:8443",
"xver": 0,
"serverNames": ["example.com"],
"privateKey": "PRIVATE_KEY",
"shortIds": ["SHORT_ID"]
}
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
]
}Главное в этой конфигурации – три поля:
| Поле | Значение | Зачем |
|---|---|---|
target | 127.0.0.1:8443 | Посторонних отправляем на ваш сайт. Раньше поле называлось dest |
xver | 0 | Иначе nginx получит лишний заголовок PROXY protocol, и сайт не откроется |
serverNames | Ваш домен | Должен совпадать с доменом в сертификате |
Проверьте конфигурацию и перезапустите Xray:
xray run -test -config /usr/local/etc/xray/config.json
systemctl restart xrayШаг 6. Брандмауэр
ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enableЕсли SSH работает на другом порту, укажите его вместо 22.
Шаг 7. Проверка
Откройте https://example.com в браузере. Если появился ваш сайт без предупреждений о сертификате, Xray правильно передаёт посторонние подключения в nginx.
Шаг 8. Подключение клиента
vless://UUID@example.com:443?encryption=none&flow=xtls-rprx-vision&security=reality&sni=example.com&fp=firefox&pbk=PUBLIC_KEY&sid=SHORT_ID&type=tcp#My-serverПодставьте свои значения и импортируйте ссылку в приложение, как показано в инструкции по импорту. Почему в ссылке стоит fp=firefox, объясняем в статье про 3X-UI.
Self-steal в панелях
Сначала выполните шаги 1–3 на том сервере, где работает Xray. Затем измените подключение в панели.
Откройте подключение VLESS Reality и укажите:
- Target –
127.0.0.1:8443; - SNI – ваш домен;
- Xver –
0.
Ключи перевыпускать не нужно.
- В Core Settings в блоке
realitySettingsзадайтеtarget–127.0.0.1:8443,serverNames– ваш домен,xver–0. - В Host Settings укажите этот домен в поле SNI.
- В Config Profiles откройте профиль ноды и внесите в
realitySettingsте же три изменения. - Если в разделе Hosts переопределён SNI, укажите в нём новый домен.
Подробнее о панели – в статье «Установка Remnawave на VPS».
INFO
Если Xray работает в Docker без network_mode: host, адрес 127.0.0.1 указывает внутрь контейнера, и nginx будет недоступен. Нода Remnawave работает в режиме host, поэтому ей это не мешает.
Переход с чужого сайта
- Сделайте копию настроек командой
cp /usr/local/etc/xray/config.json /usr/local/etc/xray/config.json.bak. - Выполните шаги 1–3.
- Измените
target,serverNamesиxverпо таблице из шага 5. Если в конфигурации есть иdest, иtarget, оставьте только одно поле. - Проверьте конфигурацию и перезапустите Xray.
UUID, ключи и Short ID не меняются. Пользователям нужно только обновить подписку или ссылку – в ней поменяется sni.
WARNING
AmneziaVPN. Если Reality установлен через это приложение, оно само записывает настройки сервера, и ручные правки могут пропасть. Для self-steal надёжнее поставить Xray отдельно.
Если что-то не работает
| Симптом | Что проверить |
|---|---|
| Сайт не открывается | Запись A, вывод nginx -t, слушает ли nginx порт 8443 (ss -tlnp | grep 8443) |
| Xray не запускается | Журнал journalctl -u xray -n 50, синтаксис JSON, не занят ли порт 443 |
| Сайт открывается, а VPN нет | Совпадают ли UUID, sni, pbk и sid с сервером, обновлён ли клиент |
| Не продлевается сертификат | Открыт ли порт 80, результат certbot renew --dry-run |
| Не работает у одного провайдера | Другой отпечаток в клиенте, подключение из другой сети, не заблокирован ли IP |
Советы
- Меньше пользователей – менее заметный профиль трафика.
- Настоящая страница – выглядит естественнее пустой заглушки.
- Свежие версии – Xray обновляется той же командой установки, клиенты тоже держите обновлёнными.
- Запасное подключение – например, VLESS + TLS + XHTTP на случай, если основное перестанет работать.