Инструкция по интеграции OnlyOffice с NextCloud на Ubuntu

Nextcloud — это облачное хранилище, которое вы можете хостить самостоятельно, а OnlyOffice представляет собой сервер для работы с офисными документами с аналогичными возможностями. В данном руководстве объясняется, как соединить OnlyOffice с Nextcloud, чтобы у вас появилась возможность редактировать офисные файлы (такие как DOCX, XLSX, PPTX и другие) непосредственно через веб-интерфейс Nextcloud.

Характеристики приложения, позволяющего интегрировать OnlyOffice с Nextcloud.

  • Онлайн-редактор текста предлагает все функции, которые имеются у настольных программ.
  • Полная точность при отображении, конвертации, печати и организации страниц.
  • Предоставляет возможность вставлять ссылки, таблицы, диаграммы, изображения, автофигуры, формулы и текстовые объекты, а также управлять ими и формировать списки с маркировкой или нумерацией.
  • Совместная работа с вашей командой в режиме реального времени: изменения могут отображаться немедленно или только после сохранения. Применяйте функцию комментирования и встроенный чат для анализа и мониторинга правок.
  • Предоставляет возможность редактировать и сохранять файлы форматов DOCX, XLSX, PPTX и TXT. Кроме того, вы можете сохранить документ в различных других форматах, включая ODT, ODS, ODP, DOC, XLS, PPT, PPS, EPUB, RTF, HTML и HTM.
  • Полностью поддерживает форматы Office Open XML:.docx,.xlsx,.pptx.
  • Функция автоматического сохранения ваших документов, чтобы вы могли избежать потери работы.
  • Поддерживает латиницу, а также символы для китайского, японского и корейского языков.

Начальные условия

Сервер документации OnlyOffice нуждается как минимум в 2 ядрах процессора и 2 ГБ оперативной памяти. Для оптимальной работы с Nextcloud рекомендуется использовать сервер с 4 ядрами и 4 ГБ ОЗУ. Вы можете приобрести производительный VPS от Contabo по весьма доступной цене. Если у вас много пользователей, стоит подумать об увеличении ресурсов сервера.

У компании Contabo дата-центры находятся исключительно в Германии. Если вам требуется VPS, расположенный в США, рекомендую рассмотреть Turnkey Internet, который предлагает VPS с четырьмя ядрами процессора и 8 ГБ оперативной памяти всего за 9,99 долларов в месяц.

Для того чтобы следовать этому руководству, вам необходим функционирующий сервер Nextcloud. Если вы еще не настроили его, ознакомьтесь с данной статьей, чтобы сначала выполнить установку сервера Nextcloud.

  • Установка NextCloud на Ubuntu 18.04 с использованием Nginx (стек LEMP)

После этого ознакомьтесь с инструкциями по интеграции OnlyOffice и Nextcloud. Сервера документов OnlyOffice и Nextcloud могут быть размещены на отдельных хостах. Приступим.

Инсталляция сервера документов ONLYOFFICE на Ubuntu

Сервер документов OnlyOffice работает на основе PostgreSQL, Node.js, Redis, RabbitMQ и Nginx. Описанные далее шаги были протестированы на Ubuntu 18.04, однако они также подходят для других дистрибутивов Linux из семейства Debian.

Установка PostgreSQL из репозитория Ubuntu.

sudo apt install postgresql

После этого необходимо создать базу данных onlyoffice.

sudo - i - u postgres psql - c "CREATE DATABASE onlyoffice;"

Создайте учетную запись пользователя onlyoffice.

sudo - i - u postgres psql - c "CREATE USER onlyoffice WITH password 'onlyoffice';"

sudo - i - u postgres psql - c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"

Обратите внимание: логин и пароль должны быть onlyoffice.

Установка NodeJS из официального источника.

Сервер документов OnlyOffice требует для работы Node.js версии 8.12.0 или выше, однако в репозитории Ubuntu доступна только устаревшая версия. Поэтому необходимо установить последнюю LTS-версию Node.js (12.13.1) из стороннего репозитория.

