По дороге с облаками: интеграция пакета ONLYOFFICE в Nextcloud

f3brb67ydzr2sk7em6abzmcelay.png


Надеюсь, ни для кого не секрет, что вследствие определённых причин интернет начал сильно преображаться. Например, привычные сервисы становятся недоступны в силу блокировок или собственного решения компании о прекращении предоставления услуг в отдельных регионах.

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

Хранение и обмен документами:


Совместное создание и редактирование документов:
Пожалуй, разумным выбором в такой ситуации будет настройка собственных сервисов на VPS или локальном сервере, если есть необходимость ограничить распространение документов рамками внутренней сети. Как минимум в качестве резерва. Для обеспечения хранения и удобного обмена файлами отлично подходит Nextcloud, и думаю, многие уже об этом знают. Так же как и про то, что данное решение уже давно переросло функционал простого хранилища и превратилось в полноценную рабочую среду, способную организовать многие рабочие процессы на собственном локальном сервере или VPS.

Если вдруг нужна инструкция по установке Nextcloud, то подсмотреть, например, для FreeBSD можно здесь. Я же хочу уделить внимание возможности замены ставших для многих уже привычными, облачных сервисов совместной работы с офисными документами.

После длительных поисков и раздумий было решено остановить своё внимание на продукте ONLYOFFICE, являющемся автономным сервером и имеющем дополнительное приложение, позволяющее интегрировать создание/редактирование документов в рабочую среду Nextcloud.

И если с установкой приложения в Nextcloud всё предельно просто, оно устанавливается через внутренний магазин и из настроек для запуска нужно указать только адрес (где расположен сервер документов), то с настройкой серверной части есть несколько не очень очевидных нюансов, на разбор которых ушло приличное количество времени.

Здесь, пожалуй, стоить сделать небольшое отступление и пояснить суть моего выбора. Ведь есть же Nextcloud Office, и устанавливается он из встроенного магазина приложений буквально в несколько кликов. Но при выборе, на чём остановиться в постройке собственной рабочей среды, было одно немаловажное отличие этих двух продуктов, перевесившее в пользу именно ONLYOFFICE.

А разница тут довольно принципиальная. Если Nextcloud Office — это по своей сути тот же LibreOffice со своими плюсами / минусами и тараканами в плане совместимости с форматированием в документах, созданных с использованием MS Office, то пакет ONLYOFFICE — уже обещает максимальную совместимость по формату.

Приведу цитату с сайта разработчиков:

«ONLYOFFICE заточен на работу с *.docx, *.xlsx и *.pptx и обладает максимальной совместимостью с форматами MS Office. Это буквально означает, что все объекты, которые есть в редакторах ONLYOFFICE, были созданы в соответствии со стандартами MS Office (Это четыре тома и более семи тысяч страниц). Мы уже много сделали, но, конечно, много всего ещё предстоит добавить.»


