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

Raminin

Заблокирован
Подтвержденный
Регистрация
29.11.17
Сообщения
12
Реакции
296
Продаж
1
Обратите внимание, что пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Если пользователь уже обманул вас каким-либо образом, обратитесь в наш арбитраж, дабы мы могли по возможности урегулировать возникшую у вас проблему.
В этой статье я покажу не только как сделать свой собственный VPN-сервис на основе WireGuard, но и как его настроить, чтобы им смогли пользоваться все твои друзья и знакомые. И даже, если пожелаешь, закидывать тебе свою долю за хостинг, пользуясь простым ботом в Telegram.

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

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

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

WARNING

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



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

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

1685364297894.png

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

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



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

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

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

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

1685364344794.png

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

INFO

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

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

1685364369946.png

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

1685364388479.png

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

1685364405156.png

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

1685364431943.png

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


1685364455133.png

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

1685364474251.png


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

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

}

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