LIMB
Вход Регистрация

тема

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

XuMuK · · 0 ответов · 1.9к просмотров

[CENTER]В этой статье я покажу не только как сделать свой собственный VPN-сервис на основе WireGuard, но и как его настроить, чтобы им смогли пользоваться все твои друзья и знакомые. И даже, если пожелаешь, закидывать тебе свою долю за хостинг, пользуясь простым ботом в Telegram. Возможность шифровать трафик и проксировать его через другие страны сейчас настолько необходима, что я не стану тратить твое время и в очередной раз перечислять все случаи, когда без VPN не обойтись. При этом большинство пользователей выбирают готовые сервисы: либо бесплатные, но ненадежные и со встроенной рекламой и слежкой, либо платные, но дорогие в сравнении с хостингом. Чтобы сделать свой VPN, требуется поморочиться с командной строкой. Гикам вроде нас с тобой такое занятие в радость: я, не имея никакого опыта, поднял такой сервис за один вечер. Друзья стали спрашивать, нельзя ли и им получить такой же быстрый, надежный и дешевый сервис. Однако копаться с настройками никто из них не хотел. Я долгое время генерил и раздавал готовые конфиги, но потом это стало надоедать. Тогда я задумал создать собственное решение с возможностью быстрого деплоя, администрированием через Telegram и временными квотами для пользователей. В этой статье я расскажу тебе о нем подробнее и поделюсь всеми нужными для деплоя исходниками. [/CENTER] [HEADING=3][CENTER]WARNING[/CENTER][/HEADING] [CENTER]Предоставляя сторонним лицам прокси‑сервис через зарегистрированный на тебя хостинг, ты берешь на себя ответственность за все их действия в сети. Не забудь заранее обговорить, что можно делать с твоего IP-адреса, а что нельзя. А если планируешь предоставлять коммерческий сервис, подумай о составлении пользовательского соглашения, которое снимет с тебя ответственность. [/CENTER] [HEADING=2][CENTER]ПОЧЕМУ ИМЕННО WIREGUARD?[/CENTER][/HEADING] [CENTER]Я выбрал WireGuard из‑за его [URL='https://www.wireguard.com/performance/']скорости[/URL] в сравнении с OpenVPN и IPSec. Ты только посмотри на эти графики. [IMG alt="perfomance-test-throughput.png"]https://static.xakep.ru/images/2f71a7fef2668075dab93a6a7c16fc42/31222/perfomance-test-throughput.png[/IMG] [IMG alt="perfomance-test-pingt.png"]https://static.xakep.ru/images/2f71a7fef2668075dab93a6a7c16fc42/31221/perfomance-test-pingt.png[/IMG] Похожую статистику показывают тесты Protectli и Entrostat. В Linux WireGuard работает на уровне ядра, что дает дополнительный прирост в скорости. В WireGuard не такой большой выбор асимметричных шифров, как в OpenVPN и других протоколах. Но это одновременно и плюс: меньше поверхность атаки на протокол. [/CENTER] [HEADING=2][CENTER]АДМИН-ПАНЕЛЬ И БОТ В TELEGRAM[/CENTER][/HEADING] [CENTER]Итак, как для пользователя выглядит общение с моим ботом? Начнем знакомство с главного меню. [IMG alt="first-start.png"]https://static.xakep.ru/images/2f71a7fef2668075dab93a6a7c16fc42/31217/first-start.png[/IMG] При первом входе пользователь получает приветственное сообщение от бота и тестовую подписку. В конфигах бота ты сможешь сам задать все тексты и параметры вроде времени, на которое предоставляется тестовая подписка. В главном меню пользователь может ознакомиться со статусом своей подписки, продлить ее и получить конфиг с подробной инструкцией для подключения, а в разделе «Продлить» — приобрести подписку на определенное время. [IMG alt="bot-pay-1.png"]https://static.xakep.ru/images/2f71a7fef2668075dab93a6a7c16fc42/31219/bot-pay-1.png[/IMG] Оплата выполняется онлайн, через сам Telegram. Соответственно, мы можем выбрать любую платежную систему, с которой сотрудничает Telegram. [/CENTER] [HEADING=3][CENTER]INFO[/CENTER][/HEADING] [CENTER]Я планировал использовать для оплаты Qiwi, так как там есть открытый API для создания счетов и не требуется становиться самозанятым или ИП. К сожалению, недавно в Qiwi приостановили выпуск необходимых токенов и не сообщают о сроках возобновления. Однако в исходниках ты найдешь вариант админской панели для Qiwi. После того как пользователь выбрал и оплатил подписку, ему приходит сообщение об удачной оплате и сразу же обновляется информация о его подписке. [IMG alt="payment-okey.png"]https://static.xakep.ru/images/2f71a7fef2668075dab93a6a7c16fc42/31218/payment-okey.png[/IMG] В разделе «Как подключить» пользователь может получить свой конфиг для подключения к VPN-серверу и подробную инструкцию, как настроить WireGuard на своем телефоне и как им пользоваться. [IMG alt="how-to-connect.png"]https://static.xakep.ru/images/2f71a7fef2668075dab93a6a7c16fc42/31216/how-to-connect.png[/IMG] И наконец, самый главный раздел — «Админ‑панель», к которому имеет доступ только админ бота. [IMG alt="admin-panel-main.png"]https://static.xakep.ru/images/2f71a7fef2668075dab93a6a7c16fc42/31215/admin-panel-main.png[/IMG] Раздел «Вывести пользователей» позволяет получить список всех пользователей системы или только пользователей с оплаченной подпиской. [IMG alt="show-users.png"]https://static.xakep.ru/images/2f71a7fef2668075dab93a6a7c16fc42/31214/show-users.png[/IMG] В разделе «Редактировать пользователя по id», введя Telegram ID пользователя, мы можем добавить время или обнулить его (то есть забрать подписку). [IMG alt="edit-user-by-id.png"]https://static.xakep.ru/images/2f71a7fef2668075dab93a6a7c16fc42/31213/edit-user-by-id.png[/IMG] Раздел «Статичные пользователи» может понадобиться для предоставления доступа к VPN пользователям, которые не зарегистрированы в Telegram. В этом разделе мы можем создавать статичных пользователей, удалять их и получать конфиги для подключения. [IMG alt="static-users.png"]https://static.xakep.ru/images/2f71a7fef2668075dab93a6a7c16fc42/31212/static-users.png[/IMG] [/CENTER] [HEADING=2][CENTER]НАСТРОЙКА БОТА[/CENTER][/HEADING] [CENTER]С тем, как выглядит бот, я тебя познакомил, теперь покажу настройки и скрипт, который разворачивает и настраивает WireGuard в пару кликов. Начнем с конфигов бота. Первый конфиг называется config.json, в нем содержатся основные настройки бота. { "admin_tg_id": 440887487, "one_month_cost": 120, "trial_period": 2700, "UTC_time": 3, "tg_token": "********:[B][B][B][B][B]****_[/B][/B][/B][/B][/B]", "tg_shop_token": "56456767:TEST:343455" } [/CENTER] [LIST] [*][CENTER]admin_tg_id — Telegram ID админа. Узнать свой ID можно у бота [URL='https://t.me/userinfobot']userinfobot[/URL].[/CENTER] [*][CENTER]one_month_cost — цена в рублях за месяц подписки. Минимальная сумма в рублях должна быть эквивалента одному доллару, но, как показала практика, стоит выставлять немного больше, чем актуальный курс доллара. Курс, который использует Telegram, можно узнать на [URL='https://core.telegram.org/bots/payments#supported-currencies']официальном сайте[/URL].[/CENTER] [*][CENTER]trial_period — период пробной подписки. По умолчанию установлено 45 минут, то есть 2700 секунд.[/CENTER] [*][CENTER]UTC_time — часовой пояс в формате UTC. Бот будет учитывать его при выводе времени. По умолчанию установлено UTC+3, то есть московское время.[/CENTER] [*][CENTER]tg_token — токен бота, полученный от [URL='https://t.me/BotFather']@BotFather[/URL].[/CENTER] [*][CENTER]tg_shop_token — токен магазина в Telegram. Нужен, если мы хотим принимать оплату. Если оставить это значение пустым, то бот просто не будет отправлять форму для оплаты и, соответственно, оплата онлайн будет недоступна.[/CENTER] [/LIST] [CENTER]Как получить tg_shop_token? Переходи в Telegram к боту [URL='https://t.me/BotFather']@BotFather[/URL] и пиши /mybots. Затем выбирай нужного бота и переходи в раздел Payments. Тут ты можешь ознакомиться со всеми доступными платежными системами и узнать, как их подключить. После подключения платежной системы возвращайся в BotFather. В разделе Payments должен появиться наш заветный ключ. [IMG alt="example-pay-token.png"]https://static.xakep.ru/images/2f71a7fef2668075dab93a6a7c16fc42/31209/example-pay-token.png[/IMG] И последний конфигурационный файл хранит в себе текст сообщений, которые бот присылает пользователям. Сообщения могут быть оформлены с применением HTML-стилей Telegram, а как ими пользоваться, можешь посмотреть в [URL='https://core.telegram.org/bots/api#html-style']документации[/URL]. { "hello_message": "Почему стоит выбрать Obi VPN?...", "trial_message": "Чтобы вы смогли оценить наш VPN...", "how_to_connect_info": "Ваш конфиг для подключения к VPN...", "success_pay_message": "Оплата прошла успешно...", "ended_sub_message": "Ваша подписка закончилась...", "alert_to_renew_sub": "До конца действия..." } Думаю, вполне понятно, какое сообщение за что отвечает [/CENTER]
👍222 🔥26 😁41 😮41 👏17 🤔33 👎22

Гостевой просмотр. Чтобы отвечать и ставить реакции, войдите или зарегистрируйтесь.