====== Подключение своего ShariX Open к Платформе ShariX ======
Инструкция для владельца сервиса, у которого уже установлен ShariX Open и который хочет подключить его к Платформе ShariX.
===== Что получится после настройки =====
После подключения:
* сервис появится на платформе;
* владелец сервиса получит права администратора сервиса;
* пользователи смогут подключать сервис через платформу;
* новые пользователи смогут регистрироваться на сервисе с синхронизацией профиля;
* изменения профиля и пароля смогут передаваться через платформу на другие подключенные сервисы.
===== 1. Подготовьте сервис =====
Выполняется на сервере, где установлен ShariX Open.
Откройте файл ''.env'' сервиса и проверьте настройки.
Для первичного подключения рекомендуется:
DEBUG=True
PLATFORM_INTEGRATION=2
PLATFORM_API_URL=https://адрес-платформы/my/api/
DEFAULT_CLIENT_ROLE=METASERVICE-CLIENT
SYSTEMD_SERVICE_NAME=sharix_main
Что означает каждая настройка:
^ Настройка ^ Что указать ^
| ''DEBUG=True'' | Удобно на этапе разворачивания: сервис сможет показывать сгенерированный ключ для переноса на платформу. После настройки лучше вернуть ''False''. |
| ''PLATFORM_INTEGRATION=2'' | Подготовительный режим. Сервис уже пробует синхронизацию, но еще не считается полностью активным. |
| ''PLATFORM_API_URL'' | Адрес API платформы. Пример: ''https://testpm1.sharix-app.org/my/api/''. |
| ''DEFAULT_CLIENT_ROLE'' | Роль пользователя при самостоятельной регистрации на сервисе. Обычно ''METASERVICE-CLIENT''. |
| ''SYSTEMD_SERVICE_NAME'' | Имя systemd-сервиса без ''.service''. Нужно для перезапуска через веб-интерфейс. Например, если systemd-сервис называется ''sharix_main.service'', укажите ''sharix_main''. |
Возможные значения ''DEFAULT_CLIENT_ROLE'':
^ Значение ^ Когда использовать ^
| ''METASERVICE-CLIENT'' | Обычный вариант. Зарегистрированный пользователь становится клиентом сервиса. |
| ''METASERVICE-GUEST'' | Пользователи создаются только локально, без синхронизации с платформой. |
| ''METASERVICE-CORPCLIENT'' | Регистрация используется как заявка на корпоративное обслуживание. |
После изменения ''.env'' перезапустите сервис.
Если доступен веб-интерфейс администратора:
- Войдите в Django admin сервиса.
- Откройте раздел ''Visual settings''.
- Нажмите кнопку ''Перезапустить сервис''.
- Подтвердите перезапуск.
Если кнопка перезапуска не работает, проверьте ''SYSTEMD_SERVICE_NAME'' в ''.env''. Значение должно совпадать с именем systemd-сервиса без ''.service''.
Пример:
SYSTEMD_SERVICE_NAME=sharix_main
Для ручного перезапуска через сервер:
systemctl restart sharix_main.service
===== 2. Сгенерируйте на сервисе ключ для платформы =====
Выполняется в интерфейсе сервиса ShariX Open.
- Войдите на сервис под администратором.
- Откройте кабинет метасервиса.
- Нажмите кнопку генерации API-ключа для платформы.
- Скопируйте полученный ключ.
Этот ключ нужен платформе, чтобы обращаться к вашему сервису.
Если ''DEBUG=True'', ключ может отображаться в кабинете сервиса, чтобы его было удобно скопировать.
Если ''DEBUG=False'', ключ может быть показан только один раз сразу после генерации. Скопируйте его сразу.
===== 3. Создайте сервис на платформе =====
Выполняется на Платформе ShariX.
- Войдите на платформу под пользователем, который будет владельцем сервиса.
- Откройте раздел создания сервиса.
- Создайте сервис и заполните основные данные:
* название;
* юридическое название;
* ИНН;
* реквизиты;
* описание;
* адрес сайта сервиса.
На этапе первичного создания на платформе может не быть поля для ключа синхронизации. Это нормально.
Сначала создайте сервис. После создания откройте карточку или форму редактирования сервиса и внесите данные интеграции.
===== 4. Заполните на платформе данные для связи с сервисом =====
Выполняется на платформе, в карточке или форме редактирования созданного сервиса.
Нужно заполнить два значения.
^ Что заполнить на платформе ^ Что туда вставить ^
| API URL сервиса | Адрес API вашего сервиса. Например: ''https://open.example.org/my/api/''. |
| Ключ доступа к сервису / ключ синхронизации | Ключ, который вы сгенерировали на сервисе на шаге 2. |
Пример:
API URL сервиса: https://open.example.org/my/api/
Ключ доступа к сервису: скопированный_ключ_с_сервиса
Сохраните карточку сервиса.
===== 5. Передайте сервису ключ платформы =====
После создания сервиса платформа генерирует ключ, с которым ваш сервис сможет обращаться к API платформы.
Этот ключ должен попасть на сервис в ''.env'':
PLATFORM_API_KEY=ключ_выданный_платформой
Также сервис должен знать свой ID на платформе:
METASERVICE_ID=ID_сервиса_на_платформе
Есть два способа заполнить эти значения.
==== Способ 1. Автоматически через кнопку на платформе ====
Используйте этот способ, если уже заполнены:
* API URL сервиса;
* ключ доступа платформы к сервису;
* сервис доступен с платформы.
В карточке или форме редактирования сервиса на платформе нажмите кнопку обновления настроек сервиса, если она доступна.
После этого платформа сама запишет на сервис в ''.env'':
METASERVICE_ID=ID_сервиса_на_платформе
PLATFORM_API_KEY=ключ_выданный_платформой
После записи настроек перезапустите сервис.
На сервисе это можно сделать через:
- Django admin;
- ''Visual settings'';
- кнопку ''Перезапустить сервис''.
==== Способ 2. Вручную через .env ====
Если автоматическая кнопка недоступна или не сработала, внесите значения вручную в ''.env'' сервиса:
METASERVICE_ID=ID_сервиса_на_платформе
PLATFORM_API_KEY=ключ_выданный_платформой
После этого перезапустите сервис.
===== 6. Назначьте администратора сервиса =====
После того как платформа может обращаться к сервису, она назначает владельца сервиса администратором сервиса.
Обычно это происходит после сохранения настроек интеграции на платформе.
В результате на сервисе должно быть так:
* пользователь-владелец сервиса создан или обновлен;
* у него есть роль ''METASERVICE-ADMIN'';
* тестовый пользователь ''2101'' больше не является ''METASERVICE-ADMIN'';
* других лишних ''METASERVICE-ADMIN'' нет.
Проверьте это в кабинете метасервиса на сервисе.
Если на сервисе найдено больше одного ''METASERVICE-ADMIN'', в кабинете должно появиться предупреждение и кнопки для снятия лишних прав.
Оставьте одного администратора сервиса.
===== 7. Проверьте состояние подключения =====
На сервисе проверьте ''.env'':
PLATFORM_INTEGRATION=2
PLATFORM_API_URL=https://адрес-платформы/my/api/
METASERVICE_ID=ID_сервиса_на_платформе
PLATFORM_API_KEY=ключ_выданный_платформой
На платформе в карточке сервиса проверьте:
* API URL сервиса заполнен;
* ключ доступа к сервису заполнен;
* сервис не находится в аварийном режиме;
* текущий владелец сервиса соответствует администратору на сервисе.
На сервисе проверьте:
* кабинет метасервиса открывается;
* нет предупреждения о нескольких ''METASERVICE-ADMIN'';
* Testkit, если подключен, открывается;
* регистрация пользователя работает.
===== 8. Переведите сервис в активный режим =====
Когда все проверки прошли успешно, измените на сервисе ''.env'':
PLATFORM_INTEGRATION=1
Перезапустите сервис.
После этого сервис работает в активном режиме синхронизации.
===== 9. Проверьте регистрацию пользователя =====
Проверьте сценарий самостоятельной регистрации на сервисе.
Если в ''.env'':
DEFAULT_CLIENT_ROLE=METASERVICE-CLIENT
PLATFORM_INTEGRATION=1
то на форме регистрации пользователь сможет выбрать синхронизацию с платформой.
Ожидаемое поведение:
^ Ситуация ^ Что должно произойти ^
| Пользователь выбрал синхронизацию, и на платформе его еще нет | Пользователь создается на сервисе и на платформе. |
| Пользователь выбрал синхронизацию, но уже есть на платформе | Сервис предлагает перейти на платформу и подключить сервис там. |
| Пользователь не выбрал синхронизацию | Пользователь создается локально на сервисе. |
| Платформа временно недоступна | Пользователь создается локально, синхронизация отключается, показывается предупреждение. |
===== 10. Проверьте подключение существующего пользователя платформы =====
Выполняется на платформе.
- Войдите на платформу под пользователем, который уже существует на платформе.
- Откройте список сервисов.
- Найдите ваш сервис.
- Нажмите подключение сервиса.
Ожидаемое поведение:
* платформа создаст или обновит пользователя на сервисе;
* на платформе появится активная связь пользователя с сервисом;
* на сервисе у пользователя появится запись клиента;
* синхронизация профиля будет включена.
===== 11. Проверьте синхронизацию профиля =====
На сервисе откройте профиль пользователя.
Если синхронизация доступна, в профиле должна быть кнопка включения или отключения синхронизации с платформой.
Проверьте:
- Включите синхронизацию.
- Измените имя или email.
- Сохраните профиль.
- Проверьте, что изменение появилось на платформе.
Если пользователь подключен к нескольким сервисам, платформа попробует передать изменение на остальные сервисы.
Если какой-то сервис не принял изменение:
* изменение у пользователя не откатывается;
* проблемный сервис переводится в аварийный режим;
* пользователю показывается предупреждение.
===== 12. Проверьте смену пароля =====
На сервисе смените пароль пользователя.
Если синхронизация включена:
* пароль меняется на сервисе;
* сервис передает изменение на платформу;
* платформа пробует передать изменение на другие подключенные сервисы.
Если один из связанных сервисов недоступен:
* пароль у пользователя все равно меняется;
* недоступный сервис переводится в аварийный режим;
* пользователь получает предупреждение о проблеме синхронизации.
===== 13. Если сервис попал в аварийный режим =====
Аварийный режим означает, что платформа пыталась синхронизироваться с сервисом, но сервис не ответил корректно.
Проверьте по порядку:
- Открывается ли сервис в браузере.
- Правильно ли указан API URL сервиса на платформе.
- Правильно ли вставлен ключ доступа к сервису на платформе.
- Правильно ли указан ''PLATFORM_API_URL'' на сервисе.
- Есть ли на сервисе ''METASERVICE_ID''.
- Есть ли на сервисе ''PLATFORM_API_KEY''.
- Ровно ли один пользователь имеет роль ''METASERVICE-ADMIN''.
- Перезапущен ли сервис после изменения ''.env''.
После исправления снова сохраните настройки интеграции на платформе или повторите проверку подключения.
===== 14. Короткий порядок действий =====
- На сервисе в ''.env'' указать ''DEBUG=True'', ''PLATFORM_INTEGRATION=2'', ''PLATFORM_API_URL'', ''DEFAULT_CLIENT_ROLE'', ''SYSTEMD_SERVICE_NAME''.
- Перезапустить сервис.
- На сервисе сгенерировать ключ доступа платформы к сервису.
- На платформе создать сервис.
- На платформе открыть созданный сервис и заполнить API URL сервиса.
- На платформе вставить ключ, сгенерированный на сервисе.
- Сохранить сервис.
- На платформе обновить настройки сервиса, чтобы на сервис попали ''METASERVICE_ID'' и ''PLATFORM_API_KEY''.
- Перезапустить сервис.
- Проверить, что владелец стал единственным ''METASERVICE-ADMIN'' на сервисе.
- Проверить регистрацию пользователя.
- Проверить подключение пользователя с платформы.
- Проверить изменение профиля.
- Проверить смену пароля.
- Перевести сервис в ''PLATFORM_INTEGRATION=1''.
- Перезапустить сервис.