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

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

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


Совместное создание и редактирование документов:


Пожалуй, разумным выбором в такой ситуации будет настройка собственных сервисов на 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 privileges 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-documentserver

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



Здесь внизу есть кнопка [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:

sudo systemctl stop nginx

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

sudo cp -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 openssl genrsa-out ds.local.key 2048

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

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

sudo openssl req-new -key ds.local.key -out ds.local.csr

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

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

sudo openssl 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.

Комментарии (22)


  1. LuchS-lynx
    04.04.2022 11:43

    На скриншотах видно что могут быть открыты файлы с макросами, а вот как с поддержкой самих макросов как в облаке, так и по Вашему ПО на обычных ПК под Linux? Есть ли поддержка/литература/примеры по переводу макросов на Вашу базу?


    1. 1shaman Автор
      04.04.2022 13:30

      В ONLYOFFICE используется другой скриптовый язык JavaScript вместо VBA.
      Пример конвертации макросов можно посмотреть здесь.
      Описание работы с макросами.


      1. LuchS-lynx
        04.04.2022 14:08
        +2

        Я понимаю что у Вас не VBA, однако мне надо будет переписать макрос, для чего нужно будет реализовать следующее:

        создать кнопку и повесить на нее макрос. Макросом засечь время начала операции, открыть макросом шаблон, скопировать в него лист, лист пропарсить в заданном диапазоне (кстати в Вашем офисе можно обычной формулой получить диапазон на листе выводимый на печать?) на тему текстовых маркеров, заменить маркеры нужными значениями, сохранить лист в отдельном файле, удалить лист, засечь время конца операции и вычислить разницу.
        Возможно ли это реализовать на базе ONLYOFFICE бесплатной редакции или для этого придется покупать специализированную? Если все же такой макрос реализовать будет можно, то будет ли он работать при интеграции ONLYOFFICE в Nextcloud?


        Где можно поинтересоваться справочником по командам и синтаксису JS для Вашего офиса и есть ли какое-либо комьюнити, где можно будет задать вопросы?

        Я планирую написать, неспешно, статью-сравнения нескольких офисов под Linux по переносу макросов VBA на другие офисные пакеты.

        Спасибо.


        1. dikey_0ficial
          05.04.2022 10:09
          +1

          это не их офис) статья опубликована в блоге FirstVPS, а не onlyoffice.

          По макросам — нашёл официальную документацию: https://api.onlyoffice.com/plugin/macros


  1. arozhankov
    04.04.2022 11:48
    +1

    В моем опыте встретился странный глюк/фича? с отменой изменений в документе при его групповом редактировании.

    Например, два человека редактируют текстовый документ через браузер. У обоих неактивна отмена действий (ctrl+Z). Вообще.

    Но эта функция нормально работает, когда документ редактирует один человек (больше никого нет в документе).

    Не встречалась ли такая особенность вам? Как с ней бороться?


    1. muromdx
      04.04.2022 14:09

      У меня же при совместном редактировании кнопка отмены действия активна, но при ее нажатии система предлагает включить «строгий режим», когда изменения не сохраняются автоматически. Когда редактирую один, все работает нормально.


      1. arozhankov
        04.04.2022 16:44

        Да - строгий режим это вариант. Но:

        1. После сохранения отмена опять отсутствует.

        2. Гугл Документы очень избаловали ????


  1. 13werwolf13
    04.04.2022 11:51

    есть мнение что colabora работает лучше onlyoffice (покрайней мере в плане кол-ва одновременного онлайна как вообще на сервере так и в пределах одной открытой доки), я уже давно хочу сравнить но руки не доходят. может топикстартер попробует и отпишется..


    1. ya_penek
      04.04.2022 16:29

      По моим ощущениям, collabora лучше работает на маломощных устройствах, потому что там меньше кода выполняется в браузере и больше на сервере. Но это одновременно и минус для обладателей маломощных серверов.


      1. SerjV
        05.04.2022 01:16

        Так и есть - в collabora обработка документа производится процессом на сервере, в браузере по сути "тонкий" клиент. В onlyoffice наоборот - клиент "толстый" (и даже есть возможность поставить его в виде десктопного приложения, в т.ч. для работы с сервером - в многопользовательском режиме будет работать точно так же, как и через браузер, причём может быть даже с некстклаудом тоже, не помню уже), а на сервере по сути лишь диспетчер многопользовательской работы с документом, поэтому нагрузка на процессор-память сервера меньше.

        Раньше в Nextcloud с Onlyoffice был баг - "закрывался и окончательно сохранялся" документ на сервере только после того, как его закрыл последний редактирующий его клиент. А если такой клиент случайно отвалился из-за проблем со связью (документ-то загружен в "толстого" клиента, напоминаю) - все изменения могли быть утеряны. С Collabora этого не происходило в таких ситуациях именно потому, что "редактор" фактически запущен на сервере. Сейчас по-моему пофиксили, но надо контролировать при очередных обновлениях...


  1. Am6er
    04.04.2022 12:10

    Проверьте повторно все команды консоли. Вот часть из них:

    sudo-i -u postgres psql -c "CREATE DATABASE onlyoffice;"

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


    1. 1shaman Автор
      04.04.2022 12:36

      спасибо, уже заметил, поправил. если что — можно (нужно) в личку слать, чтобы комменты не захламлять


  1. VecH
    04.04.2022 13:05

    Пробовал полгода-год назад, столкнулся с проблемой, мобильный клиент NextCloud не открывает документы, сервер OnlyOffice требует лицензию

    Установил Collabora


  1. Jipok
    04.04.2022 19:58

    А не проще было через docker-compose поднять?


    1. SerjV
      05.04.2022 01:22
      +1

      Ну если на то пошло - то есть вообще готовый скрипт на гитхабе, который и через докера сервер онлиофиса поставит, и в веб-сервере для него виртуальный хост сконфигурирует, и даже приложение в некстклауд добавит, надо только скрипт запустить и ответить на задаваемые им вопросы. Этот скрипт даже входит в состав одного из готовых решений "некстклауд в виде виртуальной машины на убунту", рекомендуемых самим некстклаудом в разделе "как нас установить" ;)


  1. SerjV
    05.04.2022 01:29

    А вот такой интересный вопрос из разряда "а блокировки в webdav в некстклауд уже завезли? а то в owncloud вроде давно завозили, а разрабочики nextcloud сказали, что делать их не хотим - приведите нам жирного платного клиента - тогда может за полгода и сделаем (причём народ им писал, что клиенту проще на другое решение уйти, чем на это соглашаться)":

    - открываем файл в онлайн-редактирование у пяти человек, а шестой его в это время просто взяли и прибил (ну или заменил новой версией), что произойдёт?..

    Кто последним сохранился (те пятеро или этот один) - тот и выиграл, или у пятерых внезапно всё поломается, или после окончания совместного редактирования пятеро обнаружат, что их правки ушли куда-то в корзину, или еще чего случится?..


  1. avelor
    05.04.2022 01:43

    Угу, как выше отписали - онлиофис лихо шуршит в докере, что например позволяет также лихо его обновлять. Ставить его пакетом - ну такое:)

    Есть нюансы - бесплатный онлик лимитирован по количеству одновременно открытых доков на редактирование.

    Платный - если взять «коробку» с коммунити-сервером - выдаёт сюрпризы по подсчёту лицензий (отдельно считаются пользователи онлика, отдельно некстклауда и отдельно - с доступом по ссылке, которые открывали док на редактирование за последние 30 дней). Ну и взять его в РФ может быть затруднительно, но благо примерно тоже самое продаётся в РФ под брендом «р7 офис».

    Также должен отметить, что некстклауд помимо онлиофиса и коллаборы лихо интегрируется с ms office online server, возможно кому-то зайдёт больше (по функционалу он проигрывает, но если функционала хватает - намного меньше траблов и багов в процессе использования)

    Ну и да, коллабора изкаропки тоже ограничена по количеству открытых доков, лечится сборкой руками:)


  1. Demonium
    05.04.2022 16:01

    sudo -i -u postgres psql -c "GRANT ALL priviteges ON DATABASE onlyoffice TO onlyoffice;"
    Опечатка в команде: priviteges \ privileges


    1. 1shaman Автор
      06.04.2022 21:35

      благодарю, поправил


  1. Demonium
    05.04.2022 16:50

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

    Опечатка в команде: cd -f ... \ cp -f ...


    1. 1shaman Автор
      06.04.2022 21:35

      благодарю, поправил


      1. Demonium
        07.04.2022 00:08

        Спасибо за статью!

        Рабочий onlyoffice пеерехал из kvm + docker на lxc.