Установка и настройка OnlyOffice Server на Ubuntu, а также интеграция его с ownCloud или Nextcloud

Используемые термины: Nextcloud, Ubuntu.

OnlyOffice является платформой для работы с офисными документами, при этом, поддерживается совместная одновременная работа с другими пользователями. Сервис позиционируется как облачный, но есть возможность установки на собственное оборудование. Разработчик предлагает разные варианты развертывания от docker до ручной установки компонентов. Мы рассмотрим последний, а также настроим интеграцию с ownCloud/Nextcloud. Подразумевается, что у нас уже установлен и настроен облачный сервис хранения файлов (ссылки на соответствующие инструкции приведены в конце инструкции).

Установка компонентов для 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.

Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *