Не актуален 06.06.2026, но еще может поработать.
0. Установка:
0. Скачиваем:
curl -L https://github.com/XTLS/Xray-core/releases/latest/download/Xray-linux-64.zip -o Xray.zip
1. Распаковываем архив и ставим их
unzip Xray.zip -d /usr/local/bin/
1.1 Создаем каталог для конфигов
mkdir -p /usr/local/etc/xray
cd /usr/local/etc/xray
2. Делаем исполнительным файл xray исполнительным:
chmod +x /usr/local/bin/xray
3. Создаем конфиг:
Пример:
cat > /usr/local/etc/xray/config.json << EOF
{
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{ "id": "ВАШ-UUID", "flow": "xtls-rprx-vision" }
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "www.google.com:443",
"serverNames": ["www.google.com"],
"privateKey": "ВАШ-ПРИВАТНЫЙ-КЛЮЧ",
"shortIds": ["ВАШ-SHORTID"]
}
}
}
]
}
EOF
4. Проверяем, нет ли ошибок в конфиге
xray -test -config /usr/local/etc/xray/config.json
5. Делаем системд юнит для запуска:
cat > /etc/systemd/system/xray.service << "EOF"
[Unit]
Description=Xray Service
Documentation=https://github.com/xtls
After=network.target nss-lookup.target
[Service]
User=nobody
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/usr/local/bin/xray run -config /usr/local/etc/xray/config.json
Restart=on-failure
RestartPreventExitStatus=23
LimitNPROC=10000
LimitNOFILE=1000000
[Install]
WantedBy=multi-user.target
EOF
5.1 Что мы там нагородили в сервисе:
User=nobody — служба будет работать от ограниченного пользователя (безопасно)
ExecStart=... — указывает, где лежит Xray и ваш конфиг
Restart=on-failure — автоматически перезапустится, если что-то пойдёт не так
5.2 Первый запуск и проверка
#После создания service-файла нужно перечитать конфигурацию systemd:
systemctl daemon-reload
# Включаем автозапуск при загрузке сервера
systemctl enable xray
# Запускаем Xray сейчас
systemctl start xray
# Проверяем, что всё работает
systemctl status xray
# Смотрим логи
journalctl -u xray -f --since "1 minute ago"
5.3 Останавливаем разбираемся что настраивать
systemctl stop xray
1. Краткое описание что есть что:
Внимательно знакомимся что есть что: UUID — это уникальный идентификатор. Генерируем UUID выполните команду: xray uuid PrivateKey и PublicKey - (приватный и публичный) Это самый важный шаг. Генерируем пару ключей Reality выполните команду: xray x25519 Приватный ключ: пойдёт в конфиг сервера (privateKey) Публичный ключ: пойдет для конфига клиента (параметр pbk) ShortID — это шестнадцатеричная строка. Генерируем ShortID выполните команду: openssl rand -hex 8
2. Основная настройка сервера и облегчение первого запуска:
Берем какой нибудь текстовый редактор, в него мы будем сохранять полученные значения и подготавливать конфиг.
Вводим описанные команды для конфига ниже для трех пользователей:
0. Нужно сгенерировать три уида
xray uuid
xray uuid
xray uuid
1. Нужно сгенерировать приватный и публичный ключ в кол-ве 1шт
xray x25519
2. нужно сгенерировать short-id в кол-ве 1шт
openssl rand -hex 8
3. Внимательно заполняем ниже
# Как это вставить на сервер думаю объяснять не надо.
UUID_1="пишем первый уид"
UUID_2="пишем второй уид"
UUID_3="пишем третий уид"
SERVER_IP="Сюда пишем внешний адрес сервера"
PORT="желаемый порт для сервера xray например 25687"
SNI="Желаемый SNI, то сайт которым будет прикидываться reality, этот момент я оставлю не объяснённым, но это важная опция"
PUBLIC_KEY="сюда публичный ключ"
SHORT_ID="сюда пишем шорт"
PrivateKey="пишем приватный ключ"
cat > /usr/local/etc/xray/config.json << EOF
{
"log": {"loglevel": "debug"},
"inbounds": [
{
"port": $PORT,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "$UUID_1",
"flow": "xtls-rprx-vision",
"email": "notebook@example.com"
},
{
"id": "$UUID_2",
"flow": "xtls-rprx-vision",
"email": "phone@example.com"
},
{
"id": "$UUID_3",
"flow": "xtls-rprx-vision",
"email": "tablet@example.com"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "$SNI:443",
"serverNames": ["$SNI"],
"privateKey": "$PrivateKey",
"shortIds": ["$SHORT_ID"],
"servername": "$SNI"
}
}
}
],
"outbounds": [{"protocol": "freedom"}]
}
EOF
# Собираем ссылку
VLESS_LINK1="vless://$UUID_1@$SERVER_IP:$PORT?encryption=none&security=reality&flow=xtls-rprx-vision&sni=$SNI&fp=chrome&pbk=$PUBLIC_KEY&sid=$SHORT_ID&type=tcp&alpn=http%2F1.1#MyVLESS_REALITY1"
VLESS_LINK2="vless://$UUID_2@$SERVER_IP:$PORT?encryption=none&security=reality&flow=xtls-rprx-vision&sni=$SNI&fp=chrome&pbk=$PUBLIC_KEY&sid=$SHORT_ID&type=tcp&alpn=http%2F1.1#MyVLESS_REALITY2"
VLESS_LINK3="vless://$UUID_3@$SERVER_IP:$PORT?encryption=none&security=reality&flow=xtls-rprx-vision&sni=$SNI&fp=chrome&pbk=$PUBLIC_KEY&sid=$SHORT_ID&type=tcp&alpn=http%2F1.1#MyVLESS_REALITY3"
# Выводим ссылку на экран
echo $VLESS_LINK1
echo $VLESS_LINK2
echo $VLESS_LINK3
# Генерируем QR-код для UUID_1 (можно отсканировать телефоном)
qrencode -t ansiutf8 $VLESS_LINK1
3. Клиент для пк для телефона и т.д.
Заходите на github.com/2dust/v2rayN/releases Скачиваете файл v2rayN-xx.zip (последняя версия) Для андройда их много всяких в гуглаплей Для яблока тоже. основные названия у клиентов HAPP, v2ray* есть и другие все они работают с переменным успехом, как и упомянутые клиенты выше Самый быстрый способ подключится к серверу xray: Скопируйте вашу VLESS-ссылку с сервера (начинается с vless://) В приложении xray: Нажмите на меню "Серверы" -> "Импорт ссылок из буфера обмена" Всё! Сервер появится в списке. Второй способ использовать камеру телефона из вашего приложения, для сканирования куракода