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

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

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

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

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

WARNING

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

ПОЧЕМУ ИМЕННО WIREGUARD?

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

VPN для друзей. Разворачиваем свой VPN-сервер с оплатой через Telegram, image #1
VPN для друзей. Разворачиваем свой VPN-сервер с оплатой через Telegram, image #2

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

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

АДМИН-ПАНЕЛЬ И БОТ В TELEGRAM

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

VPN для друзей. Разворачиваем свой VPN-сервер с оплатой через Telegram, image #3

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

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

VPN для друзей. Разворачиваем свой VPN-сервер с оплатой через Telegram, image #4

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

INFO

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

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

VPN для друзей. Разворачиваем свой VPN-сервер с оплатой через Telegram, image #5

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

VPN для друзей. Разворачиваем свой VPN-сервер с оплатой через Telegram, image #6

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

VPN для друзей. Разворачиваем свой VPN-сервер с оплатой через Telegram, image #7

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

VPN для друзей. Разворачиваем свой VPN-сервер с оплатой через Telegram, image #8

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

VPN для друзей. Разворачиваем свой VPN-сервер с оплатой через Telegram, image #9

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

VPN для друзей. Разворачиваем свой VPN-сервер с оплатой через Telegram, image #10

НАСТРОЙКА БОТА

С тем, как выг­лядит бот, я тебя поз­накомил, теперь покажу нас­трой­ки и скрипт, который раз­ворачи­вает и нас­тра­ивает 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 дол­жен появить­ся наш завет­ный ключ.

VPN для друзей. Разворачиваем свой VPN-сервер с оплатой через Telegram, image #11

И пос­ледний кон­фигура­цион­ный файл хра­нит в себе текст сооб­щений, которые бот при­сыла­ет поль­зовате­лям. Сооб­щения могут быть офор­мле­ны с при­мене­нием 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": "До конца действия..."

}

Ду­маю, впол­не понят­но, какое сооб­щение за что отве­чает

881 views·5 shares