Я занимаюсь разработкой универсальной биллинговой системы с действиями по событиям - SHM. В качестве примера использования системы, решил написать этот Tutorial, по запуску собственного VPN сервера.

Данная статья позволит Вам настроить свой собственный сервер для оказания услуг VPN. Вы получите кабинет (Web интерфейс), в котором Ваши друзья и (или) клиенты, смогут сами себе заказывать VPN ключики, отслеживать дату их истечения и производить оплату (установив нулевую цену за услугу, вы можете предоставлять её совершенно бесплатно).

SHM состоит из Ядра системы (API + MySQL), и Web интерфейсов: административный и клиентский. SHM можно запустить на любом сервере, где есть Docker.

Услуги VPN предоставляются на базе WireGuard. Такой выбор был сделан в связи с тем, что для WireGuard существует множество клиентов, под любые ОС. Очень легко и удобно настроить VPN на смартфоне с помощью QR кода.

Для запуска собственного VPN сервера с биллингом нам необходимо:

  • Арендовать сервер (VPS) в нужном регионе, через который будет осуществляться выход в сеть Интернет (VPN)

  • Инсталлировать и настроить SHM для оказания услуг

Аренда сервера для предоставления VPN доступа

Выберите любую компанию, предоставляющую услуги по аренде серверов в нужном Вам регионе, и закажите себе сервер (VPS, VDS) с ОС: Ubuntu 22.04 (на этой ОС тестировалась система).

Инсталляция SHM

Рекомендую установить SHM на отдельный сервер (для тестов можно и локально). SHM лишь управляет вашими серверами. Сервера приходят и уходят, а SHM остается)

Инсталляция SHM довольно простая и она хорошо описана на сайте документации. Я не стал копировать сюда процесс инсталляции, чтобы не перегружать эту статью. Сконцентрируемся на следующем разделе: "Настройка SHM".

Настройка SHM

Надеюсь, Вы уже установили SHM, авторизовались в интерфейсе администратора, и даже сменили пароль администратора на какой-то более сложный.

