vpnbot. Установка + первоначальная настройка XRAY
legiz
Жил-был в России один молодой студент - любитель новомодных нейросетей. Устал он также от блокировок Роскомнадзора, от того, что каждый чих в интернете под контролем. Решил он тогда создать свой собственный маленький интернет, где все сайты доступны, а цензуры нет. Собрал он старые компьютеры, провода, да кучу умных книжек. Сидит, паяет, кодит, голову ломает. И вот, наконец, заработало! Подключил к своему новому интернету друзей, соседей, да и весь подъезд заодно. Стали они жить-поживать, да интернетом пользоваться. А Роскомнадзор тем временем голову ломает: как же так, неужели не могут они заблокировать этот маленький, домашний интернет? СПОЙЛЕР спроси у жителя Туркменистана.
Дата последнего обновления инструкции: 15.11.2024
Вводные:
- vpnbot - "панель" управления вашим сервером для предоставления доступа к прокси или VPN посредством различных протоколов: Wireguard, AmneziaWG, VLESS с транспортом на выбор Reality или Websocket посредством ядра XRAY, NaiveProxy, OpenConnect и MTProto.
- В данной инструкции будет рассмотрен только первоначальный процесс установки экземпляра vpnbot на ваш сервер и описаны все моменты для настройки раздела XRAY для тонкой настройки клиентских конфигов (подписок) с настроенной выборочной маршрутизацией (роутингом) белым списком правил (в данной инструкции мы будем настраивать что пойдёт в ваш прокси для обхода блокировок, а всё остальное по умолчанию будет идти вашей провайдерской сетью/мобильным оператором) для оригинального клиента sing-box и karing.
- Большинство моментов по настройке будет описано методом: вопрос - ответ
- Так же будут затронуты моменты по работе с другими клиентами, но не так подробно.
Создаём бота в Telegram, через который будем управлять вашим экземпляром vpnbot:
- Переходим в бота, через который создаются боты :) https://t.me/BotFather
- Вводим команду, которая начнёт процесса создания нового бота: /newbot
- Указываем имя которое будет у бота: например Вики ВПНБОТ
- Затем указываем адрес, который будет URL-адресом(ссылкой) вашего экземпляра vpnbot: например wikivpnbot (Адрес обязательно должен заканчиваться на bot) На данном этапе ваш адрес может оказаться не уникальным и потребуется снова указать адрес, но уже другой.
- После успешного создания вам станет доступен бот по адресу например t.me/wikivpnbot, а так же ключ HTTP API управления вашим экземпляром vpnbot, который вам потребуется при установке вашего экземпляра на ваш виртуальный (а может и не виртуальный) сервер.

Перейдите по ссылке вашего telegram бота например t.me/wikivpnbot и нажмите кнопку START

Где купить VPS? Хостинги провайдеры принимающие вашу карту МИР и/или Систему Быстрых Платежей (Ссылки ниже являются реферальными пройдя по ним и купив себе vps вы поддержите автора инструкции):
Регистрируемся на выбранном вами VPS хостинг провайдере. Покупаем vps с установленной ОС Ubuntu 24.04. После покупки вам станут доступны данные для подключения к вашему VPS:
- IPv4 адрес (так же возможно IPv6)
- Логин ssh (по умолчанию root)
- Пароль пользователя ssh

Подключаемся к вашему VPS через клиенты SSH (например для Android - ConnectBot, Windows - putty или встроенный ssh).
- Введите команду подключения: ssh root@ipАдресВашегоVPS
- Сохраните отпечаток ssh
- Введите пароль пользователя root

