Для настройки интеграции необходимо предварительно развернуть сервер ONLYOFFICE Docs (Document Server).
Установка ONLYOFFICE Docs должна производиться на отдельной машине (выделенном сервере), обособленно от сервера Vitro-CAD. |
Официальные дистрибутивы ONLYOFFICE Docs Community для различных операционных систем, а также руководства по их установке доступны в официальной документации ONLYOFFICE.
После успешного развертывания ONLYOFFICE Docs на отдельном сервере можно переходить к пошаговой настройке интеграции с Vitro-CAD.
Для работы редактора должны выполняться 4 сетевых соединения:
Инициатор | Адрес назначения | Назначение |
|---|---|---|
Браузер пользователя | Vitro-CAD | Открытие страницы редактора и получение конфигурации |
Браузер пользователя | DocumentServerUrl | Загрузка интерфейса и ресурсов ONLYOFFICE |
ONLYOFFICE Docs | PortalPublicUrl | Загрузка исходного файла и отправка результата сохранения (callback) |
Vitro-CAD | DocumentServerUrl | Проверка активной сессии и загрузка сохраненного файла |
Чтобы при клике на файл соответствующего формата открывался редактор ONLYOFFICE Docs, необходимо вручную назначить просмотрщик для нужных расширений:
Если просмотрщик не назначен расширению, при попытке открытия файл будет автоматически скачиваться на ПК вместо перехода в веб-редактор ONLYOFFICE. |
Проверить корректность привязки просмотрщика в базе данных можно с помощью SQL-запроса:
SELECT fe.internal_name AS extension, fv.internal_name AS viewer FROM public.file_extension fe LEFT JOIN public.file_viewer fv ON fv.id = fe.file_viewer WHERE fe.internal_name IN ( 'doc', 'docm', 'docx', 'dot', 'dotm', 'dotx', 'odt', 'ott', 'rtf', 'txt', 'csv', 'ods', 'ots', 'xls', 'xlsb', 'xlsm', 'xlsx', 'xlt', 'xltm', 'xltx', 'odp', 'otp', 'pot', 'potm', 'potx', 'pps', 'ppsm', 'ppsx', 'ppt', 'pptm', 'pptx' ) ORDER BY fe.internal_name; |
Для всех настроенных расширений в колонке viewer должно отображаться значение onlyOffice.
https://docs.example.ru/ — сетевой адрес сервера ONLYOFFICE Docs, доступный с рабочих мест и с сервера Vitro-CAD.https://vitro.example.ru/ — сетевой адрес Vitro-CAD, доступный с сервера ONLYOFFICE Docs.Test-NetConnection docs.example.ru -Port 443 Test-NetConnection vitro.example.ru -Port 443 |
curl -I https://docs.example.ru/healthcheck curl -I https://vitro.example.ru/ |
Если страница Vitro-CAD открывается по HTTPS, адрес DocumentServerUrl также обязан использовать HTTPS. В противном случае браузер заблокирует загрузку ONLYOFFICE как Mixed Content. |
C:\Program Files\Vitro Software\Vitro\Server\Conf\onlyoffice.json/etc/Vitro/Server/Conf/onlyoffice.json
{
"DocumentServerUrl": "https://docs.example.ru/",
"PortalPublicUrl": "https://vitro.example.ru/",
"JwtSecret": "<JWT_SECRET>",
"SessionLookupDays": 7
} |
Параметр | Обязательный | Назначение |
|---|---|---|
DocumentServerUrl | Да | Корневой адрес ONLYOFFICE Docs (доступный клиентам и серверу Vitro-CAD) |
PortalPublicUrl | Да | Корневой адрес Vitro-CAD (доступный с сервера ONLYOFFICE Docs) |
JwtSecret | Да | Секрет подписи запросов между Vitro-CAD и ONLYOFFICE Docs |
SessionLookupDays | Нет | Глубина поиска активной сессии в днях (по умолчанию 7) |
Протокол и порт должны точно соответствовать реальному адресу. |
После изменения onlyoffice.json необходимо перезапустить Vitro Server.
$bytes = New-Object byte[] 32 $generator = [System.Security.Cryptography.RandomNumberGenerator]::Create() $generator.GetBytes($bytes) [Convert]::ToBase64String($bytes) $generator.Dispose() |
openssl rand -base64 32 |
C:\Program Files\ONLYOFFICE\DocumentServer\config\local.json/etc/onlyoffice/documentserver/local.json{
"services": {
"CoAuthoring": {
"token": {
"enable": {
"browser": true,
"request": {
"inbox": true,
"outbox": true
}
}
},
"secret": {
"inbox": {
"string": "<JWT_SECRET>"
},
"outbox": {
"string": "<JWT_SECRET>"
},
"session": {
"string": "<JWT_SECRET>"
}
}
}
}
} |
Значения JwtSecret, secret.inbox.string, secret.outbox.string и secret.session.string должны полностью совпадать. |
Не изменяйте файл default.json, так как его параметры восстанавливаются при обновлении ONLYOFFICE Docs. |
Если PortalPublicUrl содержит частный IP-адрес, ONLYOFFICE Docs может заблокировать загрузку файла и callback. В этом случае добавьте в local.json на сервере ONLYOFFICE Docs:
{
"services": {
"CoAuthoring": {
"request-filtering-agent": {
"allowPrivateIPAddress": true,
"allowMetaIPAddress": false
}
}
}
} |
Для производственной установки следует использовать доверенные сертификаты и HTTPS для Vitro-CAD и ONLYOFFICE Docs.
Необходимо проверить два независимых условия:
DocumentServerUrl.PortalPublicUrl.Самоподписанный сертификат, принятый пользователем в браузере, не становится автоматически доверенным для службы ONLYOFFICE Docs.
Параметр services.CoAuthoring.requestDefaults.rejectUnauthorized: false допускается использовать только для временной диагностики.
После изменения local.json на сервере ONLYOFFICE Docs и onlyoffice.json на сервере Vitro-CAD перезапустите службы.
На сервере ONLYOFFICE Docs и Vitro-CAD (Linux):
sudo systemctl restart ds-converter ds-docservice ds-metrics sudo systemctl restart vitro-server |
На сервере ONLYOFFICE Docs (Windows PowerShell от имени администратора):
Restart-Service DsConverterSvc Restart-Service DsDocServiceSvc Restart-Service DsProxySvc |
После этого перезапустите службу Vitro Server на сервере Vitro-CAD. Открытые вкладки редактора в браузерах пользователей необходимо перезагрузить.
С рабочего места пользователя и с сервера Vitro-CAD выполните:
Invoke-WebRequest "https://docs.example.ru/healthcheck" -UseBasicParsing Invoke-WebRequest "https://docs.example.ru/web-apps/apps/api/documents/api.js" -UseBasicParsing |
Запрос healthcheck должен вернуть true, оба запроса должны завершиться со статусом 200.
С сервера ONLYOFFICE Docs проверьте доступность PortalPublicUrl:
curl -I https://vitro.example.ru/ |
После открытия документа ONLYOFFICE Docs обращается к адресу:
/onlyOffice/api/editor/getDocument/... |
При нажатии кнопки сохранения ONLYOFFICE выполняет ForceSave и отправляет callback со статусом 6. После закрытия измененного документа отправляется финальный callback со статусом 2.
Vitro-CAD передает в ONLYOFFICE идентификатор и имя пользователя текущей сессии.
Права Vitro-CAD | Режим ONLYOFFICE |
|---|---|
Нет Read | Открытие запрещено |
Есть Read, нет Upload | Только просмотр |
Есть Read и Upload | Редактирование актуальной версии |
Открыта конкретная версия | Только просмотр независимо от Upload |
Симптом | Причина и решение |
|---|---|
Вместо редактора скачивается файл |
|
Пустой документ или «Загрузка не удалась» | ONLYOFFICE Docs не смог загрузить файл с сервера Vitro-CAD. Проверьте PortalPublicUrl, маршрутизацию и файрволл между серверами, параметр allowPrivateIPAddress и логи docservice. |
«Не удается сохранить документ» | ONLYOFFICE не может отправить POST на /onlyOffice/api/editor/processCallback/... или Vitro-CAD не может скачать файл по предоставленному адресу. |
Invalid token или код команды 6 | Не совпадают секреты JWT в onlyoffice.json и local.json (inbox, outbox, session), либо службы не были перезапущены. |
socket hang up, ECONNREFUSED | ONLYOFFICE Docs не может подключиться к PortalPublicUrl (например, ошибочно указан HTTP-протокол на HTTPS-порту или сетевое подключение заблокировано). |
C:\Program Files\ONLYOFFICE\DocumentServer\Log\docservice, ...\converter/var/log/onlyoffice/documentserver/docservice/, ...\converter