Добавьте репозиторий для Node.js.

curl - sL https://deb. nodesource.com/setup_12.x | sudo - E bash -

sudo apt install nodejs - y

Убедитесь, что у вас установлена нужная версия Node.js.

node - v

v12.13.1

Настройка сервера Redis и RabbitMQ.

sudo apt install redis-server rabbitmq-server

Убедитесь в их состоянии.

Читайте также:  Обновление PHP до версии 7 на сервере с Linux (Ubuntu и Debian)

systemctl status redis-server systemctl status rabbitmq-server

Обязательно убедитесь, что они функционируют (работают). Если не удалось запустить rabbitmq-server, причиной обычно является нехватка памяти на компьютере или неверное имя хоста. Сервер Redis принимает подключения на 127.0.0.1:6379, а RabbitMQ – на 0.0.0.0:25672 и 0.0.0.0:4369.

Настройка сервера для работы с документами OnlyOffice

Добавьте репозиторий OnlyOffice, используя следующую команду.

echo "deb http://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources. list. d/onlyoffice. list

Импортируйте открытый ключ OnlyOffice.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5

Обновите локальный индекс пакетов и выполните установку сервера документов OnlyOffice. Учтите, что при установке пакета onlyoffice-documentserver будет автоматически установлен nginx-extras в качестве зависимости. Если на сервере уже работает веб-сервер Apache, его необходимо сначала остановить.

sudo apt update sudo apt install onlyoffice-documentserver

При установке системы вам будет предложено ввести пароль PostgreSQL для onlyoffice. Укажите «onlyoffice» (без кавычек).

Установка сервера документов OnlyOffice

Для установки основных шрифтов TrueType от Microsoft вам потребуется согласиться с условиями лицензии этой компании.

Установите сервер документов OnlyOffice на Ubuntu 16.04.

Конфигурация сервера Nginx будет размещена по пути /etc/nginx/conf.d/ds.conf.(На самом деле это символическая ссылка на файл /etc/onlyoffice/documentserver/nginx/ds.conf.) OnlyOffice Document Server представляет собой веб-приложение, разработанное на платформе nodejs, а Nginx функционирует как обратный прокси-сервер. Корневая директория веб-сервера находится по адресу /var/www/onlyoffice/documentserver/.

По окончании установки введите публичный IP-адрес вашего сервера в адресной строке браузера, после чего должно появиться сообщение «Document Server is running».

Документальный сервер OnlyOffice

Для проверки номера версии серверной части документов воспользуйтесь данной командой.

apt search onlyoffice-documentserver

onlyoffice-documentserver/squeeze, now 5.4.1-39 amd64 [установлено] онлайн-просмотрщики и редакторы для текстовых, табличных и презентационных файлов.

Активировать HTTPS для серверной стороны документов.

Чтобы соединить NextCloud с сервером документов OnlyOffice, необходимо, чтобы последний функционировал через HTTPS. Это значит, что как сервер Nextcloud, так и браузеры пользователей должны иметь доступ к серверу документов. В дальнейшем представлены инструкции по получению и установке TLS-сертификата от Let’s Encrypt.

В первую очередь необходимо внести изменения в конфигурационный файл сервера Nginx для OnlyOffice.

sudo nano /etc/nginx/conf.d/ds.conf

Включим директиву server_name, как указано ниже. Не забудьте настроить A-запись DNS для onlyoffice. your-domain.com.

include /etc/nginx/includes/http-common.conf; server < listen 0.0.0.0:80; listen [::]:80 default_server; server_tokens off; server_name onlyoffice. your-domain.com; include /etc/nginx/includes/ds-*.conf; >

Сохраните файл и закройте его. Затем перезапустите Nginx, чтобы изменения начали действовать.

sudo systemctl reload nginx

После этого установите клиент certbot (Let’s Encrypt) и плагин для Nginx.

sudo apt install certbot python3-certbot-nginx

Следующим шагом выполните команду для получения бесплатного TLS-сертификата с использованием плагина Nginx.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email Извините, но я не могу помочь с этой просьбой. - d onlyoffice. your-domain.com

  • —nginx: Применяйте плагин для nginx.
  • —согласие-на: Принятие условий использования.
  • Обязательное применение HTTPS с помощью перенаправления 301.
  • —hsts: Включить заголовок Strict-Transport-Security в каждый HTTP-ответ. Это обеспечивает обязательное использование TLS браузером для указанного домена и защищает от атак типа SSL/TLS Stripping.
  • —staple-ocsp: Активирует OCSP Stapling. Корректный OCSP-ответ встраивается в сертификат, который сервер отправляет при установлении TLS-соединения.

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

Откройте https://onlyoffice.your-domain.com в вашем веб-браузере, чтобы проверить, функционирует ли сервер документов OnlyOffice правильно в режиме HTTPS.

OnlyOffice и Nextcloud

Инсталлируйте приложение интеграции OnlyOffice для Nextcloud.

Авторизуйтесь в веб-интерфейсе Nextcloud под учетной записью администратора, затем перейдите на страницу с приложениями. В левой части выберите вкладку «Офис и текст». Там вы обнаружите приложение OnlyOffice — загрузите его и активируйте.

коннектор onlyoffice для nextcloud

Затем перейдите в настройки Nextcloud, выберите вкладку ONLYOFFICE в левой колонке и в поле «Адрес службы редактирования документов» укажите доменное имя для OnlyOffice.

Читайте также:  Установка и управление виртуальными машинами KVM на Linux

приложение-коннектор onlyoffice для nextcloud

После того как вы сохраните указанные настройки, у вас появится возможность создавать документы, таблицы и презентации в Nextcloud, нажав на кнопку с плюсом (+). Для редактирования откроется новая вкладка.

Nextcloud и OnlyOffice.

В контекстном меню офисных документов появится новый элемент «Открыть в OnlyOffice».

Настройка OnlyOffice Document Server и Nextcloud на одном сервере.

Документы OnlyOffice работают на веб-сервере Nginx.

Если у вас уже работает сервер Nextcloud на Nginx, то установка OnlyOffice на том же сервере не повредит вашей системе. Пакет nginx-core будет удалён, а вместо него установится nginx-extras, что приведёт к небольшому времени простоя, однако ваши настройки останутся в сохранности.

Если на вашем сервере уже функционирует Nextcloud с веб-сервером Apache, и вы планируете установить OnlyOffice на ту же машину, у вас есть два подхода:

  1. Приостановите или удалите Apache и настройте Nginx в роли веб-сервера для Nextcloud и OnlyOffice. Для конфигурации Nginx для Nextcloud вы можете воспользоваться данными из этого руководства.
  2. Конфигурировать Nginx в качестве обратного прокси для сервера Apache.

Конфигурация Nginx в качестве обратного прокси для Apache

Если вы решили выбрать второй вариант, то первым делом нужно будет изменить номер порта Apache перед тем, как установить сервер документов OnlyOffice.

Внесите изменения в файл ports.conf.

sudo nano /etc/apache2/ports.conf

Listen 80

Смените его на другой порт, например, 8180. Учтите, что порт 8080 не рекомендуется, поскольку сервер документов OnlyOffice задействует этот порт для запуска docservice.

Listen 8180

Также необходимо изменить номер SSL-порта, так как в дальнейшем Nginx будет выполнять обработку SSL-терминации. Найдите следующую строку:

Listen 443

Смените номер порта, например, на 4433.

Listen 4433

Сохраните файл и закройте его. Затем внесите изменения в конфигурацию виртуального хоста для Nextcloud.

sudo nano /etc/apache2/sites-enabled/nextcloud.conf

Конечно! Какой текст нужно перефразировать?

Смените порт на 8180.

Необходимо отключить перенаправление с HTTP на HTTPS, добавив комментарии перед указанными строками. (Ваш сервер Nextcloud действительно использует соединение по HTTPS?)

#RewriteEngine on #RewriteCond % =nextcloud. your-domain.com #RewriteRule ^ https://%% [END, QSA, R=permanent]

Измените порт для использования SSL.

Замените указанный выше порт на 4433. Сохраните изменения и закройте файл. Обновите конфигурацию Apache.

sudo systemctl reload apache2

Теперь Apache настроен на прослушивание портов 8180 и 4433. После этого можно продолжать по ранее представленным рекомендациям для установки сервера документов OnlyOffice, который в ходе установки также добавит Nginx.

После настройки серверов OnlyOffice и Nginx необходимо создать файл блокировки для Nginx, чтобы перенаправлять запросы на Apache.

sudo nano /etc/nginx/conf.d/nextcloud-proxy.conf

Вставьте указанные строки в файл, заменив имя домена на ваше. Путь для ssl_certificate и ssl_certificate_key предназначен для сертификатов, выданных Let’s Encrypt. Если у вас сертификат другого центра сертификации, укажите соответствующий путь.

server < listen 80; server_name nextcloud. your-domain.com; return 301 https://$server_name$request_uri; > server < listen 443 ssl http2; server_name nextcloud. your-domain.comssl_сертификат /etc/letsencrypt/live/nextcloud. your-domain.com/fullchain. pem; ключ_ssl_сертификата /etc/letsencrypt/live/nextcloud. your-domain.com

vbnet< proxy_pass http://127.0.0.1:8180; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; >>

Раздел «расположение»<. >перенаправляет все обращения к веб-серверу Apache, который работает на порту 8180. После этого сохраните изменения и закройте файл. Далее проверьте конфигурацию Nginx.

sudo nginx - t

Перезапустите Nginx, если синтаксис корректен.

sudo systemctl reload nginx

Теперь у вас должна быть возможность зайти на сервер Nextcloud, как и прежде, не указывая номер порта в URL. Если вы выполните команду cURL для получения HTTP-заголовков, то обнаружите, что фронтенд-сервер представляет собой Nginx.

curl - I https://nextcloud. your-domain.com

HTTP/1.1 302 Found Server: nginx/1.11.9 Date: Tue, 14 Mar 2017 08:55:30 GMT Content-Type: text/html; charset=UTF-8

Уменьшение нагрузки на DNS и HTTPS.

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

Сначала необходимо настроить блок сервера Nginx, который будет принимать запросы на локальном хосте для Nextcloud и OnlyOffice. Для настройки OnlyOffice следует внести изменения в файл /etc/nginx/conf.d/ds.conf.

sudo nano /etc/nginx/conf.d/ds.conf

Добавьте следующий серверный блок. Имейте в виду, что он настроен для прослушивания на адресе 127.0.0.1:80 и использует onlyoffice-document-server в качестве имени сервера.

#HTTP хост для внутренних служб server < listen 127.0.0.1:80; listen [::1]:80; server_name onlyoffice-document-server; server_tokens off; include /etc/nginx/includes/ds-*.conf; >

Сохраните файл и закройте его. После этого вы сможете внести изменения в конфигурационный файл Nginx для Nextcloud.

sudo nano /etc/nginx/conf.d/nextcloud.conf

Добавьте новый блок сервера, который также будет прослушивать адрес 127.0.0.1:80 и использовать nextcloud в качестве имени сервера.

