> Полный список статей есть в [llms.txt](https://docs.f3cloud.com/llms.txt). Markdown-версия есть у каждой страницы, достаточно добавить .md к её адресу. Эта страница в Markdown: [https://docs.f3cloud.com/ru/vpn-guide/reality-self-steal.md](https://docs.f3cloud.com/ru/vpn-guide/reality-self-steal.md).

# Self-steal для VLESS Reality – маскировка под собственный сайт

Почему VLESS Reality с маскировкой под чужие сайты стали блокировать и как перейти на self-steal. Свой домен, nginx на 127.0.0.1:8443, Xray с Reality, настройка в 3X-UI, Marzban и Remnawave.

Reality прячет VPN под обычный сайт. Если этот сайт чужой, например microsoft.com или dl.google.com, сервер легко вычислить, поэтому в 2026 году такие серверы массово блокируют. **Self-steal** решает проблему – сервер маскируется под ваш собственный сайт с настоящим сертификатом.

> **Совет.**
>
> **Коротко о статье**
>
> * **Результат** – 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-адресе.

<details>

<summary>Что говорят разработчики Xray</summary>

С 2026 года Xray выводит предупреждение, если целью выбраны apple.com, icloud.com или microsoft.com, а с июля 2026 года – и сайты в зонах .ru, .ir и .cn. Официальная документация Reality советует брать сайт из той же сети, что и сервер. Проще всего выполнить это условие, разместив сайт на самом сервере.

</details>

### Как работает self-steal

| Кто подключается           | Что видит                         |
| -------------------------- | --------------------------------- |
| Ваш клиент с ключом        | VPN-подключение                   |
| Провайдер, сканер, браузер | Ваш сайт с настоящим сертификатом |

Домен, сертификат и IP-адрес совпадают, поэтому сервер выглядит как тысячи обычных сайтов. Xray принимает подключения на порту 443, а сайт работает в nginx на внутреннем адресе `127.0.0.1:8443`.

> **Внимание.**
>
> Self-steal не даёт полной гарантии. В августе и сентябре 2026 года под блокировки подсетей попадали и такие серверы. Лучше всего схема работает вместе с нейтральным доменом, небольшим числом пользователей и отпечатком `firefox`.

### Что понадобится

* VPS на **Ubuntu 22.04**, **24.04** или **Debian 12** – для себя хватит **DE-PROMO**, для канала 1 Гбит/с подойдёт **DE-RZ9-1**;
* домен или поддомен, направленный на этот сервер;
* свободные порты 80 и 443.

> **Совет.**
>
> **Выбор домена.** Берите нейтральное имя вроде блога или портфолио, без слов vpn, proxy, xray, reality и node. Для сервера в Германии лучше международная зона (.com, .net, .org) или .de – о зоне .ru Xray выводит предупреждение.

### Шаг 1. Запись DNS

Создайте у регистратора запись A с IP-адресом сервера. Если домен подключён к Cloudflare, выключите прокси (серое облако) – Reality не работает через CDN.

```bash
dig +short example.com
```

Команда должна вывести IP-адрес сервера.

### Шаг 2. Сайт и сертификат

Установите nginx и certbot, затем положите на сайт простую страницу – блог, визитку, что угодно, кроме пустой заглушки:

```bash
apt update && apt install -y nginx certbot
nano /var/www/html/index.html
```

Выпустите сертификат, заменив домен и почту на свои:

```bash
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` и замените его содержимое, подставив свой домен:

```nginx
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;
    }
}
```

```bash
nginx -t && systemctl reload nginx
```

<details>

<summary>Что делает эта настройка</summary>

* **Порт 80** – продление сертификата и переадресация посетителей на HTTPS.
* **127.0.0.1:8443** – сам сайт. Он доступен только изнутри сервера, а порт 443 остаётся свободным для Xray.
* **Предупреждение** `listen ... http2 is deprecated` в новых версиях nginx можно не учитывать. Не заменяйте строку на `http2 on;` – в Ubuntu 22.04, 24.04 и Debian 12 nginx такую директиву не знает и не запустится.

</details>

### Шаг 4. Установка Xray и ключи

```bash
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

> **Внимание.**
>
> Если в файле `/usr/local/etc/xray/config.json` уже есть ваши подключения, не стирайте его – вы потеряете пользователей. Измените только блок `realitySettings` по таблице ниже.

Для новой установки откройте файл командой `nano /usr/local/etc/xray/config.json` и вставьте конфигурацию, заменив значения в верхнем регистре.

<details>

<summary>Конфигурация Xray для новой установки</summary>

```json
{
  "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"
    }
  ]
}
```

</details>

Главное в этой конфигурации – три поля:

| Поле          | Значение         | Зачем                                                                    |
| ------------- | ---------------- | ------------------------------------------------------------------------ |
| `target`      | `127.0.0.1:8443` | Посторонних отправляем на ваш сайт. Раньше поле называлось `dest`        |
| `xver`        | `0`              | Иначе nginx получит лишний заголовок PROXY protocol, и сайт не откроется |
| `serverNames` | Ваш домен        | Должен совпадать с доменом в сертификате                                 |

Проверьте конфигурацию и перезапустите Xray:

```bash
xray run -test -config /usr/local/etc/xray/config.json
systemctl restart xray
```

### Шаг 6. Брандмауэр

```bash
ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enable
```

Если SSH работает на другом порту, укажите его вместо `22`.

### Шаг 7. Проверка

Откройте `https://example.com` в браузере. Если появился ваш сайт без предупреждений о сертификате, Xray правильно передаёт посторонние подключения в nginx.

