Используемые термины: Nextcloud, Ubuntu.
OnlyOffice является платформой для работы с офисными документами, при этом, поддерживается совместная одновременная работа с другими пользователями. Сервис позиционируется как облачный, но есть возможность установки на собственное оборудование. Разработчик предлагает разные варианты развертывания от docker до ручной установки компонентов. Мы рассмотрим последний, а также настроим интеграцию с ownCloud/Nextcloud. Подразумевается, что у нас уже установлен и настроен облачный сервис хранения файлов (ссылки на соответствующие инструкции приведены в конце инструкции).
Необходимые компоненты для работы OnlyOffice
Установка и настройка OnlyOffice
Настройка интеграции с облачным сервисом
Обратное проксирование через NGINX
Читайте также
Установка компонентов для OnlyOffice
Для работы OnlyOffice необходимы сервер баз данных PostgreSQL и брокер сообщений rabbitmq. В документации на официальном сайте можно найти список системных требований для развертывания приложения. Особое внимание стоит обратить на версии программных компонентов.
PostgreSQL
На момент обновления инструкции, для OnlyOffice требовался PostgreSQL версии 12.9 и выше. Подключаем репозиторий — для этого установим curl:
apt update
apt install curl
Загрузим gpg-ключ репозитория:
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg —dearmor -o /etc/apt/trusted.gpg.d/postgresql-keyring.gpg
И подключим сам репозиторий:
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/postgresql.list
Обновляем кэш пакетов:
apt update
Устанавливаем postgresql:
apt install postgresql-15
* в нашем примере будет установлен postgresql версии 15.
Зайдем в sql-оболочку под пользователем posgrtes:
sudo -u postgres psql
Создадим пользователя onlyoffice и одноименную базу данных:
=# CREATE USER onlyoffice WITH password 'onlyoffice123';
=# CREATE DATABASE onlyoffice OWNER onlyoffice;
=# quit
* в нашем примере мы создадим базу данных onlyoffice и одноименного пользователя с полными к ней привилегиями. В качестве пароля пользователя используем onlyoffice123.
RabbitMQ
Для его установки достаточно ввести одну команду:
apt install rabbitmq-server
Установка и настройка OnlyOffice
Установим ключ, необходимый для проверки подписей пакетов в репозитории OnlyOffice:
curl -fsSL https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE | gpg —dearmor -o /etc/apt/trusted.gpg.d/onlyoffice.gpg
Добавим сам репозиторий:
echo "deb https://download.onlyoffice.com/repo/debian squeeze main" > /etc/apt/sources.list.d/onlyoffice.list
Обновим кэш пакетов:
apt update
Установим набор шрифтов Microsoft:
apt install ttf-mscorefonts-installer
* установщик попросит принять лицензионное соглашение — отвечаем Yes.
Устанавливаем сам onlyoffice сервер:
apt install onlyoffice-documentserver
Установщик запросит пароль для подключения к базе данных — вводим тот, что указали при создании пользователя (onlyoffice123).
Загрузим в базу данных начальный набор данных:
psql -h localhost -U onlyoffice -W -d onlyoffice -f /var/www/onlyoffice/documentserver/server/schema/postgresql/createdb.sql
* также при запросе пароля вводим тот, что указали при создании пользователя (в нашем примере onlyoffice123).
Также будет установлен веб-сервер nginx с базовой конфигурацией для запуска onlyoffice. Нам необходимо внести правки:
vi /etc/nginx/conf.d/ds.conf
Приводим опции к виду:
…
listen 0.0.0.0:443 ssl;
server_tokens off;
server_name onlyoffice.dmosk.ru;
ssl_certificate /etc/ssl/onlyoffice/cert.crt;
ssl_certificate_key /etc/ssl/onlyoffice/cert.key;
…
* где:
- listen — адрес и порт, на которых слушает веб-сервер. По умолчанию он работает на порту 80, но для интеграции с Nextcloud нам нужен https. При желании, мы можем изменить порт на нестандартный.
- server_name — доменное имя, для которого данная настройка будет работать. Вам необходимо заменить имя на свое. Она позволит разграничить запросы к nginx — только при обращении по имени onlyoffice.dmosk.ru запросы пойдут к OnlyOffice.
- ssl_certificate — путь до сертификата, открытого ключа.
- ssl_certificate_key — путь до сертификата, закрытого ключа.
Создадим каталог для хранения сертификатов:
mkdir /etc/ssl/onlyoffice
И сгенерируем их:
openssl req -x509 -days 1461 -nodes -newkey rsa:2048 -sha256 -keyout /etc/ssl/onlyoffice/cert.key -out /etc/ssl/onlyoffice/cert.crt -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=onlyoffice.dmosk.ru"
* в данном примере мы получим сертификат на доменное имя onlyoffice.dmosk.ru.
Для тестовых целей нам достаточно сформировать самоподписанный сертификат. Но для продуктивной среды лучше использовать внутренний сертификационный центр или Let's Encrypt.
Проверяем корректность конфигурации и перезапускаем nginx:
nginx -t && nginx -s reload
Откроем конфигурационный файл:
vi /etc/onlyoffice/documentserver/default.json
Приведем опцию rejectUnauthorized к виду:
"rejectUnauthorized": false
* данная опция позволяет использовать не валидный сертификат (в нашем случае, самоподписанный).
Обратите внимание, что отключение проверки сертификата сработает для взаимодействия Nextcloud/Owncloud с OnlyOffice. Однако, браузер пользователя, который также отправляет запросы к офису не будет работать корректно. Будет намного проще, если мы настроим систему с использованием правильного сертификата — купленного или полученого от доверенного центра сертификации.
Перезапускаем docservice:
systemctl restart ds-docservice
Сервис OnlyOffice должен иметь возможность ответить Nextcloud, обратившись к нему по доменному имени. На практике это значит, что если у нас последнее разрешается во внешний IP, который находится за одним и тем же NAT с OnlyOffice, наш облачный офис работать не будет. Чтобы решить проблему, отредактируем файл hosts:
vi /etc/hosts
127.0.0.1 localhost cloud.dmosk.ru
* предположим, что мой nextcloud работает на доменном имени cloud.dmosk.ru и находится на одном сервере с OnlyOffice. Таким образом мы указываем, что cloud.dmosk.ru — это 127.0.0.1. Если у вас это разные серверы, которые находятся в одной локальной сети, необходимо будет указать внутренний адрес.
Проверить ответ от onlyoffice можно командой:
curl -k https://127.0.0.1/healthcheck && echo ""
* где 127.0.0.1 будет адресом onlyoffice (в моем случае, это локальный сервер).
Данная должна вернуть:
true
Офис онлайн готов к работе.
Настройка ownCloud / Nextcloud
Посмотрим настройки аутентификации при подключении к onlyoffice по стандарту JWT (JSON Web Token):
documentserver-jwt-status.sh
Мы получим что-то на подобие:
Your JWT settings:
JWT enabled — true
JWT secret — P2NrBjZTTpF5gesWVZ2Z9I3VxYrvRYvN
JWT header — Authorization
Фиксируем значение для JWT secret — оно нам понадобиться позже.
Переходим в каталог, где развернуто облачное приложение и устанавливаем приложение onlyoffice. Для ownCloud или Nextcloud это будут разные действия.
Пути до каталога портала могут отличаться в вашей инфраструктуре.
а) Для ownCloud:
cd /var/www/owncloud
sudo -u www-data php ./occ market:install onlyoffice
sudo -u www-data php ./occ app:enable onlyoffice
* где /var/www/owncloud — каталог, где развернут owncloud.
б) Для nextcloud:
cd /var/www/nextcloud
sudo -u www-data php ./occ app:enable onlyoffice
* где /var/www/nextcloud — каталог, где развернут owncloud.
После устрановки приложения можно настраивать привязку.
Переходим в настройки на веб-панели:

