Я занимаюсь разработкой универсальной биллинговой системы с действиями по событиям - SHM. В качестве примера использования системы, решил написать этот Tutorial, по запуску собственного VPN сервера. Данная статья позволит Вам настроить свой собственный сервер для оказания услуг VPN. Вы получите кабинет (Web интерфейс), в котором Ваши друзья и (или) клиенты, смогут сами себе заказывать VPN ключики, отслеживать дату их истечения и производить оплату (установив нулевую цену за услугу, вы можете предоставлять её совершенно бесплатно). SHM состоит из Ядра системы (API + MySQL), и Web интерфейсов: административный и клиентский. SHM можно запустить на любом сервере, где есть Docker. Услуги VPN предоставляются на базе WireGuard. Такой выбор был сделан в связи с тем, что для WireGuard существует множество клиентов, под любые ОС. Очень легко и удобно настроить VPN на смартфоне с помощью QR кода. Для запуска собственного VPN сервера с биллингом нам необходимо: Арендовать сервер (VPS) в нужном регионе, через который будет осуществляться выход в сеть Интернет (VPN) Инсталлировать и настроить SHM для оказания услуг Выберите любую компанию, предоставляющую услуги по аренде серверов в нужном Вам регионе, и закажите себе сервер (VPS, VDS) с ОС: Ubuntu 22.04 (на этой ОС тестировалась система). Рекомендую установить 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". В списке серверов появится ваш сервер.  Найдите Ваш сервер в списке серверов, кликните по нему дважды, чтобы открыть окно редактирования сервера. Внизу окна есть поле 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 уже создана услуга "VPN" и настроены события.  Перейдите в раздел SHM административного кабинета: "Услуги" -> "Список". Найдите услугу "VPN", кликните по ней дважды и отредактируйте её стоимость. Так же, убедитесь, что галочка "Доступно к заказу" установлена. Создайте тестового пользователя. Для этого, в Административном кабинете в разделе "Пользователи" -> "Список", нажмите кнопку "ADD" и заполните необходимые поля.  Зарегистрируйте услугу для тестового пользователя. Для этого, зайдите в раздел "Пользователи" -> "Услуги пользователей", и нажмите кнопку "ADD". Выберите тестового пользователя и услугу. Установите стоимость в 0 рублей и нажмите кнопку "CREATE". Подождите, пока статус "PROGRESS" сменится на другой. Если статус "ACTIVE", то поздравляем, всё работает. Но если статус другой, то причину можно увидеть в разделе: "Задачи" -> "Текущие задачи". В интерфейсе администратора есть возможность перейти в интерфейс клиента. Для этого, зайдите в раздел "Пользователи" -> "Список". Выберите клиента, кликните на него дважды, и далее, нажмите кнопку "Кабинет". Оказавшись в кабинете клиента, вы увидите список его услуг. Кликнув на соответствующую услугу, Вы увидите кнопки отображения QR кода для VPN и кнопку для скачивания конфига VPN. Данные кнопки отображаются только для активных услуг. На момент написания этой статьи SHM умеет принимать только платежи ЮMoney. Инструкцию по настройке можно прочитать на сайте документации.  Так же, платежи можно зачислять клиентам в ручном режиме, через Web интерфейс администратора ("Пользователи -> Платежи -> [ADD]"). Если Вы захотите принимать платежи иным способом, то это можно сделать через SHM API, либо написать в группу Телеграм для разработки нужного платежного модуля. В данной статье я продемонстрировал как можно легко и просто запустить свой маленький бизнес по продаже VPN ключиков. Используя SHM API Вы всегда можете разработать свой собственный личный кабинет для клиентов, например, чтобы внедрить его в ваш лендинг, либо использовать имеющиеся ЛК. SHM умеет очень многое, но всё это невозможно описать в рамках одной статьи. Но Вы всегда можете заглянуть на сайт документации, и задать вопросы в группе Телеграм.  Программист, DevOps