Содержание
Дополнительная информация по установке/настройке 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
- Открываем страницу в браузере http://ip_адрес_сервера:15672
- Вводим guest/guest логин и пароль.
- На открывшейся странице создайте пользователя с правами администратора. Для этого перейдите на вкладку «Admin» и в разделе «Add a user» заполните поля Username, Password – логин и пароль администратора RabbitMQ. Права администратора в дальнейшем нужны для создания пользователя, от имени которого система Directum RX будет подключаться к RabbitMQ.
- В поле Tags выберите значение Admin и нажмите на кнопку Add user.
- Создайте виртуальный хост RabbitMQ для работы с Directum RX. Для этого на вкладке «Admin» на панели справа перейдите в группу Virtual Hosts и в разделе «Add a new virtual host» в поле Name заполните название хоста, например, rxhost. Затем нажмите на кнопку Add virtual host.
- На панели справа перейдите в группу Users.
- Создайте пользователя, от имени которого система Directum RX сможет подключаться к RabbitMQ. Для этого на вкладке «Admin» в разделе «Add a user» заполните поля Username, Password – логин и пароль пользователя. Затем в поле Tags выберите значение None и нажмите на кнопку Add user.
- Выберите созданного пользователя в списке, затем в разделе «Permissions» в поле Virtual Host выберите созданный виртуальный хост и нажмите на кнопку Set permission.
- В разделе «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
Убедимся, что ДС доступен для хапрокси на странице статистики.