Скрипт установки VLESS: автоматизация развертывания прокси-сервера

Практическое руководство по автоматизации установки VLESS-прокси: скрипты, панели 3X-UI и Marzban, настройка XTLS-Reality, безопасность и устранение неполадок.

Зачем автоматизировать установку VLESS

Ручная настройка VLESS-прокси на сервере требует повторения одних и тех же действий: обновление системы, установка зависимостей, загрузка конфигурационных файлов, настройка панели управления. Если серверов несколько или они периодически меняются, ручной процесс становится источником ошибок и потери времени. Скрипт установки VLESS решает эту проблему, объединяя все шаги в один исполняемый файл.

Автоматизация особенно полезна в сценариях, когда нужно быстро развернуть новый сервер после блокировки предыдущего. Вместо того чтобы вводить команды по одной, вы запускаете скрипт и через несколько минут получаете готовый прокси. Это также снижает риск пропустить важный шаг, например, не настроить межсетевой экран или не сгенерировать ключи шифрования.

Кроме того, скрипты позволяют стандартизировать конфигурацию: все серверы будут иметь одинаковые параметры, что упрощает их обслуживание. Если вы используете несколько хостинг-провайдеров, единый скрипт гарантирует, что на каждом сервере будет установлена одна и та же версия панели и ядра Xray.

Основные компоненты VLESS-прокси

Прежде чем писать скрипт, важно понимать, из чего состоит VLESS-прокси. Основу составляет ядро Xray, которое реализует протокол VLESS и поддерживает технологию XTLS-Reality. XTLS-Reality маскирует трафик под обычное HTTPS-соединение, используя чужой сайт в качестве прикрытия. Это делает прокси устойчивым к глубокому анализу пакетов (DPI).

Для управления сервером обычно используется веб-панель. Два популярных варианта — 3X-UI и Marzban. 3X-UI — это легковесная панель с веб-интерфейсом, которая поддерживает установку через официальный скрипт. Marzban — более функциональная панель с API и поддержкой Docker, что удобно для автоматизации.

Скрипт установки должен выполнить следующие задачи:

  • Обновить системные пакеты.
  • Установить необходимые зависимости (curl, wget, nginx, python3 и т.д.).
  • Загрузить и запустить установщик панели.
  • Сгенерировать ключи x25519 и Short ID для Reality.
  • Настроить конфигурацию Xray с параметрами VLESS+Reality.
  • Создать административного пользователя панели.
  • Настроить межсетевой экран и другие меры безопасности.

Выбор панели управления: 3X-UI или Marzban

При автоматизации установки VLESS ключевой выбор — панель управления. 3X-UI отличается простотой: один скрипт устанавливает ядро, панель и systemd-сервис. Она поддерживает русский интерфейс, что удобно для русскоязычных пользователей. Установка 3X-UI выполняется командой bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh). В процессе установки можно выбрать порт панели, SSL-сертификат и другие параметры.

Marzban, напротив, предлагает больше возможностей для автоматизации: у неё есть REST API, поддержка Docker и возможность управления через командную строку. Скрипт установки Marzban может быть сложнее, но он позволяет полностью автоматизировать создание пользователей и настройку прокси. Например, можно использовать marzban cli admin create для создания администратора без ручного ввода.

Для личного использования обычно достаточно 3X-UI. Если вы планируете раздавать доступ другим людям или управлять большим количеством клиентов, Marzban будет более подходящим вариантом. В любом случае, скрипт установки должен быть адаптирован под выбранную панель.

Структура скрипта установки VLESS

Хороший скрипт установки VLESS должен быть модульным и легко читаемым. Ниже приведена типичная структура bash-скрипта для установки Marzban:

#!/bin/sh
# Установка Marzban с VLESS+Reality

# Обновление системы
apt update -y
apt install -y tmux curl nginx python3 python3-pip

# Установка Marzban через официальный скрипт
bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install

# Создание администратора
marzban cli admin create --sudo

# Генерация ключей и настройка конфигурации
privatekey=$(docker exec marzban-marzban-1 xray x25519 | grep 'Private key' | awk '{print $3}')
openssl_hex=$(openssl rand -hex 8)

# Запись данных для входа в файл
cat > /root/marzban.txt <<EOF
URL - http://$serverip:7575/dashboard/
Login - admin
Password - $password
EOF

Этот скрипт выполняет основные шаги: обновление, установка, создание администратора и генерация ключей. Важно, чтобы скрипт был запущен от root или с использованием sudo. Также необходимо заранее указать IP сервера и пароль для администратора в переменных serverip и password.

Для 3X-UI скрипт будет проще, так как установщик сам генерирует ключи и настройки. Достаточно запустить официальный скрипт и сохранить выведенные данные.

Настройка XTLS-Reality в скрипте

XTLS-Reality — ключевая технология, которая делает VLESS-прокси незаметным для DPI. При настройке через скрипт важно правильно задать параметры Reality: цель (target), SNI, публичный ключ, Short ID и отпечаток uTLS.

