NextCloud — интеграция с OnlyOffice

В этой статье я покажу как к файловому серверу NextCloud подключить сервер редактирования документов OnlyOffice.

Введение

Я уже писал про установку облачного файлового сервера NextCloudздесь. В этой статье я покажу как установить на этот же сервер Onlyoffice (сервер редактирования документов).

Официальный сайт Onlyoffice — доступен здесь.

Официальные инструкции:

Перед чтением этой инструкции нужно понять некоторые вещи:

  1. Один сервер (Nginx) должен обрабатывать оба доменных имени:
    • имя по которому будет доступен файловый сервер NextCloud (в моём примере nc.sysadminium.ru),
    • и имя сервера документов OnlyOffice (в моём примере office.sysadminium.ru),
    • то есть у Nginx будет два конфига обрабатывающих разные URL (за это в конфигах отвечает параметр servername).
  2. Оба сайта должны работать по протоколу HTTPS, при этом:
    • клиентский компьютер без предупреждения безопасности браузера о неправильном сертификате, должен открывать оба сайта.
    • сам сервер должен открывать оба сайта по протоколу https (проверить можно так wget https://nc.sysadminium.ru и wget https://office.sysadminium.ru. Если скачается индексный файл, значит всё в порядке, а если ругнётся на сертификат то не в порядке).

Важно ещё понимать как происходит работа клиента с сервером документов:

Пользователь подключается к NextCloud по ссылке https://nc.sysadminium.ru. Там он открывает документ на редактирование, и в этот момент его перекидывает на https://office.sysadminium.ru. Для пользователя это происходит незаметно, но браузер реально подключается на другой адрес.

Раньше я думал что пользователь работает с Onlyoffice через NextCloud, но на самом деле он это делает напрямую.

Сам же OnlyOffice с NextCloud тоже общаются. И так как они установлены на один сервер, то делают они это не через интернет. Но при этом всё равно требуется протокол https и доверие к сертификатам.

Установка

Установка postgresql

Установим PostgreSQL и создадим базу данных для OnlyOffice:

# apt install -y postgresql
# su - postgres
$ psql
postgres=# CREATE DATABASE onlyoffice; 
postgres=# CREATE USER onlyoffice WITH password '12345';
postgres=# GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;
postgres=# \q
$ exit

Выше мы создали:

  • базу данных onlyoffice;
  • пользователя onlyoffice с паролем 12345;
  • и дали доступ созданному пользователю к созданной базе.

Ещё замечу, вы можете поменять только пароль, а вот имя пользователя и имя базы нужно использовать эти. NextCloud по умолчанию подключается именно к этой базе и с помощью этого пользователя.

Установка дополнительных пакетов

Установим дополнительные пакеты:

# apt install -y rabbitmq-server nginx-extras dirmngr

Установка OnlyOffice

Установим onlyoffice-documentserver:

# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
# echo "deb https://download.onlyoffice.com/repo/debian squeeze main" | tee /etc/apt/sources.list.d/onlyoffice.list
# apt update
# apt install -y onlyoffice-documentserver

Кстати, пакету onlyoffice-documentserver по зависимостям нужен ttf-mscorefonts-installer, а он доступен только в ветке contrib. Если при установке ругнётся на то что не может установить ttf-mscorefonts-installer, добавьте contrib в файл /etc/apt/sources.list — пример deb http://deb.debian.org/debian/ bookworm main contrib non-free-firmware.

В процессе установки у вас будет запрошен пароль от базы, которую мы делали в PostgreSQL для OnlyOffice.

После установки нам нужно получить сертификат для нашего имени сайта. Я буду получать бесплатный сертификат от Letsencryp. Для этого в конфиг /etc/nginx/conf.d/ds.conf добавим имя сайта в параметр server_name (этот параметр тоже добавим):

# nano /etc/nginx/conf.d/ds.conf
include /etc/nginx/includes/http-common.conf;
server {
  listen 0.0.0.0:80;
  listen [::]:80 default_server;
  server_name office.sysadminium.ru;
  server_tokens off;

  set $secure_link_secret SyJSmC4rORN9SKFEIWWC;
  include /etc/nginx/includes/ds-*.conf;
}

Получим сертификат:

# systemctl reload nginx.service
# certbot certonly --nginx

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

Теперь включим ssl, для этого заменим конфиг /etc/onlyoffice/documentserver/nginx/ds.conf на шаблон /etc/onlyoffice/documentserver/nginx/ds-ssl.conf.tmpl:

# cp -f /etc/onlyoffice/documentserver/nginx/ds-ssl.conf.tmpl /etc/onlyoffice/documentserver/nginx/ds.conf

И отредактируем конфиг, добавив в него имя сайта и пути к полученным сертификатам:

# nano /etc/nginx/conf.d/ds.conf
  # В первой секции (Normal HTTP host) нужно указать имя сервера:
  server_name onlyoffice.sysadminium.ru;
  # В секции (HTTPS host) нужно указать верные tls сертификаты:
  ssl_certificate /etc/letsencrypt/live/office.sysadminium.ru/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/office.sysadminium.ru/privkey.pem;

После проделанного, перезапустим Nginx:

# systemctl reload nginx.service

Теперь по адресу https://office.sysadminium.ru/welcome/ будет доступна страничка OnlyOffice.

Укажем секретный ключ OnlyOffice. Он нам понадобится в процессе интеграции с NextCloud. Для этого придумываем пароль и вставляем его в конфиг /etc/onlyoffice/documentserver/local.json:

# nano /etc/onlyoffice/documentserver/local.json
      "secret": {
        "inbox": {
          "string": "secret123"
        },
        "outbox": {
          "string": "secret123"
        },
        "session": {
          "string": "secret123"
        }

Перезапустим службу документсервера, проверим статус службы и состояние сервера:

# systemctl restart ds-docservice
# systemctl status ds-docservice

# documentserver-jwt-status.sh
Your JWT settings:
JWT enabled -  true
JWT secret  -  secret123
JWT header  -  Authorization

Дополнительные работы

Важно чтобы хост на котором запущен NextCloud и OnlyOffice обращался к этим службам по localhost. Для этого внесём в файл /etc/hosts две записи:

# nano /etc/hosts
127.0.0.1 office.sysadminium.ru
127.0.0.1 nc.sysadminium.ru

И у меня после установки всегда возникает непонятная ошибка с секретными ссылками. Возможно что-то не доделываю. Это приводит к ошибке при интеграции NextCloud с OnlyOffice. Это легко лечится с помощью следующих команд:

# cd /bin/
# bash documentserver-update-securelink.sh

Настройка интеграции

Переходим в web-интерфейс NextCloud, а дальше в меню «Приложения»:

Находим и устанавливаем приложение OnlyOffice:

Переходим в меню «Параметры сервера»:

Переходим в настройки OnlyOffice и указываем путь подключения к этому приложению. А также вставляем придуманный ранее секретный ключ для доступа к OnlyOffice:

В дополнительных настройках можете указать «Адрес ONLYOFFICE Docs для внутренних запросов сервера», у меня оно не отличается от внешнего имени. А в строке «Адрес сервера для внутренних запросов ONLYOFFICE Docs» я указал адрес подключения к NextCloud.

Если столкнетесь с ошибкой, можете выполнить на сервере:

# cd /bin/
# bash documentserver-update-securelink.sh

После подключения OnlyOffice вы сможете создавать и редактировать офисные документы:

Так выглядит редактор документов OnlyOffice:

Как видите, интерфейс очень похож на MS Word.


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

Другие мои статьи по серверу NextCloud доступны здесь.

Если понравилась статья, подпишись на мой канал в VK.

9 комментариев к “NextCloud — интеграция с OnlyOffice”

  1. Нифига не встаёт. Пишет «При попытке соединения возникла ошибка (Возникла ошибка в службе документов: Unknown error) (версия 7.5.1.23)». Хотя onlyoffice открывается по доменному имени

    Ответить
  2. Добрый день. Обе ваши статьи про nextcloud и onlyoffice это то что я давно искал. Большое спасибо.

    Единственное у меня возникла проблема, я новичок в линуксе. После выполнения всех действий описанных в статье, у меня по обоим адресам nc.example.ru и office.example.ru открывается onlyoffice. Потерялся nextcloud, как это исправить. Заранее благодарю

    Ответить
  3. Устранил прошлую проблему. Но есть еще одна проблема:
    При попытке соединения возникла ошибка (Возникла ошибка в службе документов: Unknown error) (версия 8.0.0.99)

    Ответить
    • А это выполняли?
      cd /bin/
      bash documentserver-update-securelink.sh

      Можете ещё проверить что оба сервиса работают:
      wget <адрес nextcloud>
      wget <адрес onlyoffice>
      Должны скачаться индексные файлы обоих сайтов.

      Ответить
      • Добрый день да выполнял. Файлы скачивались. проблема решилась когда включил тестовый режим. Не придал этому значение. Еще раз спасибо за статью

        Ответить
  4. Интересно как-то у тебя связка работает. Некстклауд на 443 порту и онлиофис на 443 порту. У меня например по твоей инструкции, при попытке открыть онлиофис/welcome открывается облако через недоверенный домен

    Ответить
  5. При открытии документа на мобильном телефоне, онлиофис даёт только прочитать его, но не изменять. Связано это с тем, что они теперь хотят денежку за своё творение, хоть он и якобы бесплатный

    Ответить

Оставьте комментарий