1. Предварительные условия

1. Открыты порты 80/443 в фаерволе VPS (и в панели провайдера).
2. На сервере установлен Docker и docker compose plugin (docker compose). Установка по официальному скрипту Docker: curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh.[1][2]
3. Желательно иметь домен, указывающий на IP VPS (для нормального SNI), но Reality может работать и по IP, если использовать валидный SNI внешнего сайта.[3][4]

2. Вариант №1: готовый образ xtls-reality-docker (минимум настроек)

1. Сгенерировать short_id на хосте:

   openssl rand -hex 8

Значение сохранить, это SHORT_ID для клиента.[2][5]

2. Выбрать SNI (например, www.cloudflare.com или любой крупный сайт с 443/tcp). Это то, что клиент будет указывать как serverName/SNI.[4][3]

3. Запустить контейнер:

   sudo docker pull myelectronix/xtls-reality:latest
   sudo docker run -d --rm \
     -p 443:443 \
     -e SNI=ВАШ_SNI \
     -e SHORT_ID=ВАШ_SHORT_ID \
     -v xtls-reality-volume:/opt/xray/config \
     --name xtls-reality myelectronix/xtls-reality:latest

Образ сам поднимет Xray с VLESS+Reality и сгенерирует ключи; конфиги будут лежать в volume xtls-reality-volume.[5]

4. Если удобнее через docker‑compose, клонировать репозиторий и запустить:

   git clone https://github.com/myelectronix/xtls-reality-docker
   cd xtls-reality-docker
   # при необходимости отредактировать docker-compose.yml (SNI/SHORT_ID)
   docker compose up -d

В репозитории есть пример docker‑compose и описание переменных окружения, которые нужно подставить под свой домен/SNI.[5]

3. Вариант №2: свой docker-compose.yml + свой config.json

Если хочешь полный контроль над конфигом:

1. Создать структуру каталогов на VPS, например:

   mkdir -p ~/xray/data
   cd ~/xray

2. Сгенерировать Reality‑ключи и shortId:

   docker run --rm ghcr.io/xtls/xray-core:latest xray x25519
   # сохранить private / public key
   openssl rand -hex 8  # shortId

3. Создать data/config.json с inbound VLESS+Reality (можно взять за основу пример реальности c XTLS Vision из гайдов и подставить свои privateKey, shortId, serverNames, dest).[2][3][4]

4. Создать docker-compose.yml примерно такого вида:

   services:
     xray:
       image: ghcr.io/xtls/xray-core:latest
       container_name: xray-reality
       restart: unless-stopped
       volumes:
         - ./data/config.json:/usr/local/etc/xray/config.json:ro
       ports:
         - "0.0.0.0:443:443/tcp"
       command: ["xray", "-config", "/usr/local/etc/xray/config.json"]

Такой compose-файл поднимает Xray в отдельном контейнере и прокидывает порт 443 наружу.[2]

5. Запуск/управление:

   docker compose up -d
   docker compose logs -f

4. Вариант с web‑панелью (3x-ui)

Если хочешь кликать через UI:

1. Создать docker-compose.yml с образом 3X‑UI:

   version: "3"
   services:
     3x-ui:
       image: ghcr.io/mhsanaei/3x-ui:latest
       container_name: 3x-ui
       network_mode: host
       restart: unless-stopped
       volumes:
         - ./db/:/etc/x-ui/

2. Запустить:

   docker compose up -d

3. Зайти в веб‑панель (порт и пароль берёшь из логов контейнера) и там уже создать инстанс VLESS+Reality через GUI.[6]

***

Если напишешь, какой именно вариант тебе ближе (чистый Xray с ручным конфигом или готовый образ/панель), можно разобрать конкретный config.json под твой домен/IP и клиент (например, v2rayNG/nekobox).

[1](https://github.com/Arman92/xtls-dockerized)
[2](https://linuxguidance.net/xray-xtls-reality-in-docker/)
[3](https://github.com/wpdevelopment11/xray-tutorial)
[4](https://xtls.github.io/en/config/outbounds/vless.html)
[5](https://github.com/myelectronix/xtls-reality-docker)
[6](https://semenov.work/posts/3x-ui-vless-reality-vpn/)
[7](https://stackoverflow.com/questions/68633740/installing-xray-and-configure-with-jfrog-artifactory-using-docker-compose)
[8](https://github.com/XTLS/Xray-core/issues/4033)
[9](https://stackoverflow.com/questions/69563734/issues-with-xray-as-side-container-in-aws-ecs-with-docker-compose)
[10](https://doc.openresty.com/en/xray/on-premise/docker-compose-deployment/)

[file-name 000298_2025-11-30_09-03-56.txt]