Мультитенантный сервер
Настройка мультитенантного сервера
-
Установите сервер Developer Edition
Для включения мультитенантного режима требуется действующая мультитенантная лицензия.
примечаниеЧтобы запросить такую лицензию, обратитесь к своему менеджеру по продажам.
Зарегистрируйте продукт, следуя приведенной инструкции.
-
Откройте файл конфигурации
local.jsonи укажите в поле baseDir путь к папке, содержащей настройки тенантов. Рекомендуем использовать значение/var/www/onlyoffice/Data/tenants. -
В файле
local.jsonукажите в поле baseDomain домен второго уровня, который будет базовым доменом для всех ваших тенантов. -
Статистика по основной лицензии собирается в тенанте по умолчанию.
-
Имя тенанта по умолчанию задается в поле defaultTenant в
defaultTenant.примечаниеСоздать другой тенант с таким же именем нельзя.
-
Запросы к
baseDomain, в которых не указан тенант, автоматически направляются в тенант по умолчанию. -
Тенант по умолчанию не требует дополнительной настройки. Однако запросы к этому тенанту подписываются с помощью секрета, заданного в файле
local.json. -
Статистику можно посмотреть на странице info тенанта по умолчанию.
-
Добавление нового тенанта
-
Чтобы добавить новый тенант:
-
Создайте новую папку в каталоге
baseDirна сервере. -
Имя тенанта формируется из имени папки и
baseDomain(например, если папка называетсяtenant1, аbaseDomain— example.com, имя тенанта будетtenant1.example.com).примечаниеУбедитесь, что эта папка создана в той файловой системе, где находится
default.json.
В каждую папку тенанта поместите следующие два обязательных файла:
default.json:"tenants": {"baseDir": "/var/www/onlyoffice/Data/tenants","baseDomain": "mydomain.example","filenameConfig": "config.json","filenameSecret": "secret.key","filenameLicense": "license.lic","defaultTenant": "localhost","cache": {"stdTTL": 300,"checkperiod": 60,"useClones": false}}примечаниеСоздайте файл
secret.keyдля каждого тенанта, чтобы обеспечить изоляцию и безопасность. Если его нет, будет использоваться секрет основного тенанта. Если секрет JWT указан, приоритет имеет секрет изconfig.json.файловая система:
root@3694c287928a:/var/www/onlyoffice/Data/tenants# 1s -a. .. tenant1 tenant2root@3694c287928a:/var/www/onlyoffice/Data/tenants# -
-
root@3694c287928a:~# 1s /var/www/onlyoffice/Data/tenants/tenant1config.json license.licroot@3694c287928a:~#
license.lic— обязательный файл с лицензией тенантаconfig.json— обязательный файл конфигурации, который переопределяет основную конфигурацию сервера
примечаниеСекрет JWT обязательно нужно заполнить.
-
Файл
license.licпереопределяет для тенанта отдельные поля основной лицензии. Правила следующие:-
Подпись: подпись лицензии не требуется.
-
Наследование полей: можно указать некоторые или все поля основной лицензии. Для неуказанных полей используются значения из основной лицензии, и они проверяются соответствующим образом.
-
Изменение ограничений: увеличить значения по сравнению с основной лицензией нельзя, но можно уменьшить. Это относится к полям connections, connections_view, users_count, users_expire, users_view_count, end_date, timelimited, advanced_api, branding, customization.
Пример: можно убрать
brandingиcustomizationили задать пробный режим.примечаниеУвеличение значений не дает результата, так как основная лицензия каждый раз проверяется повторно.
-
Кэширование: после чтения значения лицензии кэшируются на 5 минут.
Например, файл
license.licможет иметь следующее содержимое:{"branding":false,"connections":100,"users_count":0} -
-
Файл
config.jsonпозволяет переопределить некоторые настройки сервера. Правила следующие:- Непереопределяемые настройки: настройки, используемые при запуске сервера (например, адреса внешних сервисов, пути к журналам, лицензии и файловый кэш), переопределить нельзя.
- Переопределяемые настройки: можно переопределить настройки, которые влияют на работу во время выполнения, в том числе настройки WOPI, фильтрацию по IP-адресам, секрет JWT, отключение анонимного доступа и ограничения на размер файлов.
- Кэширование: после чтения значения конфигурации кэшируются на 5 минут.
Например, файл
config.jsonможет иметь следующее содержимое:{"wopi": {"enable": true},"services": {"CoAuthoring": {"secret": {"inbox": {"string": "secret", "file": ""},"outbox": {"string": "secret", "file": ""},"session": {"string": "secret", "file": ""}},"token": {"enable": {"browser": true,"request": {"inbox": true,"outbox": true}}}}}}