В данном разделе описываются интеграции с различными системами и примеры решения различных задач на базе SHM
This is the multi-page printable view of this section. Click here to print.
Интеграции
- 1: WireGuard
- 2: Marzban
- 3: Telegram bot
- 4: Remnawave
1 - WireGuard
Процесс интеграции WireGuard и SHM подробно описан здесь: habr.com
2 - Marzban
В данном разделе описывается процесс интеграции SHM и Marzban.
Marzban - проект с открытым исходным кодом (https://github.com/Gozargah/Marzban)
Это инструмент управления прокси, который предоставляет простой и удобный пользовательский интерфейс для управления сотнями учетных записей прокси, работающий на базе Xray-core.
Marzban удобен в использовании, многофункциональен и надежен. Он позволяет вам создавать разные прокси для ваших пользователей без какой-либо сложной настройки. Используя встроенный веб-интерфейс, вы можете отслеживать, изменять и ограничивать пользователей.
Шаблон Marzban работает в SHM начиная с версии 0.5.6. Обновите SHM, если ваша версия меньше.
Принцип взаимодействия SHM и Marzban
flowchart LR
subgraph SHM
E[Событие] --> TPL(Шаблон)
API --> DB[(Хранилище\nключей)]
end
subgraph Marzban
MZ(API)
TPL --> MZ
API --- MZ
end
Интеграция
- Создайте в SHM шаблон с именем
marzban(можно любое другое имя) и поместите туда содержимое из этой ссылки. - В конфигурации SHM создайте параметр с именем
acme, после чего добавьте туда ключemail_for_certificate_issueи укажите Ваш реальный email. Он нужен для выпуска SSL сертификата для вашего домена. - Создайте отдельную группу серверов, например:
VPN Marzban group - Создайте новый сервер и включте его в группу
VPN Marzban group. В качестве транспорта укажите SSH и укажите наш шаблонmarzban. - Добавьте ключ SSH на ваш сервер, проверьте, что сервер работает (кнопка TEST).
- В
settingsсервера пропишите переменную:subscription_domain. Укажите ваш домен, который указывает на Ваш сервер. Этот домен крайне важен для выпуска SSL сертификата. - Создайте все нужные Cобытия в SHM, и укажите там нашу группу серверов (
VPN Marzban group). Укажите категорию услуг:vpn-mz-test - Создайте и настройте Услуги. Укажите категорию услуг:
vpn-mz-test.
Инсталляция сервера Marzban
На сервере куда вы планируете инсталлировать Marzban должен быть свободным https порт (443).
- Вы можете инсталлировать сервер Marzban с помощью SHM, выбрав этот шаблон (marzban) и нажав кнопку INIT.
Предварительно укажите адрес сервера (
host_name) в settings сервера. - Вы можете вручную инсталлировать сервер Marzban, следуя официальным инструкциям со страницы проекта Marzban.
Управление ключами
SHM управляет ключами Marzban используя API. Для авторизации убедитесь, чтобы на сервере c Marzban в файле /opt/marzban/.env были прописаны SUDO_USERNAME и SUDO_PASSWORD.
Если инсталляция Marzban производилась с помощью SHM, то все нужные переменные уже прописаны.
Marzban Dashboard (Web UI)
Для доступа к Web панели Marzban используйте ссылку вида: http://IP:8000/dashboard
Логин и пароль вы можете узнать зайдя на сервер с Marzban (по SSH), и выполнить следующие команды:
- Логин:
grep '^SUDO_USERNAME=' /opt/marzban/.env | tr -d 'SUDO_USERNAME=' - Пароль:
grep '^SUDO_PASSWORD=' /opt/marzban/.env | tr -d 'SUDO_PASSWORD='
Доступ к данным (ключам) пользователей
После создания подписки “ключей” данные сохраняются в Хранилище SHM.
Получить данные можно разными способами.
Получить данные через API SHM:
- URL для пользователя:
/shm/v1/storage/manage/vpn_mrzb_$USI - URL для Админа:
/shm/v1/storage/manage/vpn_mrzb_$USI?user_id=$USER_ID
Где $USI - идентификатор услуги пользователя, $USER_ID - идентификатор пользователя
Получение данных в Шаблонах SHM:
- Пример получения ключа (начинающегося на
ss:):
{{ storage.read('name','vpn_mrzb_' _ us.id ).links.grep('^ss:').first }} - Пример получения ссылки для подписки:
{{ storage.read('name','vpn_mrzb_' _ us.id ).subscription_url }}
В Telegram bot используйте
args.0вместоus.id.
Telegram bot
Настройте Telegram bot, если хотите продавать услуги через Telegram.
Вы можете использовать готовый шаблон для Telegram. Для этого, создайте шаблон telegram и поместите туда код.
3 - Telegram bot
С помощью SHM легко и удобно создавать Telegram bot-ов.
Telegram bot реализуется с помощью транспорта Telegram
4 - Remnawave
В данном разделе описывается процесс интеграции SHM и Remnawave.
Remnawave - Решение для управления прокси-серверами и пользователями
Remnawave, созданное на основе Xray Core, предоставляет широкие возможности для управления пользователями и прокси-серверами. Легко добавляйте пользователей, узлы, настраивайте Xray и многое другое с помощью многофункционального REST API на базе NestJS.
Принцип взаимодействия SHM и Remnawave
flowchart LR
subgraph SHM
E[Событие] --> TPL(Шаблон)
API --> DB[(Хранилище\nключей)]
end
subgraph Remnawave
MZ(API)
TPL --> MZ
API --- MZ
end
Инсталляция сервера Remnawave
Remnawave предлогает широкий выбор установки с разными обратными прокси, поэтому нет явного шаблона/скрипта установки Remnawave
Интеграция
Шаблоны для Remnawave есть в открытом доступе так же для продажи, так как шаблоны отличаются исходя от версии Remnawave тут шаблона нет.
- Создайте в SHM шаблон с именем
remnawaveи заполните его. - Создайте отдельную группу серверов, например:
Remnawave group - Создайте новый сервер и включте его в группу
Remnawave group. В качестве транспорта укажите SSH и укажите наш шаблонremnawave. - Добавьте ключ SSH на ваш сервер, проверьте, что сервер работает (кнопка TEST).
- В
settingsсервера пропишите нужные переменные, например:hostиtokenдля работы с API Remnawave - Создав несколько серверов в группе
Remnawave groupможно вsettingsсервера прописать UUID Сквада/ов, чтобы отдавать разные конфигурации пользователям. - Создайте все нужные Cобытия в SHM, и укажите там нашу группу серверов (
Remnawave group). Укажите категорию услуг:vpn-remnawave - Создайте и настройте Услуги. Укажите категорию услуг:
vpn-remnawave. - Создайте API токен в Remnawave и пропишите его например в
settingsсервера/ов
Доступ к данным пользователей
После создания подписки “ключей” данные сохраняются в Хранилище SHM.
Получить данные можно разными способами.
vpn_remnawave_прописан как пример, вы можете указать свой префикс.
Получить данные через API SHM:
- URL для пользователя:
/shm/v1/storage/manage/vpn_remnawave_$USI - URL для Админа:
/shm/v1/storage/manage/vpn_remnawave_$USI?user_id=$USER_ID
Где $USI - идентификатор услуги пользователя, $USER_ID - идентификатор пользователя
Получение данных в Шаблонах SHM:
- Пример получения ключа для приложения Happ:
{{ storage.read('name','vpn_remnawave_' _ us.id ).happ.cryptoLink }} - Пример получения ссылки для подписку:
{{ storage.read('name','vpn_remnawave_' _ us.id ).response.subscriptionUrl }}
В Telegram bot используйте
args.0вместоus.id.
Telegram bot
Настройте Telegram bot, если хотите продавать услуги через Telegram.
- Пример вывода ссылку на подписку в виде QR-кода внутри Telegram bot
<% CASE '/show_sub_qr' %>
{{ subscriptionUrl = storage.read('name','vpn_remnawave_' _ args.0 ).response.subscriptionUrl }}
{{ tg_api( printQrCode = {
data = subscriptionUrl
parameters = {
caption = "Отсканируйте QR-код"
}
}
) }}