Подключение OnlyOffice к Nextcloud

UPD 2024.03.01: Добавил решение, чтобы можно было редактировать документы и на телефоне

UPD 2023.04.11: Добавил ниже решение про ошибку, что токен безопасности документа имеет неправильный формат

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

Но недостаточно установить приложение OnlyOffice и пользоваться всеми преимуществами облачного офиса. Нужно ещё установить и сам пакет офиса. Вариантов установки несколько, но самый простой для меня — это установка OnlyOffice как docker образ и подключение его к Nextcloud. Этим и займёмся.

Дано:

  • Сервер (в моём случае) Ubuntu Server 18.04, где установлен Nextcloud (IP: 192.168.0.2)
  • Сервер, где будет установлен OnlyOffice (у меня они стоят на разных машинах) (IP: 192.168.0.3)
  • Обратный прокси, с которого будет обеспечиваться доступ к Nextcloud’у и к OnlyOffice. Настройка прокси немного описывается здесь. (IP: 192.168.0.1)

Шаги.

  1. Ставим Docker
  2. Ставим OnlyOffice
  3. Связываем OnlyOffice и Nextcloud.

Шаг 1. Ставим Docker

Заходим пользователем на машину, где будет стоять OnlyOffice.

По инструкции с сайта ставим пакеты. Тут всё просто.

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common -y

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

Если вы хотите запускать docker не от рута, то добавьте пользователя в группу docker

sudo usermod -aG docker $USER

После этого надо завершить текущий сеанс и выполнить вход повторно. Затем выполните проверку работы Docker

docker run hello-world

В ответ должно выйти приветственное сообщение об успешном выполнении.

Шаг 2. Ставим OnlyOffice

Опять же, всё делаем на той же машине, где поставили Docker.

По понятной инструкции с сайта OnlyOffice подготавливаем и ставим образ.

Для начала создаём сертификаты для связи Nextcloud’а и OnlyOffice.

openssl req -x509 -newkey rsa:4096 -keyout onlyoffice.key -out onlyoffice.crt -nodes -days 3650 -subj '/CN=localhost'

Генерируем параметры Диффи-Хеллмана (DHE), обеспечивающие более высокую стойкость.

openssl dhparam -out dhparam.pem 2048

Создаём директорию для хранения сертификатов

sudo mkdir -p /app/onlyoffice/DocumentServer/data/certs

Перемещаем в неё свежесозданные самоподписанные сертификаты.

sudo mv onlyoffice.key onlyoffice.crt dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
sudo chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key

И запускаем контейнер в фоне, который будет всегда перезапускаться, если он был остановлен. Например, после перезагрузки сервера. Также пробросим в контейнер папку с нашими сертификатами.

docker run -it -d -p 443:443 --restart=always -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver

Сам образ OnlyOffice при запуске ищет в /var/www/onlyoffice/Data сертификаты с именами, которые были созданы выше.

Сервер с OnlyOffice готов и дальше его можно не трогать.

Шаг 3. Связываем OnlyOffice и Nextcloud.

Сначала переходим на прокси, где в файле настроек, описывающего доступ к облаку, вписываем директиву location для OnlyOffice.

location /edit/ {
    proxy_pass https://192.168.0.3/;
    proxy_http_version 1.1;
}

Потом переходим в веб-интерфейс Nextcloud, а затем в Приложения

В списке слева ищем раздел «Офис и текст» и ставим приложение ONLYOFFICE, нажав «Скачать и включить».

Теперь, когда установили приложение, переходим в настройки.

Слева находим пункт ONLYOFFICE

Переходим. В поле Адрес службы редактирования документов вводим адрес, где расположен наш сервер, путь для которого мы определили выше описывая директиву location для nginx. Иначе говоря, вводим в поле доменное имя, по которому расположен Nextcloud с путём к серверу документов. Получившийся путь должен быть примерно таким:

https://example.org/edit

Нажмите сохранить и интерфейс должен стать похожим на тот, что на скриншоте выше.