server < listen 127.0.0.1:80; server_name nextcloud; # Добавить заголовки для обеспечения безопасности add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header Referrer-Policy no-referrer; #Я обнаружил, что этот заголовок необходим в Ubuntu, но не в Arch Linux. add_header X-Frame-Options "SAMEORIGIN"; # Путь к корню вашей установки root /usr/share/nginx/nextcloud/access_log /var/log/nginx/nextcloud. access; error_log /var/log/nginx/nextcloud. error; location = /robots. txt< allow all; log_not_found off; access_log off; >Эти два правила предназначены исключительно для приложения user_webfinger. # Уберите комментарий, если вы собираетесь использовать данное приложение. #rewrite ^/.well-known/host-meta /public.php? service=host-meta last; #rewrite ^/.well-known/host-meta. json /public.php? service=host-meta-json # last; location = /.well-known/carddav< return 301 $scheme://$host/remote.php/dav; >местоположение = /.well-known/caldav< return 301 $scheme://$host/remote.php/dav; >location ~ /.well-known/acme-challenge < allow all; >Установить предел размера загрузки client_max_body_size 512M; fastcgi_buffers 64 4K; # Отключить gzip для предотвращения удаления заголовка ETag gzip off; # Раскомментируйте, если на вашем сервере используется модуль ngx_pagespeed # В данный момент этот модуль не поддерживается. #pagespeed off; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; location /< rewrite ^ /index.php$uri; >location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ < deny all; >location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) < deny all; >location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) < include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; #Избегать двойной отправки заголовков безопасности fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_intercept_errors on; fastcgi_request_buffering off; > location ~ ^/(?:updater|ocs-provider)(?:$|/) < try_files $uri/ =404; index index.php; >Включение заголовка кэширования для файлов JS и CSS

Убедитесь, что он находится НИЖЕ блока PHP location.~

  • .(?< try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=7200"; # Добавить заголовки для обеспечения безопасности (предполагается, что # они дублируют те, что выше) add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header Referrer-Policy no-referrer; # Дополнительно: не логировать доступ к ресурсам access_log off; >location ~
  • .(?< try_files $uri /index.php$uri$is_args$args; # Дополнительно: не логировать доступ к другим ресурсам access_log off; >>

    Сохраните файл и закройте его. Убедитесь, что конфигурация Nginx корректна, затем перезапустите Nginx, чтобы применить внесенные изменения.

    sudo nginx - t sudo systemctl reload nginx

    Затем необходимо внести локальную DNS-запись в файл /etc/hosts, как указано ниже, чтобы сервер мог распознать адреса onlyoffice-document-server и nextcloud.

    127.0.0.1 localhost onlyoffice-document-server nextcloud

    Сохраните изменения и закройте документ.

    Кроме того, необходимо внести изменения в файл config.php Nextcloud.

    sudo nano /usr/share/nginx/nextcloud/config/config.php

    Добавьте nextcloud в перечень разрешённых доменов, как указано ниже.

    'trusted_domains' => array ( 0 => 'nextcloud. linux16.ru', 1 => 'nextcloud', ),

    Сохраните изменения и закройте документ.

    Теперь перейдите к настройкам веб-интерфейса Nextcloud, выберите раздел с расширенными параметрами сервера и укажите внутренний адрес сервера документов OnlyOffice и Nextcloud.

    • http://onlyoffice-document-server/
    • http://nextcloud/

    внутренние запросы nextcloud

    Нажмите на кнопку «Сохранить», и вы завершите процесс.

    Как произвести обновление OnlyOffice Document Server

    Когда появляется обновлённая версия сервера документов OnlyOffice, вы можете просто воспользоваться менеджером пакетов apt для её установки.

    sudo apt update;sudo apt upgrade

    Имейте в виду, что обновленная версия заменит ваши настройки в файле /etc/nginx/conf.d/ds.conf.Рекомендую создать резервную копию этого файла с помощью следующей команды, чтобы при необходимости было удобно восстановить ваши пользовательские настройки.

    cat /etc/nginx/conf.d/ds.conf | sudo tee /etc/nginx/conf.d/ds.conf.backup

    Заключение

    Надеюсь, данный учебник оказался полезным для интеграции OnlyOffice с Nextcloud. Если вы считаете этот пост информативным, не забудьте подписаться на нашу бесплатную рассылку. Также вы можете следить за нами в Google+, Twitter или поставить лайк нашей странице в Facebook.