Так же вы можете подключиться без SSH через встроенное управление вашим сервером через веб VNC клиент, который встроен в вашу панель управления VPS.
Перед не посредственной установкой vpnbot в идеале требуется выполнить базовые настройки безопасности подключения к вашему vps. Как это выполнить вы можете узнать по данной ссылкею.
Выполняем установку экземпляра vpnbot посредством команды:
wget -O- https://raw.githubusercontent.com/mercurykd/vpnbot/master/scripts/init.sh | sh -s YOUR_TELEGRAM_BOT_KEY
Заменяем YOUR_TELEGRAM_BOT_KEY на ваш ключ HTTP API полученный при создании вашего бота в разделе выше Выполняете команду посредством нажатия кнопка Enterс

Наблюдаете за магией Процесс установки должен завершиться статусами started кроме php он будет в статусе healthed.

После этого включим автозагрузку вашего экземпляра при перезагрузке vps:
cd /root/vpnbot/ bash scripts/install_as_service.sh

Возвращаемся в телеграм в ваш созданный бот. Он уже должен будет вам прислать меню управления вашим экземпляром vpnbot. Если меню не появилось повторно отправьте команду /start

Предварительная настройка для корректной работы страницы подписок и других протоколов использующих шифрование TLS
Обновление от 15.11.2024: начиная c версии 1.67 по умолчанию выдаётся домен nip.io - проблем с получением сертификата lets encrypt не должно быть.
Предупреждение: использовать сервисы sslip.io, nip.io и freedns afraid рекомендуется в крайних случаях если вы не имеете возможность купить собственное доменное имя.
Переходим в раздел config
- Наблюдаем что у вас показывается три домена (вместо 1.3.1.2 будет ваш ipv4 адрес VPS)
- 1-3-1-2.nip.io (основной домен: клиентские конфиги (подписки), xray (websocket в direct режиме), Wireguard/ AmneziaWG, Shadowsocks + v2ray plugin, adguard home, mtproto)
- np.1-3-1-2.nip.io (домен исключительно для работы протокола naive proxy)(место для будущей инструкции по работе с naive proxy)
- oc.1-3-1-2.nip.io (домен исключительно для работы vpn протокола OpenConnect)(место для будущей инструкции по работе с OpenConnect)
В данном разделе нажимаем кнопку Let's Encrypt (данная кнопка закажет SSL сертификаты для доменов указанных выше - это требуется для корректной работы страницы подписок (клиентских конфигураций), протоколов Naiveproxy, OpenConnect)

Возможно у вас появится ошибка при заказе сертификата LetEncrypt на домены sslip.io - это связано с тем что очень много пользователей используют сервис sslip.io для своих нужд, а у компании Let's Encrypt есть ограничение на количество выданных сертификатов на один домен.

Уточнение от 14.10.2024. Если вы не планируете менять домены у vpnbot. И использовать сервисы доменной привязки к ip (sslip.io и nip.io), то проблем начиная с версии 1.67 у вас не должно быть проблем с получением SSL сертификата в связи с переходом по умолчанию на сервис nip.io у которого меньше количество пользователей чем у sslip.io.
Как решить данную проблему?
- Удалить домен 1-3-1-2.nip.io (1), после удаления снова нажать кнопку добавить домен(2), указать домен 1-3-1-2.nip.io (3)(nip.io другой сервис привязки IP адресов к доменным именам) после этого нажать кнопку отправить (4), а затем нажать кнопку Let's Encrypt SSL (5) и убедиться что в списке доменов появился срок действия SSL.

2. Использовать public домены в сервисе freedns afraid.

Рекомендуется выбрать public домен, у которого малое количество используемых хостов (желательно меньше ста). Вам потребуется создать три А записи указав в них IPv4 адрес вашего vps wikivpnbot.выбранный.домен np.wikivpnbot.выбранный.домен oc.wikivpnbot.выбранный.домен