Обязательно внесите все необходимые настройки в конфигурацию SHM (раздел "Настройки -> Конфигурация".

Подключение сервера к SHM

Теперь, нам нужно добавить (подключить) наш арендованный VPS/VDS к SHM. Для этого, проследуйте в раздел "Сервера -> Список", и нажмите кнопку "ADD" (Добавить).

Заполните следующие поля:

  • Имя сервера - введите любое имя, например: server1

  • Группа - выберите: VPN

  • Хост - адрес для SSH подключения к вашему серверу, например: root@1.2.3.4

  • Ключ - SSH ключ для подключения к Вашему серверу. Нажмите + и создайте новый ключ. Публичный ключ скопируйте и добавьте его на ваш VPS/VDS сервер в файл: /root/.ssh/authorized_keys

  • Использовать - выберите Шаблон

  • Шаблон - выберите шаблон: wg_manager

Нажмите кнопку "TEST", чтобы протестировать соединение с вашим сервером. Если всё прошло успешно, вы увидите надпись "SUCCESS". Если же увидите ошибку, то проверьте ещё раз поле "Хост" и "Ключ". Нажмите кнопку "SAVE". В списке серверов появится ваш сервер.

Инициализация Вашего VPS/VDS сервера

Найдите Ваш сервер в списке серверов, кликните по нему дважды, чтобы открыть окно редактирования сервера. Внизу окна есть поле settings, нажмите "шестеренку" справа от поля. Откроется редактор настроек сервера. Добавьте туда поле: host_name, и укажите имя или IP адрес вашего сервера. Это поле будет использоваться для ваших клиентов. Клиенты должны знать к какому серверу им подключаться (host для подключения к серверу VPN).

После внесения изменений в настройки сервера, его необходимо сохранить. Нажмите кнопку "SAVE".

Выберите Ваш сервер в списке, кликните по нему дважды, откроется окно редактирования сервера. Нажмите кнопку: "INIT". Так, начнется инициализация (настройка) вашего VPS/VDS сервера. Этот процесс займет несколько минут. Процесс интерактивный, вы сможете наблюдать за статусом. Дождитесь завершения настройки. Ваш сервер готов для оказания услуг.

Как настраивается Ваш сервер вы можете прочитать здесь

SHM это универсальная биллинговая система, т.е. он ничего не знает ни про VPN, ни про WireGuard. Для взаимодействия с вашими серверами используются Шаблоны (в нашем примере шаблон с именем wg_manager. Вы можете посмотреть и даже изменить содержимое шаблона через интерфейс администратора: "Настройки -> Шаблоны".

wg-manager - это отдельный проект, исходный код которого можно посмотреть здесь: https://github.com/danuk/wg-manager. Для Вашего удобства в SHM уже загружен этот скрипт: https://github.com/danuk/wg-manager/blob/master/shm_actions_script.sh, который и является шаблоном: wg_manager. Вы можете изменить его по вашему усмотрению.

Когда мы нажимаем кнопку: "INIT", на вашем сервере будет запущен этот скрипт (загруженный в качестве шаблона), в частности, будет выполнен код из секции INIT.

При создании услуг будет выполнена секция CREATE, при удалении - REMOVE и т.д.

Создание услуг в SHM

Для Вашего удобства в SHM уже создана услуга "VPN" и настроены события.

Перейдите в раздел SHM административного кабинета: "Услуги" -> "Список". Найдите услугу "VPN", кликните по ней дважды и отредактируйте её стоимость. Так же, убедитесь, что галочка "Доступно к заказу" установлена.

Тестирование

  1. Создайте тестового пользователя. Для этого, в Административном кабинете в разделе "Пользователи" -> "Список", нажмите кнопку "ADD" и заполните необходимые поля.

  2. Зарегистрируйте услугу для тестового пользователя. Для этого, зайдите в раздел "Пользователи" -> "Услуги пользователей", и нажмите кнопку "ADD". Выберите тестового пользователя и услугу. Установите стоимость в 0 рублей и нажмите кнопку "CREATE". Подождите, пока статус "PROGRESS" сменится на другой. Если статус "ACTIVE", то поздравляем, всё работает. Но если статус другой, то причину можно увидеть в разделе: "Задачи" -> "Текущие задачи".

  3. В интерфейсе администратора есть возможность перейти в интерфейс клиента. Для этого, зайдите в раздел "Пользователи" -> "Список". Выберите клиента, кликните на него дважды, и далее, нажмите кнопку "Кабинет". Оказавшись в кабинете клиента, вы увидите список его услуг. Кликнув на соответствующую услугу, Вы увидите кнопки отображения QR кода для VPN и кнопку для скачивания конфига VPN. Данные кнопки отображаются только для активных услуг.

Приём платежей

На момент написания этой статьи SHM умеет принимать только платежи ЮMoney. Инструкцию по настройке можно прочитать на сайте документации.

Так же, платежи можно зачислять клиентам в ручном режиме, через Web интерфейс администратора ("Пользователи -> Платежи -> [ADD]").

Если Вы захотите принимать платежи иным способом, то это можно сделать через SHM API, либо написать в группу Телеграм для разработки нужного платежного модуля.

Заключение

В данной статье я продемонстрировал как можно легко и просто запустить свой маленький бизнес по продаже VPN ключиков. Используя SHM API Вы всегда можете разработать свой собственный личный кабинет для клиентов, например, чтобы внедрить его в ваш лендинг, либо использовать имеющиеся ЛК. SHM умеет очень многое, но всё это невозможно описать в рамках одной статьи. Но Вы всегда можете заглянуть на сайт документации, и задать вопросы в группе Телеграм.

Комментарии (23)


  1. nronnie
    30.11.2022 14:02
    +1

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

    Насколько я до сих пор видел, у всех компаний-провайдеров того же VPS подобная деятельность запрещена соглашением об использовании сервиса.


    1. danuk Автор
      30.11.2022 14:30
      +1

      Всё верно. Но лично у меня проблем не возникало. Кто хочет, тот найдет решение.


    1. Markscheider
      30.11.2022 16:58
      +1

      у всех компаний-провайдеров того же VPS подобная деятельность запрещена соглашением об использовании сервиса

      Вот да. Насчет "у всех" - не поручусь, но у очень многих. При этом мой провайдер разделяет "коммерческие VPN" и прочие. Если раскатать ВПН для семьи на 5-10 пользователей - это не проблема: провайдер ничего не скажет, а если скажет - я легко смогу подтвердить, что это для личного пользования (по пулу IP с которых доступ к ВПН идет).
      А если 50-100 пользователей с разными паттернами поведения - это явно коммерция. И ее провайдер вполне может забанить, руководствуясь собственными же правилами. Перед клиентами неудобно получится, moneyback опять же.
      Так что тут надо или лояльного провайдера искать, или выделенный сервер брать (там правила не такие строгие, вроде бы).


      1. danuk Автор
        30.11.2022 19:24
        +1

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


      1. danuk Автор
        30.11.2022 19:26
        +1

        По поводу moneyback-а:

        Даём клиентам не IP, а host. В случае проблем с сервером, пересоздаем их тоннели на другом, меняем IP для host-а и всё. Большая часть клиентов даже не заметит переезд на другой сервер.


    1. mrkaban
      01.12.2022 06:19
      +1

      Сейчас наоборот множество провайдеров предлагают VPS/VDS под VPN-сервер, при чем некоторые готовые решения предлагают. Естественно, сервера в Европе.


      1. nronnie
        01.12.2022 22:34

        Ну так для собственного использования можно устанавливать и запускать все что угодно. Не разрешают запускать это как публичный сервис.


  1. isBlaze
    30.11.2022 14:14

    VPN сервер с биллингом предполагает оказание услуг. В ваших же скриптах ограничение на 255 когда либо существовавших клиентов, которое легко можно выесть ещё на этапе тестирования и отладки. Вы бы поаккуратнее с адресами обращались…


    1. danuk Автор
      30.11.2022 14:35
      +1

      Этого достаточно на данном этапе. Это же open-source. Добро пожаловать в разработку, жду от Вас MR )


  1. aborouhin
    30.11.2022 16:35

    А ФЗ о связи такие услуги, случайно, не квалифицирует каким-нибудь интересным образом, влекущим лицензирование, сертификацию, фильтрацию трафика, закон Яровой и прочий СОРМ?..


    1. Markscheider
      30.11.2022 16:45

      И, кроме этого, для легального приема платежей за оказанные услуги, потребуется открыть ООО или ИП (самозанятые вроде тоже могут, но тут не уверен).


      1. aborouhin
        30.11.2022 16:51
        +1

        Ну это-то понятно и просто. А вот всё перечисленное - мало того, что адски сложно, но ещё и, вероятно, делает использование предложенного решения либо невозможным (например, если легализовать можно только VPN с российским шифрованием), либо бессмысленным (не для того VPN покупают, чтобы на блокировки РКН и в нём натыкаться). Так что коммерческий VPN может оказаться реальным открыть только на зарубежное лицо, но тогда приём платежей на Юмани - это не то, что нужно :)
        Но я реально не в курсе всех нюансов лицензирования в сфере связи, так что рад был бы услышать комментарии тех, кто сам плавал и знает.


    1. danuk Автор
      30.11.2022 19:29

      Если Вы такая крупная компания, что Вами уже интересуются, то к этому времени, Вы наверное уже решите административные вопросы. В России VPN НЕ запрещен. Всё остальное решается в установленном порядке.


      1. aborouhin
        30.11.2022 19:36

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


        1. danuk Автор
          30.11.2022 19:51
          +1

          У меня был отрицательный опыт. Думал как и Вы. В итоге я открыл ООО, снял офис, нанял бухгалтера, получил лицензии, оформил платежную систему, вложил деньги в рекламу, и в фирменный стиль. Платил кучу пошлин и налогов. Спустя год закрылся, поняв, что моя идея денег не приносит. Заработало только государство...

          Сегодня бы я шел другой дорогой: Сначала запускаем, смотрим, изучаем. Пошли клиенты, - оформляемся, приводим всё в порядок. На этом этапе мы уже понимаем зачем и для чего.


          1. aborouhin
            30.11.2022 19:58

            Так тут вопрос в том, чтобы на этом этапе, когда уже вложил кучу сил и клиенты пошли, не выяснилось, что легализовать Вашу задумку либо вообще невозможно, либо неподъёмно дорого. Опасения конкретно по поводу VPN я выше написал. Самому интересны детали.


          1. mrkaban
            01.12.2022 06:23

            Да! Вот подписываюсь под каждым словом! Аналогичный опыт (только открывал не ООО, а другую форму собственности), поэтому теперь только наоборот. Сначала пробуем идею - пошли клиенты, оформляемся и всё приводим в порядок.


      1. heejew
        01.12.2022 09:03

        Мм, стоит уточнить. В России VPN не запрещен лишь для использования, но с оговоркой.. Но если вы провайдер такой услуги - тут есть нюансики.

        Как на провайдера услуги на вас распространяются те же обязанности, что и на обычных провайдеров шпд доступа, в том числе по фильтрации и блокировке запрещенных РКНом ресурсов. Если вы этого не делаете - за вами придут. На вас в той же мере распространяется обязанность исходящая из постановления 127 "Об утверждении Правил централизованного управления сетью связи общего пользования", на основе которого, кстати, и блокируют VPN-сервисы, которые в России предоставляют доступ к заблокированным ресурсам. То есть такая услуга заведомо незаконна и использование оной услуги с клиентской стороны находится в серой зоне.

        Настолько в серой зоне, что вы не можете без проблем, будучи юрдицом, купить доступ к vpn сервису (для целей обхода блокировок) для распространения между своими сотрудниками. В этом случае за вами тоже придут.


  1. alcanoid
    30.11.2022 19:35
    +2

    Хабр-2012: Запускаем собственный VPN-сервер

    Хабр-2022: Запускаем собственный VPN-сервер с биллингом


    1. skozharinov
      01.12.2022 01:23

      Хабр-2032: Запускаем собственный VPN-сервер с биллингом и Plausible Deniability


      1. mrkaban
        01.12.2022 06:25

        2042: Проектируем компьютер для собственного VPN-сервера с биллингом и Plausible Deniability


  1. maledog
    01.12.2022 13:31
    +1

    А потом кто-то из пользователей напишет что-то экстремистское во вконтактике и владельцу VPS предъявят все скопом. Может "уехать" на дольше чем Дмитрий Богатов. Либо просто провайдер VPS прикроет хост, например за торренты. Или кто-то из пользователей забьёт весь канал трафиком, или захочет провернуть что-нибудь "киберпреступное" и т. д. и т. п. Так себе идея устраивать сервис для посторонних людей на полузаконных основаниях и не имея даже возможности контролировать трафик.


    1. danuk Автор
      01.12.2022 13:37

      Разумеется. Но мы здесь вроде бы про техническую сторону общаемся? Я, как разработчик, лишь привел пример, как можно с помощью SHM это реализовать.
      VPN это всего лишь пример, я пишу об этом в самом начале статьи.