Цель — это сайт-маска, через который проходит рукопожатие. Он должен поддерживать TLS 1.3, HTTP/2 и обмен ключами X25519. Популярные варианты: www.samsung.com:443, www.nvidia.com:443, www.intel.com:443. В скрипте можно задать цель по умолчанию, но лучше предусмотреть возможность её изменения.

SNI — это домен без порта, который клиент будет указывать при подключении. Он должен совпадать с целью. Публичный ключ и Short ID генерируются автоматически панелью, но в скрипте можно использовать команду xray x25519 для генерации ключей заранее.

Отпечаток uTLS (например, chrome или firefox) имитирует TLS-отпечаток браузера. В скрипте можно задать значение по умолчанию, но пользователь может захотеть изменить его для лучшей совместимости.

Пример настройки Reality в конфигурационном файле Xray:

{
  "streamSettings": {
    "security": "reality",
    "realitySettings": {
      "dest": "www.samsung.com:443",
      "serverNames": ["www.samsung.com"],
      "privateKey": "...",
      "shortIds": ["..."]
    }
  }
}

Скрипт должен либо генерировать этот файл, либо использовать API панели для настройки inbound.

Автоматизация с помощью Docker и Ansible

Для более сложной автоматизации можно использовать Docker и Ansible. Docker позволяет упаковать Xray в контейнер, что упрощает развертывание и обновление. Пример docker-compose.yml для Xray:

version: '3'
services:
  xray:
    image: teddysun/xray:latest
    volumes:
      - /opt/xray/config.json:/etc/xray/config.json
      - /opt/xray/geosite.dat:/usr/local/share/xray/geosite.dat
    ports:
      - "443:443"
    restart: unless-stopped

Скрипт установки может включать установку Docker и Docker Compose, а затем запускать контейнер с нужной конфигурацией. Это особенно удобно, если вы используете несколько серверов и хотите быстро развернуть одинаковые конфигурации.

Ansible — это инструмент управления конфигурацией, который позволяет автоматизировать установку на множестве серверов одновременно. С помощью Ansible playbook можно описать все шаги: установка Docker, копирование конфигурационных файлов, запуск контейнеров. Это идеально для сценариев, где серверы часто меняются.

Пример простого Ansible playbook для установки Xray:

- hosts: all
  tasks:
    - name: Install Docker
      apt:
        name: docker.io
        state: present
    - name: Copy config
      copy:
        src: config.json
        dest: /opt/xray/config.json
    - name: Run container
      docker_container:
        name: xray
        image: teddysun/xray:latest
        ports:
          - "443:443"
        volumes:
          - /opt/xray/config.json:/etc/xray/config.json

Такой подход позволяет автоматизировать не только установку, но и обновление конфигурации.

Безопасность сервера после установки

После установки VLESS-прокси важно настроить безопасность сервера. Скрипт установки должен включать базовые меры: настройку межсетевого экрана (UFW), ограничение доступа к панели управления и защиту от сканирования портов.

UFW можно настроить с помощью команд:

ufw allow 443/tcp
ufw allow 22/tcp
ufw enable

Панель управления не должна быть доступна из интернета. В 3X-UI есть возможность привязать панель к 127.0.0.1, а доступ осуществлять через SSH-туннель. В Marzban можно настроить доступ только через API с авторизацией.

Также рекомендуется использовать fail2ban для защиты от brute-force атак на SSH и панель. Скрипт может установить fail2ban и настроить его для отслеживания неудачных попыток входа.

Важно регулярно обновлять ядро Xray и панель. Скрипт может включать проверку обновлений при запуске или использовать systemd-сервис для автоматического обновления.

Типичные ошибки и их решение

При использовании скриптов установки VLESS могут возникать ошибки. Одна из распространённых — неверно указанный IP сервера или пароль в скрипте. Это приводит к тому, что панель устанавливается, но данные для входа неверны. Решение — проверить переменные в скрипте перед запуском.

Другая проблема — занятый порт 443. Если на сервере уже запущен веб-сервер, скрипт может завершиться с ошибкой. Перед установкой убедитесь, что порт 443 свободен, или измените порт в конфигурации.

Также часто возникает ошибка, связанная с несовместимостью версий. Например, скрипт установки Marzban может требовать определённую версию Python. В этом случае нужно обновить Python или использовать Docker-версию.

Если после установки прокси не работает, проверьте:

  • Правильность настроек Reality (цель, SNI, ключи).
  • Открыт ли порт 443 в межсетевом экране хостинг-провайдера.
  • Корректность конфигурации клиента (UUID, публичный ключ, Short ID).

Логи Xray можно посмотреть командой journalctl -u xray или в панели управления.

Практические примеры скриптов

Рассмотрим два примера скриптов: для 3X-UI и для Marzban.

Скрипт для 3X-UI:

#!/bin/bash
# Установка 3X-UI с VLESS+Reality
apt update && NEEDRESTART_MODE=a apt upgrade -y
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
# Далее следуйте инструкциям установщика