После создания доменных записей. Вернитесь в меню config, удалите домен 1-3-1-2.nip.io, а затем после удаления снова нажмите кнопку Добавить домен wikivpnbot.выбранный.домен после этого вам потребуется нажать кнопку Let's Encrypt SSL для заказа SSL сертификата
3. Использовать собственный домен купленных у любого из регистраторов доменных имён второго уровня (пример доменного второго уровня: vpnbot.wiki) и по аналогии с пунктом 2. Создать три DNS A записи в управление DNS записями вашего регистратора доменного имени с указанием ipv4 адреса вашего vps
- vpnbot.wiki
- oc.vpnbot.wiki
- np.vpnbot.wiki

После создания DNS записей, добавьте основной домен например vpnbot.wiki в ваш vpnbot и не забудьте заказать сертификат Let's Encrypt SSL. Делать по аналогии с пунктом 1 добавление домена nip.io

4. Использовать другие бесплатные DNS сервисы (которые позволяют создавать несколько DNS A записей) если вам о таких известно :)
Минимальная настройка раздела XRAY
В данном пункте мы настроим подключению к серверному ядру XRAY вашего экземпляра vpnbot посредством клиентов sing-box и karing с белым списком правил маршрутизации. Изначально для стандартного конфига sing-box и karing у вас через ваш сервер ничего не проксируется - поэтому приступаем к настройке маршрутизации для доступа к различным сервисам.
Какими способами можно добавить требуемые ресурсы для работы через прокси?
- Раздел PAC в основном меню бота - отвечает за список доменов, которые будут проксироваться вашим vps.
- Раздел warp в меню routes раздела XRAY из основого меню бота - направит указанные домены через ваш VPS на сервера компании CloudFlare (может использоваться для скрытия вашего IP адреса VPS для определенных ресурсов или например для обхода ограничений опреденных ресурсов.
- Раздел block в меню routes раздела XRAY позволяет добавить домены, которые будет запрещено посещать при работе через XRAY вашего экземпляра vpnbot.
- Раздел ruleset в меню routes раздела XRAY позволит вам настроить маршрутизацию для клиентских конфигураций (подписок) с помощью списков набора правил формата .srs для доменных или ip списков (sing-box ruleset).
Хочу сразу добавить в маршрутизацию большое количество заблокированных сервисов (запрещёнограм, rutracker.org и другие сервисы) и сервисов с геоблокировкой (chatgpt, 4pda.ru, habr.com и другие). Как это сделать?
Перейти в раздел PAC основого меню vpnbot и нажать кнопку antifilter-community. Ознакомиться с полным списком сайтов, который добавится в данный раздел можно на данном портале (учитывайте, что из данного списка добавляются только домены, IP адреса из данного списка игнорируются). Учитывайте что в данный список не входит например Youtube.

Есть ли список сразу с youtube?
Начиная с версии 1.101 в разделе pac добавлена кнопка add ru-bundle. Он содержит в себе youtube. Что содержится в данном списке вы можете посмотреть здесь

Как использовать раздел Xray -> routes -> ruleset?
Нажав кнопку добавить(1) вы сможете указать направление трафика (direct (прямой провайдерский трафик), proxy (ваш сервер xray из vpnbot), block (блокировка доступа по указанному списку, актуально для блокировки рекламных сервисов)), время обновления списков на устройствах клиентов и ссылку на .srs список(2) и отправить(3) данные маршрут на маршрутизацию (роутинг) в клиентские конфигурации (подписки).
В каком виде это делается?
НаправлениеТрафика:ВремяОбновления:Ссылкаsrs

Примеры:
Хочу направить Youtube через мой прокси сервер
proxy:72h:https://github.com/SagerNet/sing-geosite/raw/rule-set/geosite-youtube.srs
Хочу заблокировать рекламу на большом количестве сайтов
block:86400s:https://github.com/burjuyz/RuRulesets/raw/main/ruleset-domain-oisd_small.srs
Хочу использовать весь список заблокированных подсетей ip адресов
proxy:86400s:https://github.com/burjuyz/RuRulesets/raw/main/ruleset-ip-antifilter_allyouneed.srs
Хочу направить весь список российских айпи адресов провайдерским трафиком мимо моего прокси сервера
direct:24h:https://github.com/SagerNet/sing-geoip/raw/rule-set/geoip-ru.srs
Где можно взять различные списки правил .srs?
Различные списки актуальные для России (реклама, списки заблокированных доменов и ip-адрессов, торрент трекеры и порталы):
https://github.com/burjuyz/RuRulesets
Доменные списки различных сервисов, а так-же рекламы:
https://github.com/SagerNet/sing-geosite/tree/rule-set
Списки ip-адрессов по странам:
https://github.com/SagerNet/sing-geoip/tree/rule-set
Различные списки из клиента Karing:
https://github.com/KaringX/karing-ruleset/tree/
Будьте внимательны при указании ссылок на .srs маршруты. Например у вас не получится добавить в список правил ссылку: https://github.com/SagerNet/sing-geoip/blob/rule-set/geoip-ru.srs так как данная ссылка для просмотра данных файлы через интерфейс Github. Корректная в данном случае будет: https://github.com/SagerNet/sing-geoip/raw/rule-set/geoip-ru.srs . Так как raw отвечает за выгрузку файла, а не его просмотр.
Настройка домена для маскировки Reality
Не рекомендуется использовать reality в режиме маскировки под чужие домены, лучше используйте транспорт websocket или steal from yourself в reality
Требуется указать сайт, под который будет происходить маскировка. По умолчанию домен для маскировки: www.microsoft.com . Но его обязательно нужно заменить на другой домен, чтобы ваш экземпляр vpnbot был менее заметен при анализе трафика. Требования для сайта: Сервер должен быть расположен за пределами РФ и не подпадать под блокировки Роскомнадзора. Он должен поддерживать соединения через TLSv1.3 и HTTP/2, а также иметь главную страницу, которая не перенаправляет пользователей на другие домены. Как проверить что сайт поддерживает TLSv1.3 и HTTP/2 можно на данном портале Под какие домены можно маскироваться? Я люблю указывать в домен Reality - домены публичных серверов Mastodon в стране, где куплен VPS.
Можно ли теоретически использовать российские домены для маскировки? Можно, но так вы только больше может привлечь внимание к своему серверу. Например указав в домен reality vk.com вы сможете использовать ваш прокси сервер на сетях мобильных операторов безлимитно, если VK включён в список безлимитных сервисов на вашем тарифе. После выбора маскировочного домена Reality в разделе XRAY нажмите кнопку changeFakeDomain и укажите выбранным вами домен.

Подробнее прочитать про выбор домена Reality можно почитать например вот здесь: https://habr.com/ru/articles/731608/ Так-же вы можете маскироваться под свой же сервер нажав кнопку steal from yourself
Создание первого пользователя и импорт подписки на смартфон
Скачайте клиент sing-box под требуемую ОС iOS, macOS, tvOS (App Store) или Android (Play Store и f-droid)
Перейдите в раздел XRAY, нажмите кнопку add, укажите имя пользователя.

Откроется окно пользовательских конфигураций созданного пользователя. Нажмите кнопку import subcribe: sing-box

Подтвердите добавление подписки в клиенте sing-box, перейдите в главное меню, выберите импортированную подписку и нажмите кнопку Подключиться

Если вы нажали кнопку antifilter-community в предыдущем пункте. То у вас сразу заработает Twitter, ChatGPT и другие сайты из этого списка. Если вы добавили ruleset youtube то он тоже заработает. (если вы нажимали ru-bundle в разделе pac - youtube заработает сразу без добавления ruleset youtube)
Запуск на ОС Windows
Нажмите кнопку sing-box windows: windows service

Скачается архив. Распакуйте его в папку например C:/proxy. По пути до распакованных файлов не должно быть кириллических символов, поэтому лучше сразу распакуйте в диске C.

Нажмите на install.cmd и запустите его. Если защитник попросить потвердить запуск - подтверждайте. Так-же потребуется подтвердить запуск с правами администратора.



Затем запустите start.cmd и так-же подтвердите запуск с правами администратора. В диспетчере задач вы сможете наблюдать сетевой адаптер sing-tun. После этого можете проверить работу требуемых порталов.

Как остановить работу sing-box? stop.cmd
Как удалить работу сервиса sing-box? uninstall.cmd , а затем удалить вашу распакованную папку если не планируете продолжать работу через sing-box.
Импорт в клиент Karing
vpnbot. Установка Karing – Telegraph
Расширенные возможности
Хочу, например, направить всё приложение (процесс) сервиса Discord на OC Windows при использовании sing-box windows service. Как это сделать?
Требуется перейти в раздел Menu -> Xray -> routes -> process (он отвечает за направление приложений полностью в прокси или direct (кнопка set to direct, учитывайте что перейдя на данный вид, не сможете добавлять процессы в прокси) нажать кнопку добавить add(1) указать имя процесса(2) и нажать кнопку отправить (3)
- Данный раздел чувствителен к регистру указываеммых символов. В случае дискорда его имя процесса начинается с большой буквы D

- Как найти имя процесса? Перейдите в диспетчер задач (ctrl+shift+esc), перейдите на вкладку «Сведения» (в Windows 11, переключение выполняется в меню) или «Подробности» (в Windows 10) и найдите процесс требуемого вам приложения:
Какой DNS сервер задействуется при использовании клиентской конфигурации (подписки) через приложение sing-box?
Используется локальный DNS сервер AdGuard Home в вашем экземпляре vpnbot. По умолчанию у него настроена блокировка черным списком правил AdGuard DNS Filter. Все ваши запросы будут обрабатываться серверами Google (8.8.8.8) и Cloudflare (1.1.1.1) примерно в равных пропорциях. Для каждого пользователя XRAY создаётся индивидуальное имя клиента AdGuard Home - это позволит вам отслеживать DNS запросы конкретных пользователей и если потребуется настроить для них индивидуальные правила блокировок рекламы или запрет на использование определенных сервисов. Подробнее о настройке AdGuard Home вы можете прочитать здесь (место для будущее инструкции)
При использовании поисковых систем (Google, YouTube и другие) вовремя использования прокси через клиент sing-box постоянно работает безопасный поиск. Как его отключить?
Перейдите в раздел AdGuard Home из основного меню. Скопируйте пароль от учётной записи admin. Нажмите кнопку web panel. Войдите с логином admin и со скопированным паролем. Перейдите в раздел Настройки Основные настройки. Снимите галочку у пункта Включить безопасный поиск. И внизу страницы нажмите кнопку сохранить.

Для чего нужен раздел package в меню routes раздела XRAY?
Данный раздел отвечает за работу с android приложениями. По умолчанию стоит правило set to proxy. Соответственно добавив имя пакета android вы укажете что в указанных приложениях прокси должен будет работать. Но учитывайте, что указанные приложения будут работать не через весь прокси, а так же будут учитывать указанные правила маршрутизации (роутинга). Где взять имя пакета android?
- Посмотреть ссылку приложения в Play Market. https://play.google.com/store/apps/details?id=org.ppsspp.ppsspp всё что находится после знака = является именем пакета android.
- Посмотреть ссылку приложения в Rustore. https://www.rustore.ru/catalog/app/org.telegram.messenger.web всё что находится после app/ является именем пакета android.
- В приложении sing-box зайти в раздел настройки. Нажать кнопку Configure раздела Profile Override. Нажать переключатель per-app proxy, снова нажать кнопку configure. Под названием приложения вы сможете увидеть имя пакета Android. После того как вы посмотрите имя пакета android переключатель per-app proxy требуется перевести в положение выключить.
Нажав кнопку set to direct вы переведете работу данного раздела на режим работы, который будет запрещать указанным приложениям как либо взаимодействовать с прокси. Данный способ например актуален для полного запрета российским приложениям взаимодействовать с вашим прокси. Есть ли список популярных российских приложений для их исключения взаимодействия с моим прокси. Да есть, скачать список вы можете по данной ссылке. Чтобы добавить данный список в ваш экземпляр vpnbot вам требуется перейти в раздел Menu -> Xray -> routes -> package нажать кнопку restore и загрузить файл скачанный по ссылке выше. После этого вы сможете наблюдать большое количество российских приложений, которые не будут взаимодействовать с прокси.

Хочу избежать раскрытия своего IP адреса VPS для российских сервисов если вдруг один из пользователей направит весь свой трафик в мой прокси. Есть возможность направить все российские IP адреса в warp? По аналогии с 3x-ui?
Нет, на данный момент такой функционал отсутствует. Если что-то поменяется это будет здесь указано. В идеале вам и вашим пользователям требуется не использовать клиенты, которые игнорируют правила маршрутизации .srs (Не игнорируют правила из коробки sing-box и karing(про это было подробно выше)) Так же вы можете в вручном режиме добавить в разделе Menu -> Xray -> routes -> warp требуемые домены популярных российских сервисов.
Я хочу включить автообновление моего экземпляра vpnbot можно ли это сделать?
Да, требуется боту отправить сообщение с командой /autoupdate Если требуется отключить автообновление повторите отправку команды указанной выше.

Есть ли у vpnbot средства контроля за пользователями, которые получают клиентский конфиг на определенный срок посредством пожертвования денежных средств?
Да, вы можете перейти в управление определенным пользователем нажать кнопку set timer (1) и установить срок работы на определенный срок (например 30 day)(2) и нажав отправить (3) вы присвоите данному пользователю (подписке) ограниченный срок действия. Пользователи с ограниченным сроком действия всегда находятся в верху списка пользователей в порядке от самого маленького срока до самого большего, а затем пользователи без срока действия.

После получения повторного пожертвования вы можете возобновить работу конфига без необходимости создавать новый клиентский конфиг. Просто вам снова потребуется нажать кнопку set timer и снова указать срок действия клиентского конфига. В текущей реализации vpnbot вы не можете контролировать:
- Анализировать потребляемое количество трафика определенным пользователем.
- Ограничивать скорость подключения к сети для определенного пользователя.
- Не можете задать ограничение на количество одновременно подключенных IP адресов одним пользователем
Можно ли заменить вебформу которая открывается при переходе по прямой ссылке на домены моего экземпляра vpnbot?
Да, это можно сделать в разделе config нажав кнопку fake html. В ответ фам надо отправить .html файл, которым станет вашей "заглушкой" при переходе на ваш домен.
Хочу использовать клиент Streidand (iOS) по каким правилам будет происходить маршрутизация через данный клиент?
По умолчанию для клиента Streisand используются домены добавлены в раздел warp, block и PAC **Списки правил .srs будут проигнорированы клиентом Streisand так как он имеет другое ядро (XRAY) **Для клиентов Streisand можно добавлять сторонние шаблоны в разделе v2ray templates (например данный шаблон будет проксировать всё через прокси кроме российских айпи адресов и компании Apple) Вы можете написать свой кастомный шаблон для клиентов Streisand ознакомившись с документацией по данной ссылке или взяв за пример шаблон по ссылке в абзаце выше)
Не планирую использовать например протоколы Wireguard или Shadowsocks. Можно ли отключить выход наружу данных протоколов?
Начиная с версии 1.95 вы можете отключать выход во внешнюю сеть интернета данных портов:
- 8388: используется протоколом Shadowsocks
- 853: DNS over TLS вашего экземпляра AdGuard Home
- 51820 51821: AmneziaWG или Wireguard
- 4443: MTproto прокси для клиентов Telegram
Отключение портов (выхода в общий интернет) не отключает работу данных протоколов в вашем экземпляре vpnbot