Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы документов
Редакторы документов
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
ВКС и мессенджер
ВКС и мессенджер
Мобильные редакторы
Мобильные редакторы
Почтовый сервер
Почтовый сервер
Органайзер
Органайзер
Сервер лицензирования
Сервер лицензирования
Файл-Экспресс
Файл-Экспресс
Аналитика
Аналитика
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

Установка и интеграция Directum RX с сервером документов

Обновлено: 19.03.26
Уточнение

Дополнительная информация по установке/настройке Directum RX доступа по ссылке ↗.

Внесение записей в глобальный DNS

Перед инсталляцией рекомендуется внести необходимые записи в глобальный dns, для возможности работы приложения, после всех указанных ниже действий.

Необходимо задать две А записи: для Directum RX и сервера документов (если предполагается использование сервера документов на отдельном сервере).

На сервере с Directum RX

Уточнение

Установка производилась на ОС Debian 11.

Установить docker и docker-compose

Установить docker и docker-compose можно из стандартных репозиториев ОС или из официального репозитория докер. ↗

Важно

Для версии 4.11 требуется версия докер от 19.3 до 25.

Для установки из стандартных репозиториев выполним:

apt update && apt install docker.io docker-compose # пример для debian и ubuntu

Можно проверить установку командами:

docker -v && docker-compose -v

При работе с реджистри директума, необходимо добавить реджистри в доверенные для докер.

Для этого, открываем на редактирование файл /etc/docker/daemon.json

В файл добавляем адрес реджистри, например:

{
    "insecure-registries" : [ "ciaregistry.directum.ru" ]
}

Сохраняем файл и перезапускаем службу докер:

systemctl restart docker

Скачиваем дистрибутив директум

Скачаем дистрибутив директум, например, по ссылке ↗ доступна версия 4.10.48:

wget https://download.r7-office.ru/directum/directum_rx_4.10.48.0x.zip

Распакуем архив дистрибутива

unzip directum_rx_4.10.48.0x.zip

Команда распакует архив в текущую директорию.

Распакуем архив с установщиком

Для распаковки рекомендуется создать отдельный каталог и распаковать туда архив:

mkdir /launcher
tar -xvzf DirectumLauncher.tar.gz -C /launcher
cd /launcher

Подготовка к установке

Уточнение

Для дальнейшей загрузки образов докер необходимо авторизоваться в докер реджистри или импортировать образы локально. Для импорта локально используем архив с образами из поставки DockerImages.tar.gz. Для авторизации необходима УЗ. Информация по авторизации здесь.

Установка rabbitmq

Копируем файл конфига из дефолтного:

cp ./etc/config.yml.example ./etc/config.yml
nano ./etc/config.yml

В файле в секции variables в переменной home_path укажите путь до папки с данными, например /home/directum:

В секции services_config добавьте секцию SungeroRabbitMQ с данными образа и каталогом хранения данных:

SungeroRabbitMQ:
    rabbitmq_data_path: '{{ home_path }}/rabbitmq_data'
    docker_tag: 'registry.directum.ru/public/rabbitmq:3.12.13-management-alpine'

После сохранения конфига запускаем rabbitmq:

./do.sh rabbitmq up

По окончании появится сообщение «Container ‘sungerorabbitmq’ has status ‘running’», а также, будет доступна веб страница rabbitmq на порту 15672 сервера.

Настройка rabbitmq

  1. Открываем страницу в браузере http://ip_адрес_сервера:15672;
  2. Вводим guest/guest логин и пароль;
  3. На открывшейся странице создайте пользователя с правами администратора. Для этого перейдите на вкладку «Admin» и в разделе «Add a user» заполните поля Username, Password – логин и пароль администратора RabbitMQ. Права администратора в дальнейшем нужны для создания пользователя, от имени которого система Directum RX будет подключаться к RabbitMQ;
  4. В поле Tags выберите значение Admin и нажмите на кнопку Add user;
  5. Создайте виртуальный хост RabbitMQ для работы с Directum RX. Для этого на вкладке «Admin» на панели справа перейдите в группу Virtual Hosts и в разделе «Add a new virtual host» в поле Name заполните название хоста, например, rxhost. Затем нажмите на кнопку Add virtual host;
  6. На панели справа перейдите в группу Users;
  7. Создайте пользователя, от имени которого система Directum RX сможет подключаться к RabbitMQ. Для этого на вкладке «Admin» в разделе «Add a user» заполните поля Username, Password – логин и пароль пользователя. Затем в поле Tags выберите значение None и нажмите на кнопку Add user;
  8. Выберите созданного пользователя в списке, затем в разделе «Permissions» в поле Virtual Host выберите созданный виртуальный хост и нажмите на кнопку Set permission;
  9. В разделе «Topic permissions» в поле Virtual Host выберите созданный виртуальный хост и нажмите на кнопку Set topic permission.