### Шаг 8. Подключение клиента

```text
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
```

Подставьте свои значения и импортируйте ссылку в приложение, как показано в [инструкции по импорту](https://docs.f3cloud.com/ru/vpn-guide/marzban-ustanovka-vpn.md#shag-4.-podklyuchites-k-vpn). Почему в ссылке стоит `fp=firefox`, объясняем в статье [про 3X-UI](https://docs.f3cloud.com/ru/vpn-guide/3x-ui-rukovodstvo-po-ustanovke-i-ispolzovaniyu-paneli.md#vless-reality).

### Self-steal в панелях

Сначала выполните шаги 1–3 на том сервере, где работает Xray. Затем измените подключение в панели.

#### 3X-UI

Откройте подключение VLESS Reality и укажите:

* **Target** – `127.0.0.1:8443`;
* **SNI** – ваш домен;
* **Xver** – `0`.

Ключи перевыпускать не нужно.
#### Marzban

1. В **Core Settings** в блоке `realitySettings` задайте `target` – `127.0.0.1:8443`, `serverNames` – ваш домен, `xver` – `0`.
2. В **Host Settings** укажите этот домен в поле SNI.
#### Remnawave

1. В **Config Profiles** откройте профиль ноды и внесите в `realitySettings` те же три изменения.
2. Если в разделе **Hosts** переопределён SNI, укажите в нём новый домен.

Подробнее о панели – в статье [«Установка Remnawave на VPS»](https://docs.f3cloud.com/ru/vpn-guide/remnawave-ustanovka-na-vps.md).

> **Примечание.**
>
> Если Xray работает в Docker без `network_mode: host`, адрес `127.0.0.1` указывает внутрь контейнера, и nginx будет недоступен. Нода Remnawave работает в режиме `host`, поэтому ей это не мешает.

### Переход с чужого сайта

1. Сделайте копию настроек командой `cp /usr/local/etc/xray/config.json /usr/local/etc/xray/config.json.bak`.
2. Выполните шаги 1–3.
3. Измените `target`, `serverNames` и `xver` по таблице из шага 5. Если в конфигурации есть и `dest`, и `target`, оставьте только одно поле.
4. Проверьте конфигурацию и перезапустите Xray.

UUID, ключи и Short ID не меняются. Пользователям нужно только обновить подписку или ссылку – в ней поменяется `sni`.

> **Внимание.**
>
> **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](https://docs.f3cloud.com/ru/vpn-guide/setup-vless-xhttp.md) на случай, если основное перестанет работать.
