За последние пару лет в интернете скопилось много статей на данную тему, так зачем же еще одна? Лично для меня была проблема в том, чтобы найти всю информацию по базовой настройке сервера (обновление, защита и т.д.) и в дополнение к этому быстрый способ настройки VLESS в одной статье. Обычно я натыкался на статьи, где есть настройка панели 3X-UI (и то, как я понял, читая комментарии под такими статьями, не всегда правильная) без базовой настройки самого VPS, либо статьи, где всё написано слишком детально, а «много букав» читать, да ещё в последствии воспроизводить лениво в наше время.
Поэтому в данной инструкции я решил собрать в одном месте и базовую настройку сервера (которую может сделать практически любой, не слишком мудря с настройками), так и настройку Xray без панели 3X-UI всего за пару скриптов.
Я пытался сделать статью для новичков, но при этом соблюсти какой-то баланс и не вдаваться в мельчайшие делали на каждом шагу, по типу нажмите такие-то клавиши чтобы открыть консоль, если возникнут какие-то проблемы, думаю вам вполне поможет гугл или любая нейросеть.
И перед началом хочется сказать, что инструкция по настройке Vless позаимствована из этого репозитория, также статья на хабре и часть по базовой настройке сервера, если хотите почитать подробнее, из инструкции на GitHub.
Весь процесс включает 3 основных шага: аренда VPS, настройка VPS и настройка Xray/Vless.
Первое что нужно сделать это арендовать виртуальный выделенный сервер или же VPS (Эта часть статьи будет наименее подробной дабы не провоцировать лишний раз цензоров к блокировкам определенного хостера).
Если вы развертываете VPN только для себя или же для узкого круга людей (в моем случае было до 5 человек) и планируете пользоваться не слишком часто, то, как показал мой опыт, сервера за 1-2$ в месяц с самыми базовыми параметрами вполне может хватить (но оперативной памяти желательно от 1ГБ), тут, наверное, нужно смотреть только на лимит трафика в месяц.
Операционную систему лучше выбрать Debian 12 или Ubuntu 24, дальнейшие настройки будут показаны на Debian 12.
Для VPS можете выбрать любую иностранную страну, желательно с наименьшей цензурой в интернете и ближайшей к вам по местоположению (от этого может зависеть задержка соединения). Также обратите внимания есть ли возможность оплаты сервера удобным для вас способом (иногда при покупке требуют указать паспортные данные, но не всегда их проверяют).
После оплаты VPS вам на почту будут высланы данные для входа на сервер из консоли. Сохраните их где-нибудь.
Думаю, самая сложная часть уже пройдена, дальше отступать некуда, деньги были потрачены, теперь задача сделать так, чтобы они не были потрачены впустую, поэтому продолжим)
Если с настройкой сервера что-то пойдет не по плану, вы всегда можете сбросить или переустановить систему через административную панель провайдера и начать всё заново.
Сперва нужно подключится к арендованному серверу. Для этого откройте командную строку или powershell.
После этого, в открывшемся окне пропишите следующую команду и нажмите Enter (введите ip-адрес, сохраненный на предыдущем шаге): ssh root@ip_адрес_сервера
При первом подключении SSH спросит про fingerprint, ответьте yes.
После, вас попросят ввести пароль, можете скопировать его, из сохраненных данных в прошлом шаге и вставить (скорее всего вставка в консоль по нажатию на ПКМ) или ввести вручную, пароль не будет видно в консоли, это нормально, поэтому не пытайтесь его вставить несколько раз)
Теперь проведем настройку и обеспечим базовую безопасность сервера.
Вводим команду passwd в консоль и прописываем новый пароль (чем длиннее тем лучше), теперь при повторном подключении к серверу нужно будет вводить именно его, а не начальный пароль.
Вводим команду apt update && apt upgrade -y && reboot в консоль, после чего нужно подождать около 5-10 минут (если появится розовое/синее окно, просто нажмите Enter), после чего сервер перезагрузится и к нему нужно будет подключится заново.
Подключаемся и вводим команду adduser user_name в консоль, где вместо user_name впишите ваше любое придуманное имя пользователя (пример команды adduser lorem), далее введите новый пароль для пользователя и также сохраните эти данные где-нибудь (другие вопросы при создании можно пропустить, нажав Enter).
После, введите следующую команду usermod -aG sudo user_name где user_name ваше новое имя пользователя.
Если понадобится, перейти от обычного пользователя к root можно командой su -, от суперпользователя к обычному командой su user_name.
Теперь нужно поменять стандартный порт для подключения по SSH. Для этого введите в консоль команду nano /etc/ssh/sshd_config после чего в консоли откроется текстовый редактор (все команды выполняются от пользователя root).
Перемещайтесь стрелочками на клавиатуре. Мышка здесь не работает. В данном окне нужно изменить две строчки, находим строчку #Port 22 где нужно убрать # и поменять цифру 22 на любой не занятый из диапазона 10001-65535 (посмотреть занятые порты можно командой ss -lntup) порт.
Также ищем строчку PermitRootLogin yes и меняем yes на no. Сохраняем файл, нажав Ctrl + O, затем Enter, закрываем файл, нажав Ctrl + X. Далее выполняем команду systemctl restart sshd.
Теперь подключение к серверу будет происходить по команде: ssh user_name@ ip_адрес_сервера -p новый_порт
В результате этого шага мы запретили пользователю root входить на сервер, также запретили входить на сервер со стандартного порта 22 и теперь подключение осуществляется созданным на прошлом шаге пользователем по новому порту.
Также, как написано во многих статьях, безопаснее сделать вход на сервер по ключам, здесь я не буду на этом останавливаться, почитать подробнее, можете в инструкции.
Fail2ban — это программа для защиты серверов, которая автоматически блокирует IP адреса злоумышленников после повторяющихся неудачных попыток входа.
Выполняем команды (от root пользователя) apt install rsyslog далее apt install fail2ban и после nano /etc/fail2ban/jail.local для создание базовой конфигурации.
В открывшемся текстовом редакторе вставляем следующий текст (в строке port = вставьте свой новый порт для входа по SSH):
[DEFAULT]
bantime = 10m
findtime = 10m
maxretry = 5
[sshd]
enabled = true
port = 5667
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 1h
findtime = 10mСохраняем файл, нажав Ctrl + O, затем Enter, закрываем файл, нажав Ctrl + X. Выполняем команду systemctl restart fail2ban далее systemctl status fail2ban для проверки работоспособности и systemctl enable fail2ban.
Выполняем команду apt install ufw -y. Разрешаем нужные для VPN порты, выполняем по очереди команды:
ufw allow OpenSSH
ufw allow 80
ufw allow 443
ufw allow 8442
ufw allow 8443
ufw allow 10443Также необходимо разрешить порт для входа по SSH указанным в шаге 4, иначе не получится зайти на сервер: ufw allow 5667 (укажите свой порт)
Включаем и проверяем Firewall: ufw enable (спросит подтверждение, соглашаемся), далее ufw status verbose, в выводе должно быть что-то по типу:
Status: active
Default: deny (incoming), allow (outgoing)
…Попробуйте зайти на сервер из нового окна консоли не закрывая предыдущее, чтобы убедится, что вы не потеряли доступ к серверу, если что-то пошло не так выполняем команду sudo ufw disable в старой сессии консоли.
На этом с базовой настройкой сервера покончено, осталось настроить Xray и получить конфиги VLESS.
Итак, сперва нужно получить свой домен. Будем использовать бесплатный домен от FreeDNS (можете использовать любой другой вариант), конечно, предпочтительнее использовать платные варианты, но, как показывает мой опыт и бесплатный вариант вполне нормально работает.
Заходим и регистрируемся на сайте:
После чего в левом верхнем меню For Members переходим в раздел Registry. В данном разделе выбираете любой понравившейся вам домен и переходите на его страницу.
В поле Subdomain нужно придумать и ввести ваш домен, в поле Destination ввести IP-адрес вашего VPS, после чего вводите капчу и жмете кнопку Save.
Далее вы попадете на страницу Subdomains откуда вам нужно скопировать получившуюся ссылку и сохранить её (пример ipsum.mooo.com).
Нужно подождать примерно от 5 до 20 минут пока домен привяжется в IP-адресу сервера, прежде чем продолжать дальше. Проверить привязан ли поддомен можно командой ping ваш_домен. Если вы не видите ошибку по типу Name or service not known значит можно продолжать дальше.
P.S. Скрипты, которые используются далее могут меняться на более актуальные, можете посмотреть их в этом репозитории если команды ниже не будут работать.
Возвращаемся в консоль к нашему серверу, если выходили с сервера, при входе перейдите к root пользователю командой su –. Копируем или вводим bash-скрипт в консоль для автоматической установки и настройки сервера VPN на базе Xray (VLESS Reality / XHTTP / Shadowsocks 2022) с nginx и HTTPS (Let’s Encrypt) под указанный домен (также нужно сказать, что нельзя без проверки выполнять всякие скрипты из интернета, поэтому нужно проверять скрипты перед выполнением, но, так как мы тут дилетанты, продолжим как есть). Для удобства можете скопировать команду и отредактировать её в текстовом редакторе:
bash -c "$(curl -L https://raw.githubusercontent.com/xVRVx/autoXRAY/main/autoXRAY1.sh)" -- ваш_домен
где ваш_домен — это домен, скопированный с прошлого шага.
После выполнения команды в консоли должен появится такой вывод, скопируйте и сохраните его:
Далее нужно скопировать либо URL подписки, либо каждый конфиг в приложение, предложенное в конце вывода. В большинстве приложений логика схожа, нужно скопировать ссылку или конфиг и в приложении нажать на кнопку «Вставить из буфера обмена» или похожую.
Тестовое подключение
- Скопируйте любую ссылку конфига из вашей страницы подписки
- Добавьте в приложение (Happ, v2rayNG и т.д.)
- Включите VPN
- Проверьте IP: https://whoer.net или https://2ip.ru
- IP должен измениться на IP вашего сервера
На этом можно было бы и закончить, но есть вероятность что данный вариант реализации VPN может не заработать, особенно через мобильную сеть, но у нас есть выход из данной ситуации (пока что).
Так как в прошлом варианте VPN мы подключаемся напрямую к зарубежному серверу, это может не понравится цензорам, что как следствие приводит к невозможности использования данного способа, особенно на мобильных сетях. Выход из данной ситуации это создание дополнительного сервера на территории, где цензор терпимее относится (пока что) к подключению к серверам, например в Москве.
Итак, для реализации данного способа нужно арендовать ещё один сервер и полностью выполнить шаги 1 и 2 для создания и настройки нового VPS. Далее нужен новый поддомен, который можно добавить, нажав на [add] во вкладке Subdomains на сайте FreeDNS (не забудьте проверить привязан ли ваш новый домен к серверу командой ping ваш_новый_домен).
Также, вам понадобится конфиг vless XHTTP reality EXTRA сгенерированный в конце третьего шага.
После всей подготовки нужно прописать следующую команду в консоль на новом сервере:
bash -c "$(curl -L https://raw.githubusercontent.com/xVRVx/autoXRAY/main/autoXRAYselfRUbrEUxhttp.sh)" -- ваш_новый_домен "ваш_сгенерированный_конфигXHTTP"
где ваш_новый_домен — это только что созданный домен и ваш_сгенерированный_конфигXHTTP это конфиг vless XHTTP reality EXTRA (вставляем конфиг внутрь кавычек).
В итоге установится мост между двумя серверами и выведется новый конфиг для подключения, как в конце шага 3, который позволит нам подключаться к RU серверу, который в свою очередь уже будет подключаться к зарубежному серверу.
Ну и на этом можно заканчивать, поздравляю с настройкой вашего VPN и надеюсь у вас всё заработает с первого раза, повторюсь, если что-то не получилось интернет и нейросети в вашем распоряжении !)
P.S. Если со временем что-то перестало работать, попробуйте перезапустить скрипт установки VPN.
rebootsystemctl status xray nginxnano /usr/local/etc/xray/config.jsonПосле изменений:
systemctl restart xray
systemctl status xray # проверить что запустился# Проверить загрузку CPU и памяти
htop # установить, если недоступно: apt install htop
# Проверить использование сети
iftop # установить, если недоступно: apt install iftop
# Проверить диск
df -h# С вашего локального компьютера
ping ваш_домен.com
curl -I https://ваш_домен.com
# Проверить DNS
nslookup ваш_домен.comЕсли вы часто меняете серверы, шаги 2–4 можно автоматизировать двумя скриптами из этого репозитория: setup_foreign.sh и setup_ru_bridge.sh. Каждый скрипт выполняет полную настройку сервера (пароли, пользователь, SSH, fail2ban, firewall) и сразу запускает нужный VPN скрипт — всё за один запуск.
Скачайте файлы на сервер или создайте их через nano и вставьте содержимое вручную:
nano /root/setup_foreign.sh
# вставьте содержимое файла, Ctrl+O → Enter → Ctrl+X (иностранный сервер)
nano /root/setup_ru_bridge.sh
# вставьте содержимое файла, Ctrl+O → Enter → Ctrl+X (местный сервер)Подключитесь к иностранному VPS по SSH как root и выполните:
bash /root/setup_foreign.sh \
--domain lorem.mooo.com \
--user myuser \
--user-pass myUserPass \
--root-pass myRootPass \
--ssh-port 13456Аргументы:
| Аргумент | Описание |
|---|---|
--domain |
Домен, привязанный к IP этого сервера (FreeDNS или другой) |
--user |
Имя нового пользователя |
--user-pass |
Пароль нового пользователя |
--root-pass |
Новый пароль root (если не указать — сгенерируется автоматически) |
--ssh-port |
Новый порт SSH (диапазон 1024–65535) |
--vpn-script |
URL VPN скрипта (необязательно, по умолчанию autoXRAY1.sh) |
По окончании скрипт выведет данные сервера и VPN конфиги. Сохраните конфиг vless XHTTP reality EXTRA — он понадобится для следующего шага.
Подключитесь к российскому VPS по SSH как root и выполните:
bash /root/setup_ru_bridge.sh \
--domain lorem-ru.mooo.com \
--xhttp-config "vless://..." \
--user myuser \
--user-pass myUserPass \
--root-pass myRootPass \
--ssh-port 13457Аргументы:
| Аргумент | Описание |
|---|---|
--domain |
Новый домен, привязанный к IP российского сервера |
--xhttp-config |
Конфиг vless XHTTP reality EXTRA из вывода предыдущего скрипта (в кавычках) |
--user |
Имя нового пользователя |
--user-pass |
Пароль нового пользователя |
--root-pass |
Новый пароль root (если не указать — сгенерируется автоматически) |
--ssh-port |
Новый порт SSH (диапазон 1024–65535) |
--bridge-script |
URL скрипта моста (необязательно, по умолчанию autoXRAYselfRUbrEUxhttp.sh) |
По окончании скрипт выведет данные сервера и новые VPN конфиги для подключения через мост.
Оба скрипта в конце печатают блок вида:
Remote Server Settings:
IP - 31.11.134.22
SSH port - 13456
user - myuser
password user - myUserPass
password root - myRootPass
Подключение к серверу:
ssh [email protected] -p 13456
─────────────── VPN конфиги ───────────────
...конфиги из VPN скрипта...
───────────────────────────────────────────
Сохраните этот вывод в надёжном месте.