Уточнение

Когда настройка завершена, из соображений безопасности рекомендуется отключить страницу администрирования RabbitMQ. Для этого в Directum Launcher перейдите в режим Настройка. Затем в конфигураторе в секции RabbitMQ добавьте параметр management_panel_disabled и установите для него флажок.

Во избежание проблем с сертификатами рекомендуется установить сертификат на локальную машину:

sudo cp your-cert.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

Установка директум

Уточнение

Для установки на сервере должны быть расположены сертификат и ключ в формате .pem

Также, если БД расположена на выделенном сервере, необходимо на сервере БД разрешить подключение с сервера директум в файле pg_hba.conf.

В СУБД необходимо расширение postgresql-contrib. Установить с помощью стандартного менеджера:

apt install postgresql-contrib

И активировать в psql "CREATE EXTENSION IF NOT EXISTS citext;"

Увеличьте максимально допустимое количество наблюдателей за файлами на текущем компьютере – системный параметр /proc/sys/fs/inotify/max_user_instances. Для этого в командной строке перейдите в созданную папку и с привилегиями суперпользователя выполните команду:

./do.sh set_inotify_instances_limit

В каталог с распакованным установщиком перенесем архивы, необходимые для минимальной установки DirectumRX.tar.gz, Platform.tar.gz, WebHelp.zip:

mv /root/DirectumRX.tar.gz /root/Platform.tar.gz /root/WebHelp.zip /launcher

Если в компании не используется DNS-сервер, в конфигурационном файле etc/config.yml перед секцией logs_path добавьте секцию extra_hosts. Укажите в ней соответствие IP-адреса текущего сервера и доменного имени, по которому доступна система Directum RX:

extra_hosts:
    company-rx.directum.ru: '192.168.0.42'
logs_path: &logs
    LOGS_PATH: '{{ home_path }}/logs'

Во время установки указанное соответствие запишется в файл hosts docker-контейнеров. Это необходимо для корректного импорта шаблонов документов и пакетов разработки.

Уточнение

Также рекомендуется добавить строку в файл /etc/hosts

Далее запускаем страницу установщика командой:

./DirectumLauncher --host=0.0.0.0

И переходим в браузере по адресу сервера, указав порт 5000, например, http://192.168.26.160:5000/.

Далее, на открывшейся странице заполняем строки:

  • Адрес сайта — имя сервера, например, directum.ubuntu.s7-office.site;
  • Путь до сертификата — указать путь до сертификата в формате .pem на сервере;
  • Строка подключения к БД, порт, имя БД, УЗ для подключения. Если БД не создана, то установить галочку и указать УЗ админа БД для создания;
  • Строка подключения к rabbitMQ, порт, виртуальный хост, созданный ранее, УЗ и точка обмена (можно указать произвольное значение);
  • Папка с данными — каталог, где будут храниться данные директум;
  • Пароль — пароль для УЗ администратора, сервисной УЗ директум;
  • Код системы — для тестового контура можно указать произвольное значение.

После заполнения строк нажимаем Установить.

Если не проходит проверка работоспособности сервисов, проверяем состояние докер контейнеров на сервере.

При постоянном рестарте контейнера sungerohaproxy и повторении ошибки в его логе:

Можно в ручном режиме копировать ключ с сервера внутрь контейнера с последующим рестартом командой:

docker cp s7-office.site.key.pem sungerohaproxy:/usr/local/etc/ssl.pem.key && docker restart sungerohaproxy

Далее нажимаем кнопку «Повторить» на веб странице.

После прохождения всех шагов директум будет доступен по ссылке внизу страницы установщика.

Интеграция онлайн редактора с DirectumRX

Настройка Directum

Откроем веб страницу и включим онлайн редактирование, как на скриншоте:

Переходим на страницу установщика (на порту 5000) и, на вкладке «Настройки сервисов», добавляем следующие переменные в веб сервер:

ENABLE_COLLABORATIVE_EDITING
ENABLED_WEB_EDITORS

Значения переменных, как на скриншоте.

