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)
Шаги.
- Ставим Docker
- Ставим OnlyOffice
- Связываем 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 и будет вам счастье.
На этом вроде всё
Здравствуйте.
Вот честно не понимаю, что мне надо сделать для исполнения «UPD 2024.03.01» и «UPD 2024.04.11». Так как у меня Synology DS920+.
Как скрыть страницу в прикрепленном изображении или чтобы она сменилась на иную правильную, так как при открытии по адресу страницы она настораживает.
Что бы редактировать документ с мобильного устройства надо поставить в свойствах браузера отображать версию для ПК. Изменится размер, но редактирование заработает.
а ведь это все можно развернуть на одной машине ))))
Да, конечно. Трудностей особых не возникнет, только с сертификатами будут небольшие. Это просто как общий шаблон действий