За много лет накопилось огромное количество текстовой документации в формате *.doc/*.docx и не меньшее количество таблиц с данными и расчётами в формате *.xls/*.xlsx, заниматься переделыванием в новый формат совершенно не было никакого желания, собственно это и определило, на чём остановить свой выбор.

Что ж, пора приступать к увлекательному процессу установки и настройки. Не стоит забывать и тот момент, что описывается установка бесплатной версии «community edition», сервер которой, естественно, имеет свои ограничения, однако и такого функционала вполне достаточно для небольшого коллектива в 10–15 человек. Собственно, ограничение связано с максимальным количеством одновременных подключений (не более 20) и отсутствием мобильных веб-редакторов, а также технической поддержки.

Самая большая проблема, с которой я столкнулся в процессе установки, это то, что document server не совмещается на одном сервере с Nextcloud, если только специально не использовать Docker. В моём распоряжении виртуализация, и поэтому всё это было небольшой проблемой, но времени отняло немало, пока я понял это и нашёл подтверждение на форуме.

Для установки ONLYOFFICE Document server Community Edition был настроен виртуальный сервер на основе Ubuntu 20.04LTS. Разработчики рекомендуют использовать Debian, Ubuntu или любой другой совместимый дистрибутив с ядром не ниже версии 3.13.

И вот, собственно, пошаговое руководство по установке.

Первым делом обновляем данные о пакетах:

sudo apt-get update
sudo apt-get upgrade


Помимо прочих компонентов, для нормальной работы требуется наличие в системе работающего веб-сервера Nginx. Выполним для этого ряд действий:

sudo apt-get install nginx
sudo systemctl start nginx
sudo systemctl enable nginx


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

Устанавливаем совместимую с дистрибутивом базу данных PostgreSQL:

sudo apt-get install postgresql


После успешной установки необходимо создать саму базу данных и пользователя. Стоит обратить особое внимание, что имя пользователя базы данных обязательно должно быть — onlyoffice, а вот пароль (password) можно указать любой, главное — его не забыть. Он понадобится на этапе установки самого сервера.

sudo-i -u postgres psql -c "CREATE DATABASE onlyoffice;"
sudo -i -u postgres psql -c "CREATE USER onlyoffice WITH password 'password';"
sudo -i -u postgres psql -c "GRANT ALL priviteges ON DATABASE onlyoffice TO onlyoffice;"      


Устанавливаем брокер сообщений RabbitMQ:

sudo apt-get install rabbitmq-server


Устанавливаем дополнения веб-сервера nginx-extras:

sudo apt-get install nginx-extras


По умолчанию ONLYOFFICE работает с портом 80, и при желании его можно изменить (этот способ не подходит для настройки работы через HTTPS). Для смены порта нужно выполнить следующее:

echo onlyoffice-documentserver onlyoffice/ds-port select <номер_порта> | sudo debconf-set-selections       


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

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80--recv-keys CB2DE8E5

echo "deb https://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/source.list.d/onlyoffice.list         


Обновляем пакетный менеджер:

sudo apt-get update


Устанавливаем пакет стандартных шрифтов майкрософт:

sudo apt-get install ttf-mscorefonts-installer


И собственно сама установка ONLYOFFICE Documentserver’а. Вот при выполнении этого этапа и будет запрошен пароль доступа к создаваемой ранее базе данных.

sudo apt-get install onlyoffice-documentserveer


Собственно, на данном моменте уже можно проверить работоспособность. Зайдя в браузере по адресу настраиваемого сервера, мы должны увидеть следующее:

c4c6i512ja20oumjiib5fcct4qy.png

Здесь внизу есть кнопка [GO TO TEST EXAMPLE], по которой можно запустить тестовые документы и проверить работоспособность. Но для этого сначала нужно выполнить:

sudo supervisorctl start ds:example


И теперь можно убедиться в работоспособности сервера и оценить интерфейс.

ojy5tg2mhio3giftiybzbmdgxfe.png

gder2kuu2vtwf7tg0eyhqduyo0w.png

nvy2s2djgjx0xxwtqydvy_ygblw.png

Главное, после проверки работоспособности не забыть выключить тестовые файлы:

sudo supervisorctl stop ds:example


С установкой серверной части закончено, и пора приступать к настройке клиентской. Здесь всё просто. Заходим в Nextcloud (под аккаунтом администратора), открываем магазин приложений > аккаунт > приложения, в поиске вводим ONLYOFFICE и устанавливаем. После переходим в аккаунт > настройки и в левом меню в разделе «Параметры сервера» ищем пункт ONLYOFFICE.

_gwfgaiwwdfn2we6tiexjtv0ysu.png

Здесь в поле «Адрес» ONLYOFFICE Docs пишем адрес сервера, который настраивали на предыдущих шагах, и ниже нажимаем сохранить.

ggyqlkayjakk4dzg0fnnmrb2zwu.png

Видим в правом верхнем углу надпись: «Настройки были успешно обновлены (версия 7.0.1.37)», что свидетельствует об успешно установленном соединении с сервером. Помимо этого, ниже на странице появились и дополнительные настройки, позволяющие выбрать типы документов, доступные для редактирования.

m4cdokgwwjhr7r8if8nyiv6yrss.png

Выбираем нужные и ещё раз жмём сохранить. На этом основная настройка завершена. Теперь в меню создания нового файла появились дополнительные пункты для создания файлов текстового редактора / таблиц / презентаций.

Также дополнительно можно настроить работу сервера документов через HTTPS протокол. Здесь всё тоже довольно просто и лаконично.

Останавливаем веб-сервер Nginx:

sudosystemctl stop nginx


Далее нужно скопировать файл конфигурации из шаблона ds-ssl.conf.tmpl и внести ряд изменений:

sudo cd -f  /etc/onlyoffice/documentserver/nginx/ds-ssl.conf.tmpl /etc/onlyoffice/documentserver/nginx/ds-ssl.conf
sudo ln -f -s /etc/onlyoffice/documentserver/nginx/ds-ssl.conf /etc/nginx/conf.d/ds.conf          


Остаётся только отредактировать файл /etc/onlyoffice/documentserver/nginx/ds-ssl.conf заменив {{SSL_CERTIFICATE_PATH}} на путь к файлу SSL сертификата и {{SSL_KEY_PATH}} на путь к файлу приватного ключа SSL сертификата.

Для локального использования можно обойтись и самоподписанным сертификатом, хотя большого смысла в использовании HTTPS в таком случае нет. Но на всякий случай оставлю инструкцию о том, как это можно сделать, вдруг кому-то пригодится.

Для начала создадим приватный RSA ключ, который будет использоваться для создания сертификатов CSR или CRT:

cd /etc/ssl/
sudo opensslgenrsa-out ds.local.key 2048


В данном случае ds.local — имя, присвоенное серверу документов в локальной сети, по которому можно на него зайти через браузер с других компьютеров.

Теперь создадим сертификат CSR:

sudoopensslreq-new -key ds.local.key -out ds.local.csr


В процессе выполнения команды потребуется ввести ряд дополнительных данных, таких как код страны, страна, город, компания, расположение, доменное имя (в данном случае это и есть ds.local), адрес электронной почты.

И последним шагом создадим самоподписанный сертификат CRT:

sudoopenssl x509 -in ds.local.csr -out ds.local.crt -req-signkey ds.local.key -days1800


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

'onlyoffice' => array ('verify_peer_off' => TRUE, ),


Безопасности это, конечно, системе не добавит, но для локального использования вполне подойдёт. Также нужно скопировать сертификат на машину с установленным Nextcloud и импортировать его, используя консоль. Выполнять команду нужно в корневом каталоге, где расположены файлы Nextcloud.

sudo php occ security:certificates:import /path/to/ds.local.crt


Вот, собственно, и все действия необходимые для базовой локальной настройки интеграции пакета ONLYOFFICE в Nextcloud.

Сказать, что это было сложно? Нет, всё достаточно просто, когда знаешь, что делаешь. А вот полезность полученного результата сложно недооценить как для использования в работе небольшого коллектива, так и в домашнем применении. Единственное, что осталось нерешённым, так это то, как совместить оба пакета на одном сервере?

Если вдруг кто-то знает решение, то очень интересно было бы узнать, как это осуществить. В сети я нашёл только информацию о том, что так можно делать только на разных серверах.

НЛО прилетело и оставило здесь промокод для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

© Habrahabr.ru