Далее, нажимаем кнопку «Применить настройки» внизу страницы и ждем перезапуска сервисов.

После успешного перезапуска отключаем визуальный режим конфигурирования и опускаемся до блока SungeroWebServer и добавляем дополнительный блок в конце, соблюдая синтаксис yml:

WEB_EDITORS:
    onlyoffice:
    -   '@name': 'onlyoffice'
        '@url': '/collaboration'
        '@extensions': 'doc;docx;dotx;xlsx;xltx;xls;pptx;potx;ppt;odt;ott;ods;ots;odp;otp;txt;html;rtf;csv;pdf;epub;xps;djvu;'
        '@supportEncrypted': 'false'
        '@supportStrictAccess': 'false'

Снова применяем настройки и ждем перезапуска сервисов.

Уточнение

В случае постоянного перезапуска контейнера хапрокси, после перезапуска сервисов, снова выполняем копирование сертификата и рестарт хапрокси:

docker cp s7-office.site.key.pem sungerohaproxy:/usr/local/etc/ssl.pem.key && docker restart sungerohaproxy

После выполненных действий в веб клиенте должна быть доступна кнопка настройки онлайн редактирование:

Также, необходимо добавить строки в конфигурационный файл хапрокси для перенаправления на онлайн редактор.

Конфигурационный файл расположен в директории, указанной при установке в строке «Папка с данными», в примере /home/directum.

Открываем файл на редактирование:

nano /home/directum/haproxy/haproxy.cfg

Добавляем строку в секцию frontend directumrx после строк в формате use_backend:

use_backend collaboration-backend if { path_beg -i /collaboration/ /editor/ }

После секций вида backend <…> добавим секцию решения:

backend collaboration-backend
    mode http
    http-request set-header Host directum-ubuntu.s7-office.site
    http-request set-header X-Forwarded-Host "directum-ubuntu.s7-office.site/editor" if { path_beg -i /editor/ }
    http-request set-header X-Forwarded-Host "directum-ubuntu.s7-office.site/collaboration" if { path_beg -i /collaboration/ }
    http-request set-header X-Forwarded-Proto https
    http-request set-header X-Real-Ip %[src]
    http-request set-header X-Original-Url %[path]
    http-request set-path '%[path,regsub("^/(editor|collaboration)/","/","i")]'
    server collaboration-service 192.168.27.227:8090 no-ssl

Где:

  • directum-ubuntu.s7-office.site — имя сервера с директум;
  • 192.168.27.227:8090 — адрес и порт сервера с онлайн редактором.

После сохранения изменений в конфигурационном файле перезапускаем хапрокси:

docker restart sungerohaproxy

Настройки коллаборации редактора

Уточнение

Файлы интеграции онлайн редактора доступны по ссылке ↗.

Переносим архив с файлами на сервер, создаем для него каталог, распаковываем и переходим в директорию:

mkdir /collab && unzip integration_r7_ofis_Directum.zip -d /collab/ && cd /collab/collab-build-v1.5.0

Открываем файл с переменными ./settings/tenant1.env на редактирование и меняем значения переменных:

CLIENT_HOST=directum-ubuntu.s7-office.site
 
CLIENT_PATH=/Client
EDITOR_PATH=/editor
SELF_PATH=/collaboration
 
CLIENT_USERNAME=Service User
CLIENT_PASSWORD=Password123!
 
GOOGLE_ANALYTICS_ID=GA_ID

Где:

  • CLIENT_HOST — имя, по которому доступен сервис директум;
  • CLIENT_PATH — можно найти на странице лаунчера/установщика «Общие настройки» переменная WEB_HOST_PATH_BASE;
  • CLIENT_PASSWORD — заданный при установке пароль.

В подпапке settings откройте конфигурационный файл settings.share.env.

Раскомментируйте в нем параметр JWT_SECRET и укажите в нем строку для генерации JWT-токенов длиной не менее 20 символов:

Рекомендуется сгенерировать строку с помощью любого специализированного сервиса генерации безопасных случайных паролей.

Открываем файл docker-compose.yml на редактирование и изменяем образ на Р7, приводим блок к виду:

documentserver:
  image: downloads.r7-office.ru:9010/r7office/documentserver-ee:2024.3.2.622
  depends_on:
    - postgres
    - redis
    - rabbit
    - saver
  volumes:
    - ./oo_data:/var/lib/r7-office/documentserver/App_Data
    - ./oo_logs:/var/log/r7-office
    - ./fonts:/usr/share/fonts
  env_file:
    - settings/system/oo.env
    - settings/settings.share.env
  logging:
    driver: "json-file"
    options:
      max-size: "10m"
      max-file: "5"
  hostname: documentserver
  container_name: meta_documentserver
  restart: on-failure

