- Регистрация
- 6 Ноя 2025
- Сообщения
- 138
- Реакции
- 1
- Баллы
- 18
Разворачиваем свой VPN-сервер с оплатой через Telegram.
Ситуация, думаю, знакомая: бесплатные VPN тормозят, сливают данные или просто отваливаются в самый неподходящий момент. Платные сервисы стоят денег, и непонятно, кому ты платишь и куда уходят логи. Выход — сделать свой VPN. Кажется сложно? На самом деле нет.
Я сам долго откладывал, думал, что там надо быть гуру сетевых технологий. А потом сел и за вечер поднял рабочий сервис на WireGuard. Друзья попросили доступ — пришлось делать бота для раздачи конфигов. Потом добавил оплату, чтобы хостинг окупался. В итоге получилась полноценная система, которая работает без моего участия.
В этой статье расскажу, как повторить это самому. Без лишней воды, только конкретика.
---
Почему WireGuard, а не OpenVPN
Если ты хоть раз настраивал OpenVPN, то знаешь, сколько там геморроя: куча сертификатов, танцы с бубном, низкая скорость. WireGuard работает иначе — он вшит в ядро Linux (начиная с версии 5.6), проще в настройке и быстрее.
Плюсы WireGuard:
· Минимум кода — около 4000 строк против сотен тысяч у OpenVPN.
· Высокая скорость — близкая к нативной.
· Простая настройка — ключи генерируются за секунду.
· Современная криптография.
Минус только один — он использует UDP, и если твой провайдер его режет, могут быть проблемы. Но для большинства случаев это лучшее решение.
---
Что мы будем делать
Я покажу, как поднять сервер с WireGuard, добавить туда Telegram-бота для управления подписками и настроить автоматическую оплату. В итоге у тебя будет:
· Рабочий VPN-сервер на WireGuard.
· Бот в Telegram, где пользователи могут купить подписку, получить конфиг и инструкцию.
· Админ-панель в том же боте для управления пользователями.
· Автоматические уведомления об окончании подписки.
Всё это работает на Ubuntu 20.04 или 22.04.
---
Как выглядит бот со стороны пользователя
Я не буду тут вставлять скриншоты, но опишу, как оно работает.
Человек заходит в бота, видит приветствие. Ему сразу дается тестовый период (например, 45 минут). В главном меню кнопки:
· Статус подписки — сколько осталось, активна ли.
· Продлить — выбор срока и оплата.
· Как подключить — конфиг-файл и инструкция для разных устройств.
Если пользователь выбирает продление, бот создает счет. Оплата проходит прямо в Telegram — подключены любые платежные системы, которые поддерживает платформа. После оплаты подписка продлевается автоматически.
Для админа есть отдельное меню (доступное только по ID). Там можно:
· Посмотреть список всех пользователей.
· Отфильтровать активных.
· Продлить или отключить подписку конкретному человеку.
· Создавать статических пользователей (без Telegram) и генерировать для них конфиги.
Бот сам напоминает о скором окончании подписки за день, за час и за 10 минут. Тексты всех сообщений настраиваются в конфиге.
---
Что нужно для запуска
Нам понадобится:
· VPS с Ubuntu 20.04 или 22.04 (минимальные требования — 1 ядро, 512 МБ RAM, хватит за глаза).
· Домен (необязательно, но удобно).
· Telegram-бот, зарегистрированный у BotFather.
· Платежная система, подключенная к Telegram (например, через ЮKassa или другую).
Весь код, который я использую, лежит в открытом доступе. Ссылки будут по ходу статьи.
---
Установка: одна команда
Я заморочился и написал скрипт, который ставит всё одной командой. Он работает на Ubuntu 20.04 и 22.04 (на других дистрибутивах не тестировал, но может и взлететь).
Запускаем:
Скрипт скачивается, получает права на выполнение и запускается.
Дальше будет интерактивный диалог. Скрипт сам определит, что может, и спросит то, что нужно ввести вручную.
Вот пример того, что он спросит:
Разберем каждый пункт:
· Публичный IPv4 — это IP твоего сервера. Можно узнать командой ip a или в панели хостинга.
· Сетевой интерфейс — обычно eth0, ens3 или что-то подобное. Тоже видно в ip a.
· Порт WireGuard — скрипт предлагает случайный из динамического диапазона, но можно вбить свой.
· DNS-серверы — для клиентских конфигов. По умолчанию стоят Cloudflare (1.1.1.1 и 1.0.0.1).
· Установить Telegram-бота — если хочешь админку и управление, ставь 1.
· API-ключ бота — берешь у BotFather.
· Ключ платежной системы — если хочешь принимать оплату.
· Telegram ID администратора — твой ID, чтобы бот понимал, кто админ. Узнать можно у бота @userinfobot.
---
Настройка бота: конфиги
После установки бот уже работает, но его нужно настроить под себя. Основные настройки лежат в двух файлах.
config.json
Здесь базовые параметры:
· admin_tg_id — твой Telegram ID.
· one_month_cost — цена подписки в рублях. Лучше ставить чуть выше курса доллара, потому что Telegram конвертирует по своему курсу.
· trial_period — длительность тестового периода в секундах (2700 = 45 минут).
· UTC_time — часовой пояс (3 = Москва).
· tg_token — токен бота от BotFather.
· tg_shop_token — токен платежной системы. Если оставить пустым, оплата будет отключена.
messages.json
Здесь все тексты, которые бот отправляет пользователям. Можно менять как хочешь, поддерживается HTML-форматирование (жирный, курсив, ссылки).
Пример:
Названия говорят сами за себя. В how_to_connect_info можно вставить инструкцию для разных устройств: Windows, Android, iOS.
---
Как получить платежный токен
Чтобы принимать оплату прямо в Telegram, нужен токен магазина. Делается это так:
1. Идешь к BotFather.
2. Вводишь /mybots, выбираешь своего бота.
3. Жмешь "Payments".
4. Там список доступных платежных систем. Выбираешь подходящую, читаешь инструкцию.
5. Подключаешь систему (обычно надо зарегистрироваться, подтвердить юрлицо или ИП).
6. После подключения в BotFather появится токен — его и вставляешь в tg_shop_token.
Если оставить поле пустым, бот просто не будет предлагать оплату, можно раздавать доступ бесплатно или вручную.
---
Статические пользователи
В боте есть раздел "Статические пользователи". Это для тех, у кого нет Telegram, или для разовых доступов. Можно создавать таких пользователей вручную, система сгенерирует для них конфиг. Удобно, если надо дать VPN другу, который не хочет ставить Telegram.
---
Выбор хостинга
Самый важный момент — где размещать сервер. WireGuard сам по себе быстрый, но многое зависит от канала и географии.
Советую не брать сервер сразу на год. Лучше попробовать разные регионы: Европу, США, Азию. Погоняй тесты скорости, посмотри, где у тебя пинг меньше. Провайдеры типа DigitalOcean, Vultr, Hetzner дают почасовую оплату — удобно для экспериментов.
Минимальные требования: 1 ядро, 512 МБ RAM, 10 ГБ диска. Этого хватит на сотню пользователей, если не гонять торренты 24/7.
---
Безопасность и что важно помнить
Несколько советов, чтобы сервер не упал и не взломали:
· Обновляй систему — регулярно делай apt update && apt upgrade.
· Закрой лишние порты — кроме 22 (SSH) и порта WireGuard, всё должно быть закрыто.
· Не запускай бота от root — в скрипте это учтено, но на всякий случай проверь.
· Делай бэкапы — конфиги лежат в /etc/wireguard и в папке бота, сохраняй их.
· Следи за нагрузкой — если пользователей много, может понадобиться больше ресурсов.
Что в итоге
За один вечер можно поднять полноценный VPN-сервис, который работает без участия человека. Пользователи сами регистрируются, платят, получают конфиги. Админ только смотрит статистику и изредка пополняет баланс на хостинге.
Я таким пользуюсь сам и раздаю друзьям. Хостинг окупается, нервы целы. Если у тебя есть базовые навыки работы с Linux — справишься без проблем.
Все исходники, скрипты и инструкции я оставил в статье.
Ситуация, думаю, знакомая: бесплатные VPN тормозят, сливают данные или просто отваливаются в самый неподходящий момент. Платные сервисы стоят денег, и непонятно, кому ты платишь и куда уходят логи. Выход — сделать свой VPN. Кажется сложно? На самом деле нет.
Я сам долго откладывал, думал, что там надо быть гуру сетевых технологий. А потом сел и за вечер поднял рабочий сервис на WireGuard. Друзья попросили доступ — пришлось делать бота для раздачи конфигов. Потом добавил оплату, чтобы хостинг окупался. В итоге получилась полноценная система, которая работает без моего участия.
В этой статье расскажу, как повторить это самому. Без лишней воды, только конкретика.
---
Почему WireGuard, а не OpenVPN
Если ты хоть раз настраивал OpenVPN, то знаешь, сколько там геморроя: куча сертификатов, танцы с бубном, низкая скорость. WireGuard работает иначе — он вшит в ядро Linux (начиная с версии 5.6), проще в настройке и быстрее.
Плюсы WireGuard:
· Минимум кода — около 4000 строк против сотен тысяч у OpenVPN.
· Высокая скорость — близкая к нативной.
· Простая настройка — ключи генерируются за секунду.
· Современная криптография.
Минус только один — он использует UDP, и если твой провайдер его режет, могут быть проблемы. Но для большинства случаев это лучшее решение.
---
Что мы будем делать
Я покажу, как поднять сервер с WireGuard, добавить туда Telegram-бота для управления подписками и настроить автоматическую оплату. В итоге у тебя будет:
· Рабочий VPN-сервер на WireGuard.
· Бот в Telegram, где пользователи могут купить подписку, получить конфиг и инструкцию.
· Админ-панель в том же боте для управления пользователями.
· Автоматические уведомления об окончании подписки.
Всё это работает на Ubuntu 20.04 или 22.04.
---
Как выглядит бот со стороны пользователя
Я не буду тут вставлять скриншоты, но опишу, как оно работает.
Человек заходит в бота, видит приветствие. Ему сразу дается тестовый период (например, 45 минут). В главном меню кнопки:
· Статус подписки — сколько осталось, активна ли.
· Продлить — выбор срока и оплата.
· Как подключить — конфиг-файл и инструкция для разных устройств.
Если пользователь выбирает продление, бот создает счет. Оплата проходит прямо в Telegram — подключены любые платежные системы, которые поддерживает платформа. После оплаты подписка продлевается автоматически.
Для админа есть отдельное меню (доступное только по ID). Там можно:
· Посмотреть список всех пользователей.
· Отфильтровать активных.
· Продлить или отключить подписку конкретному человеку.
· Создавать статических пользователей (без Telegram) и генерировать для них конфиги.
Бот сам напоминает о скором окончании подписки за день, за час и за 10 минут. Тексты всех сообщений настраиваются в конфиге.
---
Что нужно для запуска
Нам понадобится:
· VPS с Ubuntu 20.04 или 22.04 (минимальные требования — 1 ядро, 512 МБ RAM, хватит за глаза).
· Домен (необязательно, но удобно).
· Telegram-бот, зарегистрированный у BotFather.
· Платежная система, подключенная к Telegram (например, через ЮKassa или другую).
Весь код, который я использую, лежит в открытом доступе. Ссылки будут по ходу статьи.
---
Установка: одна команда
Я заморочился и написал скрипт, который ставит всё одной командой. Он работает на Ubuntu 20.04 и 22.04 (на других дистрибутивах не тестировал, но может и взлететь).
Запускаем:
Bash:
sudo wgethttps://raw.githubusercontent.com/Obi0Wan0Kenobi/ObiVpn/master/Wireguard-installer-with-Adminpanel.sh
&& chmod 774 Wireguard-installer-with-Adminpanel.sh
&& ./Wireguard-installer-with-Adminpanel.sh Скрипт скачивается, получает права на выполнение и запускается.
Дальше будет интерактивный диалог. Скрипт сам определит, что может, и спросит то, что нужно ввести вручную.
Вот пример того, что он спросит:
Код:
Dobro pozhalovat'v ustanovshchik WireGuard!
1.Vvedite publichnyj IPv4 adress: 185.200.190.143 2.Vvedite setevoj interfejs:ens3 3.Vyberite port kotoryj budet ispol'zovat'WireGuard [1-65535]: 49584 4.Vyberite pervyj DNS server kotoryj budut ispol'zovat'klienty: 1.1.1.1 5.Vyberite vtoroj DNS server kotoryj budut ispol'zovat'klienty (opcional'no): 1.0.0.1 6.Hotite li ustanovit'srazu Telegram bota(1 - Da, 0 - Net): 1 7.Vvedite API-klyuch ot vashego Telegram bota:************* 8.Vvedite klyuch ot vashej platezhnoj sistemy:************* 9.Vvedite Telegram-id administratora:***** Разберем каждый пункт:
· Публичный IPv4 — это IP твоего сервера. Можно узнать командой ip a или в панели хостинга.
· Сетевой интерфейс — обычно eth0, ens3 или что-то подобное. Тоже видно в ip a.
· Порт WireGuard — скрипт предлагает случайный из динамического диапазона, но можно вбить свой.
· DNS-серверы — для клиентских конфигов. По умолчанию стоят Cloudflare (1.1.1.1 и 1.0.0.1).
· Установить Telegram-бота — если хочешь админку и управление, ставь 1.
· API-ключ бота — берешь у BotFather.
· Ключ платежной системы — если хочешь принимать оплату.
· Telegram ID администратора — твой ID, чтобы бот понимал, кто админ. Узнать можно у бота @userinfobot.
---
Настройка бота: конфиги
После установки бот уже работает, но его нужно настроить под себя. Основные настройки лежат в двух файлах.
config.json
Здесь базовые параметры:
JSON:
{ "admin_tg_id": 123456789, "one_month_cost": 100, "trial_period": 2700, "UTC_time": 3, "tg_token": "ваш_токен_бота", "tg_shop_token": "токен_платежной_системы" } · admin_tg_id — твой Telegram ID.
· one_month_cost — цена подписки в рублях. Лучше ставить чуть выше курса доллара, потому что Telegram конвертирует по своему курсу.
· trial_period — длительность тестового периода в секундах (2700 = 45 минут).
· UTC_time — часовой пояс (3 = Москва).
· tg_token — токен бота от BotFather.
· tg_shop_token — токен платежной системы. Если оставить пустым, оплата будет отключена.
messages.json
Здесь все тексты, которые бот отправляет пользователям. Можно менять как хочешь, поддерживается HTML-форматирование (жирный, курсив, ссылки).
Пример:
JSON:
{ "hello_message": "<b>Почему стоит выбрать Obi VPN?</b>...", "trial_message": "Чтобы вы смогли оценить наш VPN...", "how_to_connect_info": "Ваш конфиг для подключения к VPN...", "success_pay_message": "Оплата прошла успешно...", "ended_sub_message": "Ваша подписка закончилась...", "alert_to_renew_sub": "До конца действия..." } Названия говорят сами за себя. В how_to_connect_info можно вставить инструкцию для разных устройств: Windows, Android, iOS.
---
Как получить платежный токен
Чтобы принимать оплату прямо в Telegram, нужен токен магазина. Делается это так:
1. Идешь к BotFather.
2. Вводишь /mybots, выбираешь своего бота.
3. Жмешь "Payments".
4. Там список доступных платежных систем. Выбираешь подходящую, читаешь инструкцию.
5. Подключаешь систему (обычно надо зарегистрироваться, подтвердить юрлицо или ИП).
6. После подключения в BotFather появится токен — его и вставляешь в tg_shop_token.
Если оставить поле пустым, бот просто не будет предлагать оплату, можно раздавать доступ бесплатно или вручную.
---
Статические пользователи
В боте есть раздел "Статические пользователи". Это для тех, у кого нет Telegram, или для разовых доступов. Можно создавать таких пользователей вручную, система сгенерирует для них конфиг. Удобно, если надо дать VPN другу, который не хочет ставить Telegram.
---
Выбор хостинга
Самый важный момент — где размещать сервер. WireGuard сам по себе быстрый, но многое зависит от канала и географии.
Советую не брать сервер сразу на год. Лучше попробовать разные регионы: Европу, США, Азию. Погоняй тесты скорости, посмотри, где у тебя пинг меньше. Провайдеры типа DigitalOcean, Vultr, Hetzner дают почасовую оплату — удобно для экспериментов.
Минимальные требования: 1 ядро, 512 МБ RAM, 10 ГБ диска. Этого хватит на сотню пользователей, если не гонять торренты 24/7.
---
Безопасность и что важно помнить
Несколько советов, чтобы сервер не упал и не взломали:
· Обновляй систему — регулярно делай apt update && apt upgrade.
· Закрой лишние порты — кроме 22 (SSH) и порта WireGuard, всё должно быть закрыто.
· Не запускай бота от root — в скрипте это учтено, но на всякий случай проверь.
· Делай бэкапы — конфиги лежат в /etc/wireguard и в папке бота, сохраняй их.
· Следи за нагрузкой — если пользователей много, может понадобиться больше ресурсов.
Что в итоге
За один вечер можно поднять полноценный VPN-сервис, который работает без участия человека. Пользователи сами регистрируются, платят, получают конфиги. Админ только смотрит статистику и изредка пополняет баланс на хостинге.
Я таким пользуюсь сам и раздаю друзьям. Хостинг окупается, нервы целы. Если у тебя есть базовые навыки работы с Linux — справишься без проблем.
Все исходники, скрипты и инструкции я оставил в статье.