Этот скрипт минимален, так как установщик 3X-UI интерактивен. Для полной автоматизации можно использовать expect или передать ответы через pipe, но это сложнее.

Скрипт для Marzban (адаптированный из источника):

#!/bin/sh
RNAME=Marzban
set -x
LOG_PIPE=/tmp/log.pipe.$$
mkfifo ${LOG_PIPE}
LOG_FILE=/root/${RNAME}.log
touch ${LOG_FILE}
chmod 600 ${LOG_FILE}
tee < ${LOG_PIPE} ${LOG_FILE} &
exec > ${LOG_PIPE}
exec 2> ${LOG_PIPE}
killjobs() { jops="$(jobs -p)"; test -n "${jops}" && kill ${jops} || :; }
trap killjobs INT TERM EXIT

echo "=== Recipe ${RNAME} started at $(date) ==="
apt update -y
apt install tmux curl nginx python3 python3-pip -y
pip install marzpy --break-system-packages
export HOME=/root
serverip="ТУТ АЙПИ СЕРВЕРА"
password="ТУТ ПАРОЛЬ ДЛЯ MARZBAN"
cd /root
tmux new -d -s "marzban"
sleep 2
tmux send-keys -t "marzban" 'bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install > /tmp/marzban_log.txt' Enter
while sleep 1; do
  cat /tmp/marzban_log.txt | grep -q "Press CTRL+C" && echo true && rm -f /tmp/marzban_log.txt && tmux kill-session -t "marzban" && break || echo false
done
# Создание администратора и настройка конфигурации
# ... (как в примере выше)

Этот скрипт автоматизирует установку Marzban, включая создание администратора и генерацию ключей. Он предназначен для чистой установки на Debian 12.

Заключение и рекомендации

Скрипт установки VLESS — это мощный инструмент для быстрого развертывания персонального прокси-сервера. Он экономит время, снижает риск ошибок и позволяет стандартизировать конфигурацию. При выборе панели управления учитывайте свои потребности: 3X-UI проще, Marzban — функциональнее.

Рекомендуется использовать скрипты только на чистых серверах с минимальными требованиями: 1 vCPU, 1 ГБ RAM, 10 ГБ SSD. Оптимальная ОС — Debian 12 или Ubuntu 22.04/24.04. Убедитесь, что порт 443 свободен и сервер расположен в стране, где нет ограничений на VPN.

После установки обязательно настройте межсетевой экран и ограничьте доступ к панели. Регулярно обновляйте ядро Xray и панель, чтобы защититься от новых методов блокировки. Если прокси перестал работать, проверьте логи и настройки Reality.

Автоматизация — это не только удобство, но и безопасность. Используя скрипты, вы можете быстро восстановить работу после блокировки, не тратя время на ручную настройку.

Вопросы и ответы

Какой скрипт установки VLESS лучше: для 3X-UI или Marzban?

Выбор зависит от ваших задач. 3X-UI проще в установке и управлении, подходит для личного использования. Marzban предлагает API и Docker, что удобно для автоматизации и управления несколькими клиентами. Если вам нужен быстрый старт — выбирайте 3X-UI, если планируете масштабирование — Marzban.

Можно ли автоматизировать установку VLESS с помощью Ansible?

Да, Ansible отлично подходит для автоматизации установки на множестве серверов. Вы можете создать playbook, который устанавливает Docker, копирует конфигурационные файлы Xray и запускает контейнер. Это особенно полезно, если серверы часто меняются.

Какие минимальные требования к серверу для VLESS?

Минимальные требования: 1 vCPU, 512 МБ RAM (рекомендуется 1 ГБ), 5 ГБ SSD (рекомендуется 10 ГБ), ОС Ubuntu 22.04 или Debian 12. Важно, чтобы сервер имел белый IPv4-адрес и свободный порт 443.

Как выбрать сайт-маску для XTLS-Reality?

Сайт-маска должна поддерживать TLS 1.3, HTTP/2 и X25519. Популярные варианты: www.samsung.com, www.nvidia.com, www.intel.com. Избегайте сайтов за Cloudflare и доменов .ru, .cn, .ir. Лучше выбирать цель в сети вашего дата-центра для минимальной задержки.

Что делать, если после установки VLESS прокси не работает?

Проверьте: 1) открыт ли порт 443 в межсетевом экране хостинг-провайдера; 2) правильность настроек Reality (цель, SNI, ключи); 3) корректность данных клиента (UUID, публичный ключ, Short ID). Также посмотрите логи Xray через journalctl -u xray.

Нужно ли настраивать межсетевой экран после установки?

Да, обязательно. Настройте UFW, разрешив только порты 22 (SSH) и 443 (прокси). Панель управления лучше привязать к 127.0.0.1 и использовать SSH-туннель для доступа. Это защитит сервер от сканирования и атак.

Как часто нужно обновлять Xray и панель?

Рекомендуется обновлять при выходе новых версий, так как они содержат исправления уязвимостей и улучшения совместимости. Для 3X-UI можно использовать меню x-ui, для Marzban — команду marzban update. Автоматизируйте обновления через cron, если это возможно.