Также добавляем в файл дополнительно 2 блока:

collaboration_tenant1:
  logging:
    driver: "json-file"
    options:
      max-size: "10m"
      max-file: "5"
  image: ${DOCKER_REGISTRY}/collaboration/backend:${VERSION_TAG}
  env_file:
    - settings/system/collaboration.env
    - settings/tenant1.env
    - settings/settings.share.env
  environment:
    - CALLBACK_URL=http://collaboration_tenant1:3333/callback
    - INTERNAL_HAPROXY_URL=http://haproxy_tenant1/
  volumes:
    - ./db_tenant1/:/db/
  hostname: collaboration_tenant1
  restart: on-failure
  container_name: collaboration_tenant1
  depends_on:
    - saver
 
haproxy_tenant1:
  logging:
    driver: "json-file"
    options:
      max-size: "10m"
      max-file: "5"
  image: ${DOCKER_REGISTRY}/collaboration/haproxy:${VERSION_TAG}
  hostname: haproxy
  environment:
    - COLLABORATION_SERVICE_ADDRESS=collaboration_tenant1:3333
  ports:
    - "8090:80"
  restart: on-failure
  container_name: haproxy_tenant1
  depends_on:
    - documentserver
    - collaboration_tenant1
    - staticfiles

Итоговый файл docker-compose.yml должен выглядеть так ↗

Авторизуемся в корпоративном docker registry Р7:

docker login -u admin -p jgbHw224teWqf https://downloads.r7-office.ru:9010

Сохраняем и запускаем коллаборацию онлайн редактора:

docker-compose up -d

После успешного запуска всех контейнеров открываем настройки онлайн редактирования по кнопке:

Если все корректно запущено, откроется страница:

Далее, можно выполнить тестирование редактора.

Создаем документ по кнопке Создать, выбираем Прочее — Простой документ, создается карточка.

В карточку импортируем существующий или создаем новый документ и открываем его на редактирование:

Вынос онлайн редактора на другой сервер

Вариант выноса редактора на другой сервер

Для подключения внешнего редактора из контейнера хапрокси необходимо вытащить и примонтировать снаружи файл конфига:

docker cp haproxy_tenant1:/usr/local/etc/haproxy/haproxy.cfg ./tenant_haproxy.cfg

Добавляем монтирование файла в композ docker-compose.yml и переменные с именем и портом ДС:

haproxy_tenant1:
  logging:
    driver: "json-file"
    options:
      max-size: "10m"
      max-file: "5"
  image: ${DOCKER_REGISTRY}/collaboration/haproxy:${VERSION_TAG}
  hostname: haproxy
  environment:
    - COLLABORATION_SERVICE_ADDRESS=collaboration_tenant1:3333
    - DOCUMENTSERVER_ADDRESS=ds.test4.s7-office.site # здесь указываем доменное имя или ip ДС
    - DOCUMENTSERVER_PORT=443 # указываем порт ДС
  ports:
    - "8090:80"
    - "8095:8095" # вынос порта для просмотра статистики хапрокси (по дефолту УЗ и пароль - пустые строки)
  volumes:
    - ./tenant_haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg # файл конфига хапрокси
  restart: on-failure
  container_name: haproxy_tenant1
  depends_on:
    - documentserver
    - collaboration_tenant1
    - staticfiles

В файле конфига добавляем дополнительный сервер днс:

resolvers docker_dns
  nameserver dns1 127.0.0.11:53
  nameserver dns2 8.8.8.8:53 # пример на сервере google
  accepted_payload_size 8192 # allow larger DNS payloads

Если ДС доступен по протоколу https, то необходимо добавить в конце строки check ssl verify none:

server-template docserver 20 ${DOCUMENTSERVER_ADDRESS}:${DOCUMENTSERVER_PORT} check port ${DOCUMENTSERVER_PORT} resolvers docker_dns init-addr none check ssl verify none

Убедимся, что ДС доступен для хапрокси на странице статистики.

Была ли эта статья полезной?

Поделитесь пожалуйста своим мнением

      В статье есть ошибкиРекомендации не помоглиТекст трудно понятьСодержание статьи не соответствует заголовкуДругое