* примеры скриншотов для Nextcloud (процесс для ownCloud схож).
В меню слева кликаем по ONLYOFFICE:

Вносим настройки:

* где:
- Адрес ONLYOFFICE Docs — внешний адрес сервера с OnlyOffice.
- Секретный ключ — ключ, который был сгенерирован при установке офиса. Его мы посмотрели в начале раздела.
- Адрес ONLYOFFICE Docs для внутренних запросов сервера — внутренний адрес OnlyOffice сервера. В нашем случае это тот же сервер, что и Nextcloud, поэтому указываем адрес локальной петли.
- Адрес сервера для внутренних запросов ONLYOFFICE Docs — внешний адрес сервера Nextcloud.
Также мы используем самоподписанный сертификат, поэтому ставим галочку Отключить проверку сертификата (небезопасно).
Кликаем по Сохранить — ниже появятся дополнительные настройки, который мы можем задействовать при работе с OnlyOffice:

Настройка завершена. Можно попробовать открыть офисный документ.
Обратный прокси NGINX
Иногда есть необходимость расположить OnlyOffice за http прокси. Приведу пример конфигурации для nginx:
map $http_x_forwarded_proto $proxy_x_forwarded_proto {
default $http_x_forwarded_proto;
"" $scheme;
}
map $http_upgrade $proxy_connection {
default upgrade;
"" close;
}
server {
listen 80;
server_name onlyoffice.dmosk.ru;
location ~ /.well-known/acme-challenge {
root /usr/share/nginx/html;
allow all;
}
if ($uri !~ /.well-known/acme-challenge){
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name onlyoffice.dmosk.ru;
ssl_certificate /etc/letsencrypt/live/onlyoffice.dmosk.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/onlyoffice.dmosk.ru/privkey.pem;
location / {
proxy_pass https://192.168.1.15;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-Host $http_host;
client_max_body_size 1G;
}
}
* в данном примере:
- server_name — имя хоста, который принимает запросы на onlyoffice.
- ssl_certificate / ssl_certificate_key — пути к открытому и закрытому ключам сертификата.
- proxy_pass — на какой внутренний сервер перенаправлять запросы.
Перечитываем конфигурацию для применения настройки:
nginx -t && nginx -s reload
Читайте также
Данные инструкции могут быть также полезны:
1. Настройка сервера ownCloud + Apache на Ubuntu.
2. Установка и настройка Nextcloud + NGINX на Ubuntu.
3. Установка и настройка Nextcloud + Apache на Ubuntu.
4. Установка и настройка локального сервера Collabora и его связка с Nextcloud/Owncloud.

Добавить комментарий