По дороге с облаками: интеграция пакета ONLYOFFICE в Nextcloud
Надеюсь, ни для кого не секрет, что вследствие определённых причин интернет начал сильно преображаться. Например, привычные сервисы становятся недоступны в силу блокировок или собственного решения компании о прекращении предоставления услуг в отдельных регионах.
На данный момент предлагаю остановить своё внимание на организации доступного хранилища и работе с онлайн-документами. Что обычно для этого используется пользователями?
Хранение и обмен документами:
Совместное создание и редактирование документов:
Пожалуй, разумным выбором в такой ситуации будет настройка собственных сервисов на 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
Собственно, на данном моменте уже можно проверить работоспособность. Зайдя в браузере по адресу настраиваемого сервера, мы должны увидеть следующее:
Здесь внизу есть кнопка [GO TO TEST EXAMPLE], по которой можно запустить тестовые документы и проверить работоспособность. Но для этого сначала нужно выполнить:
sudo supervisorctl start ds:example
И теперь можно убедиться в работоспособности сервера и оценить интерфейс.
Главное, после проверки работоспособности не забыть выключить тестовые файлы:
sudo supervisorctl stop ds:example
С установкой серверной части закончено, и пора приступать к настройке клиентской. Здесь всё просто. Заходим в Nextcloud (под аккаунтом администратора), открываем магазин приложений > аккаунт > приложения, в поиске вводим ONLYOFFICE и устанавливаем. После переходим в аккаунт > настройки и в левом меню в разделе «Параметры сервера» ищем пункт ONLYOFFICE.
Здесь в поле «Адрес» ONLYOFFICE Docs пишем адрес сервера, который настраивали на предыдущих шагах, и ниже нажимаем сохранить.
Видим в правом верхнем углу надпись: «Настройки были успешно обновлены (версия 7.0.1.37)», что свидетельствует об успешно установленном соединении с сервером. Помимо этого, ниже на странице появились и дополнительные настройки, позволяющие выбрать типы документов, доступные для редактирования.
Выбираем нужные и ещё раз жмём сохранить. На этом основная настройка завершена. Теперь в меню создания нового файла появились дополнительные пункты для создания файлов текстового редактора / таблиц / презентаций.
Также дополнительно можно настроить работу сервера документов через 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.