Как я свой VPN-сервис делал
Под катом: моя история о том, как я решил не платить за VPN, а вместо этого развернуть свой. Потом подумал: а почему бы не сделать полноценный сервис? А потом… ну, дальше всё как обычно.
Поднимал сервера, нанимал дизайнера, запускал рекламу, пытался не разочароваться. Спойлер: Клиенты довольны, я пока нет.

Дисклеймер!
Предвкушаю много хейта относительно OpenVPN. Да, я знаю что это не самый лучший выбор. Просто исторически сложилось. В планах добавить поддержку других протоколов (в частности, XRay).
И тем не менее, на текущий момент OpenVPN показывает себя стабильно (жалоб по крайней мере не получал).
Как всё началось
Одним вечером youtube окончательно перестал работать. Подключаться к стороннему для меня оказалось не комильфо. Гораздо интереснее поднять свой.
Подключать каждое устройство по отдельности я желанием не горел. Youtube использовался чаще всего дома. А дома стоит микротик, с поддержкой OpenVPN не только в качестве сервера, но и в качестве клиента. Вот выбор на него и пал.
Как всё продолжилось
Шло время. Росло количество друзей и близких, которым я дал доступ. Постепенно подкрадывалась идея сделать полноценный публичный VPN-сервис.
Начал анализировать текущий рынок. Картинка складывалась не радостно:
-
Уже существует большое количество VPN-сервисов. Как именитых, так и ноунеймов.
-
Большинство пользователей, у которых есть потребность в VPN уже нашли «свой» VPN.
-
Те, кто еще не нашел «свой» VPN, скорее всего просто не испытывают в нем высокой потребности.
Стало ясно, что нужно чем то отличаться
pay-as-you-go
Бесплатные VPN недостаточно стабильны, а платить 500 рублей в месяц, если вы пользуетесь всего пару раз в неделю вы неготовы? Есть идея!
Да, я решил сделать акцент на пользователях, которым VPN нужен не так часто. Пользователи не будут платить платить абонентскую плату каждый месяц. Они будут покупать время, которое будет расходоваться только при использовании VPN. И это время никогда не сгорит.
Пример
Пользователь купил 30 часов за 100 рублей. Если он будет пользоваться в среднем 20 минут в день, ему этих 100 рублей хватит на 3 месяца.
А может купить 100 часов, и при активном пользовании потратить их за 1 месяц. Но даже в этом случае у него будет выгода: за покупку большого количества часов будет скидка
Что по названию?
С названием особо не мудрил. Хотелось что-то, отражающее мою ценовую политику. Недолго думая пришел к «VPN-Time».
Сразу же пришла и идея сделать брендинг с отсылками на «Adventure Time». Благо в моем окружении был дизайнер, который быстро подхватил идею, сделал логотип и оформление для telegram-бота (в каждом меню своя картинка, одну из них я использовал в качестве обложки для этой статьи).
Инфраструктура:
-
Сервер для telegam-бота, базы данных и dns
-
самописный биллинг на том же сервере
-
Сервер для VPN в Нидерландах
-
Сервер для VPN в Люксембурге
-
Система мониторинга представлена тремя телеграмм-ботами (по одному на каждый сервис), которые мне регулярно шлют телеметрию, нагрузку и информацию об основных запущенных службах.
На первое время хватит. При пополнении пользовательской базы планирую добавить новые локации.
А зачем DNS?
Ну во первых, на случай если придется перенести сервера на другой ip или хостинг. В конфигах, которые отправляются пользователям указан не IP, а имя сервера. По этому при смене IP пользователям не придется генерировать новые конфиги.
Во вторых, я хоть и не планирую собирать пользовательскую базу в несколько тысяч, балансировка какая-никакая нужна. Реализовал у себя примитивную схему:
-
есть локация: Нидерланды. Для неё есть несколько поддоменов: neth1, neth2, neth3…
-
при генерации конфига, пользователю выдается поддомен с наименьшим колличеством пользователей.
-
сейчас эти поддомены ведут на 1 сервер
-
когда нагрузка на сервер будет ощутима, создается новый сервер и половина поддоменов перекидывается на него
-
позже предполагается добавление дополнительных поддоменов
Какую информацию о пользователях храню
-
telegram-id, список ключей пользователя, история баланса — необходимый минимум для функционирования биллинга
-
email — на него шлются чеки о покупках. Увы, это обязательное требование юкассы
-
IP-адреса, с которых подключались пользователи. — они хранятся лишь в рамках логов OpenVPN. Эти логи регулярно вычищаются.
Что по деньгам
Я долго анализировал существующие VPN-сервисы, проводил опросы, сравнивал тарифы. И в итоге выбрал цены почти с потолка.
Но! Я взял с небольшим запасом, чтобы не приходилось повышать.
-
10 часов — 50₽
-
30 часов — 100₽
-
100 часов — 200₽
В будущем, когда наберётся приемлемая база пользователей, очень хочу сделать 1₽ = 1 час. Выглядит дешево и сердито красиво
По расчётам, мои сервера выдерживают до 500 человеко-часов в день (в теории). Если будет хотя бы 100 часов в день — я выхожу в ноль. 300 часов в день — уже небольшая прибыль.
Запуск
Первых несколько клиентов я нашел через сарафанное радио. Позже запустил рекламу в нескольких небольших каналах (суммарная аудитория около 35 000 человек). Переходов было много. Но 80% людей просто зашли в бота «потыкать кнопочки». Не то, чтобы не пробовали подключиться, даже не сгенерировали ключи. Получилось, что сарафанное радио сработало лучше.
Что я потратил
-
13 000 рублей — разработка дизайна и логотипа
-
15 000 рублей — реклама
-
2 500 — ежемесячная плата за сервера
Что я получил
-
8 активных пользователей (которые уже вносили платежи) (только двое из них с рекламы)
-
16 пользователей, у которых еще действует пробное врем
-
52 пользователя, которые заходили, но так и не стали пользоваться
-
1 350 рублей выручки
-
и немного надежды. что все еще впереди
Пара забавных случаев
1. Занятный клиент.
Был один клиент. В первый же день он израсходовал бесплатные 5 часов. Не сразу, по частям. Сразу же купил 10 часов и больше не заходил. Прошло три недели, эти 10 часов все еще лежат у него на балансе. Надеюсь, у него все хорошо.
2. Ложная тревога.
Как то раз я тестировал обновления, и внезапно обнаружил, что не могу подключиться с о своего тестового аккаунта. На сервера работают в штатном режиме. Пингуются. В systemctl все чисто. Отправил уведомление всем пользователям, что ведутся технические работы, могут быть проблемы с доступом. Стал копать глубже.
Оказалось, что никаких сбоев не было. Всего лишь навсего на тестовом аккаунте закончился баланс. Это мотивировало меня как можно быстрее внедрить автоматические уведомления об истекающем балансе.
Что в планах на будущее
-
Добавить поддержку XRay (хотя он не является VPN в классическом понимании)
-
Пересмотреть рекламную политику
-
В рамках этого сервиса есть идея сделать нейросеть, выполняющую роль специалистов первой-второй линии техподдержки. Не то, чтобы в этом есть такая потребность. Просто у меня есть идея, которую я хотел бы протестировать. И такой небольшой сервис будет отличным полигоном.
А можно попробовать?
Да, и это даже будет бесплатно (ссылка).
А еще можете использовать промокод HABR.
Автор: DVoropaev