Ques/Help/Req VPN для друзей. Разворачиваем свой VPN-сервер с оплатой через Telegram

XakeR

Member
Регистрация
13.05.2006
Сообщения
1 912
Реакции
0
Баллы
16
Местоположение
Ukraine
В этой статье я покажу не только как сделать свой собственный VPN-сервис на основе WireGuard, но и как его настроить, чтобы им смогли пользоваться все твои друзья и знакомые. И даже, если пожелаешь, закидывать тебе свою долю за хостинг, пользуясь простым ботом в Telegram.

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

Чтобы сделать свой VPN, требуется поморочиться с командной строкой. Гикам вроде нас с тобой такое занятие в радость: я, не имея никакого опыта, поднял такой сервис за один вечер. Друзья стали спрашивать, нельзя ли и им получить такой же быстрый, надежный и дешевый сервис. Однако копаться с настройками никто из них не хотел.

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

warning​


Предоставляя сторонним лицам прокси‑сервис через зарегистрированный на тебя хостинг, ты берешь на себя ответственность за все их действия в сети. Не забудь заранее обговорить, что можно делать с твоего IP-адреса, а что нельзя. А если планируешь предоставлять коммерческий сервис, подумай о составлении пользовательского соглашения, которое снимет с тебя ответственность.



Почему именно WireGuard?​


Я выбрал WireGuard из‑за его скорости в сравнении с OpenVPN и IPSec. Ты только посмотри на эти графики.

Пропускная способность (мегабит в секунду), тест iPerf3Время отклика ping

Похожую статистику показывают тесты Protectli и Entrostat. В Linux WireGuard работает на уровне ядра, что дает дополнительный прирост в скорости.

В WireGuard не такой большой выбор асимметричных шифров, как в OpenVPN и других протоколах. Но это одновременно и плюс: меньше поверхность атаки на протокол.



Админ-панель и бот в Telegram​


Итак, как для пользователя выглядит общение с моим ботом? Начнем знакомство с главного меню.

Главное меню

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

В главном меню пользователь может ознакомиться со статусом своей подписки, продлить ее и получить конфиг с подробной инструкцией для подключения, а в разделе «Продлить» — приобрести подписку на определенное время.

Выбор варианта подписки

Оплата выполняется онлайн, через сам Telegram. Соответственно, мы можем выбрать любую платежную систему, с которой сотрудничает Telegram.

info​


Я планировал использовать для оплаты Qiwi, так как там есть открытый API для создания счетов и не требуется становиться самозанятым или ИП. К сожалению, недавно в Qiwi приостановили выпуск необходимых токенов и не сообщают о сроках возобновления. Однако в исходниках ты найдешь вариант админской панели для Qiwi.

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

Подписка на месяц оплачена

В разделе «Как подключить» пользователь может получить свой конфиг для подключения к VPN-серверу и подробную инструкцию, как настроить WireGuard на своем телефоне и как им пользоваться.

Раздел «Как подключить»

И наконец, самый главный раздел — «Админ‑панель», к которому имеет доступ только админ бота.

Главная админ‑панели

Раздел «Вывести пользователей» позволяет получить список всех пользователей системы или только пользователей с оплаченной подпиской.

Раздел «Вывести пользователей»

В разделе «Редактировать пользователя по id», введя Telegram ID пользователя, мы можем добавить время или обнулить его (то есть забрать подписку).

Раздел «Редактировать пользователя»

Раздел «Статичные пользователи» может понадобиться для предоставления доступа к VPN пользователям, которые не зарегистрированы в Telegram. В этом разделе мы можем создавать статичных пользователей, удалять их и получать конфиги для подключения.

Раздел «Статичные пользователи»

Вот и всё меню. Но в боте еще есть уведомления пользователей об окончании подписки. Все тексты уведомлений можно править в файле JSON.

Уведомления

Настройка бота​


С тем, как выглядит бот, я тебя познакомил, теперь покажу настройки и скрипт, который разворачивает и настраивает WireGuard в пару кликов.

Начнем с конфигов бота. Первый конфиг называется config.json, в нем содержатся основные настройки бота.

{ «admin_tg_id»: 440887487, «one_month_cost»: 120, «trial_period»: 2700, «UTC_time»: 3, «tg_token»: «********:**************_**********», «tg_shop_token»: «56456767:TEST:343455″}

  • admin_tg_id — Telegram ID админа. Узнать свой ID можно у бота userinfobot.
  • one_month_cost — цена в рублях за месяц подписки. Минимальная сумма в рублях должна быть эквивалента одному доллару, но, как показала практика, стоит выставлять немного больше, чем актуальный курс доллара. Курс, который использует Telegram, можно узнать на официальном сайте.
  • trial_period — период пробной подписки. По умолчанию установлено 45 минут, то есть 2700 секунд.
  • UTC_time — часовой пояс в формате UTC. Бот будет учитывать его при выводе времени. По умолчанию установлено UTC+3, то есть московское время.
  • tg_token — токен бота, полученный от @BotFather.
  • tg_shop_token — токен магазина в Telegram. Нужен, если мы хотим принимать оплату. Если оставить это значение пустым, то бот просто не будет отправлять форму для оплаты и, соответственно, оплата онлайн будет недоступна.

Как получить tg_shop_token? Переходи в Telegram к боту @BotFather и пиши /mybots. Затем выбирай нужного бота и переходи в раздел Payments. Тут ты можешь ознакомиться со всеми доступными платежными системами и узнать, как их подключить. После подключения платежной системы возвращайся в BotFather. В разделе Payments должен появиться наш заветный ключ.

Как выглядит токен для онлайн‑оплаты

И последний конфигурационный файл хранит в себе текст сообщений, которые бот присылает пользователям. Сообщения могут быть оформлены с применением HTML-стилей Telegram, а как ими пользоваться, можешь посмотреть в документации.

{ «hello_message»: «<b>Почему стоит выбрать Obi VPN?</b>…«, «trial_message»: «Чтобы вы смогли оценить наш VPN…«, «how_to_connect_info»: «Ваш конфиг для подключения к VPN…«, «success_pay_message»: «Оплата прошла успешно…«, «ended_sub_message»: «Ваша подписка закончилась…«, «alert_to_renew_sub»: «До конца действия…«}

Думаю, вполне понятно, какое сообщение за что отвечает, поэтому не будем останавливаться на этом и перейдем к деплою.



Деплой​


Скажу сразу, что скрипт я разрабатывал на Ubuntu и тестировал только на Ubuntu 20.04 и 22.04, поэтому не могу дать гарантии, что он заработает на какой‑то другой разновидности Linux.

Присоединяйся к сообществу «Xakep.ru»!​


Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

-60%

1 year​


9990 рублей 4000 р.


[TD]

1 month_r​


920 р.
[/TD]

Я уже участник «Xakep.ru»
 
198 175Темы
635 146Сообщения
3 618 414Пользователи
drakkon12345Новый пользователь
Верх