В настройках можете указать какой тип документов открывать.

Важное замечание

Для ещё большего удобства использования облака совместно с onlyoffice существует замечательное приложение для Android — ONLYOFFICE Documents. С помощью которого можно удобно редактировать таблицы, документы, презентации и т.д.

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

Однако после 5 версии OnlyOffice разработчики убрали эту замечательную функцию редактирования документа из облака на своём телефоне. И теперь появляется вот такое сообщение при попытке открыть документ.

Так вот, как оказалось, с пятой версии сервера разработчики сделали такую возможность только для платных версий OnlyOffice, но не для бесплатных.

Путём недолгих экспериментов с образами Docker, я выяснил, что последняя рабочая версия OnlyOffice — 5.4.2.46. А так как у нас тут контейнерные перевозки, то нет никаких проблем запускать образ докера с нужной версией OnlyOffice, которая равняется 5.4.2.46. Таким образом команда для запуска нормально работающей версии OnlyOffice такая:

docker run -it -d -p 443:443 --restart=always -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver:5.4.2.46

Собственно после обновления плагина к Nextcloud, старый сервер будет несовместим с ним. Так что или оставайтесь на старом плагине и старом облаке или переходите на тёмную сторону, где нет печенек.

UPD 2024.03.01 Путём нехитрых манипуляций с контейнерами можно пользоваться возможностью редактирования документа и с приложения на телефоне (за подсказку спасибо читателю). Поэтому ниже описано, что надо поменять.

UPD 2024.04.11: С версии 7.2 разработчики добавили необходимость указывать в поле секретного ключа на странице настроек плагина текстовый ключ для JWT-токена, так резко набирающего популярность в вебе. Чтобы получить ключ, зайдите на адрес вашего OnlyOffice сервера и там будет показана подсказка.

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

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

Также немного изменим образ, чтобы редактировать документы с телефонного приложения

Создайте директорию Docker рядом с файлом docker-compose.yml

В директории Docker создайте файл Dockerfile со следующим содержимым:

FROM onlyoffice/documentserver:${OO_VERSION:-latest}
RUN /bin/bash -c "sed -i 's/isSupportEditFeature=function(){return!1}/isSupportEditFeature=function(){return 1}/g'  /var/www/onlyoffice/documentserver/web-apps/apps/*/mobile/dist/js/app.js"

Далее создайте файл docker-compose.yml со следующим содержимым (не забывайте про отступы в виде пробелов, а не табов):

version: '3.8'
services:
  onlyoffice-documentserver:
  container_name: onlyoffice-documentserver-custom
  build:
    context: ./Docker
  image: onlyoffice/documentserver:${OO_VERSION:-latest}-custom
  environment:
    - JWT_ENABLED=${JWT_ENABLED:-false}
    - JWT_SECRET=${JWT_SECRET:-""}
    - JWT_HEADER=${JWT_HEADER:-""}
    - JWT_IN_BODY=${JWT_IN_BODY:-""}
  ports:
    - '443:443'
  restart: unless-stopped
  volumes:
    - /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data

А в файле .env рядом с docker-compose.yml укажем необходимые переменные, чтобы каждый раз не искать и не редактировать нужные поля в самом файле docker-compose.

Файл .env

OO_VERSION=7.3.3.50
JWT_ENABLED=true
JWT_SECRET=R8o1...B4apbpg8
JWT_HEADER=Authorization
JWT_IN_BODY=true

Теперь докер при запуске скомпилирует новый docker образ и будет смотреть содержимое файла .env, используя переменные из этого файла.

После можно запускать сервис через docker compose up -d. Спустя примерно минуту сервис будет доступен. Так же вводите свой токен в поле секретного ключа в веб-интерфейсе Nextcloud и будет вам счастье.

На этом вроде всё

Подписаться
Уведомить о
guest

3 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
ToXaNSK
ToXaNSK
4 месяцев назад

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

Monkey
Monkey
11 месяцев назад

а ведь это все можно развернуть на одной машине ))))