Интеграция Collabora Online с Nextcloud на системе Ubuntu с применением Docker

В этом руководстве вы узнаете, как развернуть сервер Collabora Online на Ubuntu с помощью Docker и затем осуществить его интеграцию с действующим сервером Nextcloud.

Collabora Online — это самоуправляемый онлайн-офисный пакет, разработанный на основе LibreOffice и имеющий открытый исходный код. Он предлагает следующие возможности:

  • Основное редактирование
  • Точное отображение в режиме WYSIWYG.
  • Поддержка форматов документов: DOC, DOCX, PPT, PPTX, XLS, XLSX, ODF.
  • Импорт и просмотр документов в Visio, Publisher и свыше 100 других форматов.
  • Совместное редактирование документов.

Collabora занимает значительное место в проекте LibreOffice. Весь код Collabora Online в итоге будет интегрирован в LibreOffice.

Важно отметить, что для пользователей Ubuntu 16.04 или Ubuntu 18.04 есть возможность установки Collabora Online непосредственно из официального репозитория пакетов. Это позволит упростить процесс управления по сравнению с использованием Docker.

Предварительные условия

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

  • Установка Nextcloud на Ubuntu 20.04 с использованием LEMP-стека.
  • Установка Nextcloud на CentOS 8 с использованием LEMP-стека.
  • Настройка Nextcloud на Arch Linux: пошаговое руководство.

Серверы Collabora Online и Nextcloud могут работать как на одной, так и на разных машинах. В этом руководстве объясняется процесс установки сервера Collabora Online на Ubuntu с использованием Docker-образа, предоставленного Collabora и Nextcloud, а также описывается, как интегрировать его с уже настроенным сервером Nextcloud.

Установите Docker на систему Ubuntu.

Если вам требуется актуальная версия Docker, вы можете установить его из APT-репозитория Docker. В этом руководстве для удобства установка Docker производится из стандартного репозитория Ubuntu.

sudo apt update sudo apt install docker. io

После завершения установки демон Docker должен активироваться самостоятельно. Вы можете удостовериться в его состоянии, используя следующую команду:

systemctl status docker

Проверка состояния службы Docker с помощью команды systemctl

Совет: Если указанная команда не завершает выполнение сразу, нажмите клавишу Q для выхода.

Читайте также:  Установка CP1251 locale в Linux

Если он не активен, активируйте демона, используя следующую команду:

sudo systemctl start docker

Активируйте автоматический запуск при старте системы.

sudo systemctl enable docker

Установите и запустите Collabora Online сервер с использованием Docker.

Используйте следующую команду для скачивания самой актуальной версии изображения Collabora Online Development Edition с Docker hub.

sudo docker pull collabora/code

После этого выполните запуск контейнера Docker, используя следующую команду. Убедитесь, что вы заменили nextcloud\.example\.com на имя вашего хоста Nextcloud, при этом оставив двойные слеши. Это необходимо, поскольку Collabora предоставляет доступ к своей службе только для проверенных хостов, и нам нужно добавить имя хоста Nextcloud в белый список с помощью параметра domain=.

sudo docker run - t - d - p 127.0.0.1:9980:9980 - e 'domain=nextcloud\\.example\\.com' - e "extra_params=--o:ssl. enable=false --o:ssl. termination=true" --restart always collabora/code

  • Режим отсоединения позволяет контейнеру функционировать в фоновом режиме.
  • -t : Активирует виртуальный терминал.
  • -p: Открывает порт контейнера на хост-системе.
  • -e : Настраивает переменные окружения.

Сервер Collabora Online будет принимать подключения на порту 9980 локального хоста (127.0.0.1), что можно продемонстрировать, выполнив следующую команду. (Если в вашей системе Ubuntu отсутствует команда netstat, ее можно установить с помощью sudo apt install net-tools.)

sudo netstat - lnpt | grep docker

Конфигурация обратного прокси

Сервер Nextcloud требует наличие TLS-сертификата для Collabora Online, поэтому необходимо создать виртуальный хост, назначить ему доменное имя, настроить обратный прокси и установить TLS-сертификат. Для выполнения этих задач можно использовать либо Apache, либо Nginx.

Apache

Установите веб-сервер Apache, выполнив следующую команду:

sudo apt install apache2

Используйте следующую команду для создания файла виртуального хоста Apache для Collabora Online.

sudo nano /etc/apache2/sites-available/collabora.conf

Сохраните указанный текст в файл. Подмените имя домена на ваше реальное имя домена для Collabora Online. Не забудьте добавить A-запись для этого субдомена.

ServerName collabora. example.com

bash

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

sudo a2enmod proxy proxy_wstunnel proxy_http

Активируйте этот виртуальный хост, используя следующую команду:

sudo a2ensite collabora.conf

После этого перезапустите сервер Apache.

sudo systemctl restart apache2

Nginx

Установите Nginx на Ubuntu, выполнив следующую команду:

sudo apt install nginx

Создайте файл для виртуального хоста, предназначенный для Collabora Online.

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

Сохраните следующий текст в файл. Обязательно замените имя домена на ваше актуальное доменное имя для Collabora Online. Также не забудьте создать A-запись для этого домена.

server { listen 80; listen [::]:80; server_name collabora. example.comerror_log /var/log/nginx/collabora. error; # директория для статических файлов location ^~ /loleaflet { proxy_pass http://localhost:9980; proxy_set_header Host $http_host; } # URL для обнаружения WOPI location ^~ /hosting/discovery { proxy_pass http://localhost:9980; proxy_set_header Host $http_host; } # Возможности location ^~ /hosting/capabilities { proxy_pass http://localhost:9980; proxy_set_header Host $http_host; } # основное веб-сокетное соединение location ~ ^/lool/(.*)/ws$ { proxy_pass http://localhost:9980; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $http_host; proxy_read_timeout 36000s; } # загрузка, презентация и загрузка изображений location ~ ^/lool { proxy_pass http://localhost:9980; proxy_set_header Host $http_host; } # веб-сокет для админ-консоли location ^~ /lool/adminws { proxy_pass http://localhost:9980; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $http_host; proxy_read_timeout 36000s; }}

Сохраните изменения в файле и закройте его. После этого проверьте настройки Nginx.

sudo nginx - t

Если тест прошел успешно, выполните перезагрузку сервера Nginx.

sudo systemctl reload nginx

Приобретение и настройка TLS-сертификата.

Теперь давайте получим бесплатный TLS-сертификат от Let’s Encrypt. Для этого выполните следующие команды, чтобы установить клиент Let’s Encrypt (certbot) из официального PPA.

sudo apt install certbot

Если вы работаете с веб-сервером Apache, необходимо установить плагин Certbot для него.

sudo apt install python3-certbot-apache

После этого введите следующую команду, чтобы получить бесплатный сертификат TLS/SSL.

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

Если вы работаете с веб-сервером Nginx, необходимо установить плагин Certbot для него.

sudo apt install python3-certbot-nginx

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

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

Вы увидите следующий текст, подтверждающий успешное получение TLS сертификата.

Заключительный этап: Соедините Nextcloud с Collabora Online.

В панели управления Nextcloud откройте вкладку Приложения. Затем перейдите в раздел Офис и текст, найдите приложение Collabora Online и нажмите кнопку Загрузить и активировать. (Важно: Не устанавливайте приложение Collabora Online — Встроенный сервер CODE на ваш сервер Nextcloud.)

Настройка Collabora в Nextcloud

После активации данного приложения перейдите в настройки Nextcloud. Слева выберите вкладку Collabora Online. По умолчанию активен встроенный сервер CODE, который не рекомендуется для эксплуатации в производственных условиях. Необходимо выбрать опцию «Использовать свой собственный сервер» и ввести доменное имя вашего Collabora Online с префиксом https://, затем нажмите на кнопку «Сохранить».

Интеграция Collabora Online с Nextcloud в Docker

В разделе дополнительных настроек можно выбрать формат OOXML в качестве стандартного, что обеспечит совместимость файлов с программами Microsoft Office.

Формат Office Open XML Collabora

Теперь, при нажатии кнопки добавления (+) в Nextcloud, вы сможете непосредственно на своем сервере создавать документы Word, таблицы и презентации.

Онлайн-офис Nextcloud
Интеграция Collabora Online Development Edition с Nextcloud

Рекомендации по диагностике и устранению проблем.

Если Nextcloud предупреждает о невозможности установить связь с сервером Collabora Online, стоит проверить, активен ли контейнер Docker.

sudo docker ps

Не забудьте просмотреть логи веб-сервера.

  • Apache: /var/log/apache2/collabora_ошибка
  • Nginx: /var/log/nginx/collabora. error.log

Также необходимо внести изменения в файл /etc/hosts, добавив статическую DNS-запись, как указано ниже. Подмените 12.34.56.78 на публичный IP-адрес вашего сервера.

12.34.56.78 collabora. example.com

collabora. example.com должен быть настроен на публичный IP-адрес вашего сервера. Не используйте 127.0.0.1 в качестве адреса.

Если ваш сервер Nginx находится за обратным прокси, например, HAProxy, и в файле /etc/nginx/nginx.conf присутствуют следующие две строки.

set_real_ip_from 127.0.0.1; real_ip_header proxy_protocol;

Это подразумевает, что Nginx ждет HTTP-соединение от обратного прокси. Рекомендуется внести изменения в файл /etc/nginx/conf.d/collaboara.conf и добавить параметр proxy_protocol к директиве listen.

listen 127.0.0.1:443 ssl http2 proxy_protocol;

Как произвести обновление Collabora Online в Docker?

Для того чтобы обновить до самой свежей версии, достаточно загрузить последнюю версию образа с Docker Hub и перезапустить контейнер. Вот пошаговая инструкция.

Сначала подключитесь к своему серверу и скачайте последнюю версию образа collabora/code, используя следующую команду.

sudo docker pull collabora/code:latest

Данная команда загрузит промежуточный слой образа между текущим образом на вашем хосте и последним доступным образом на Docker Hub. После завершения загрузки вы получите два образа collabora/code с различными тегами, которые обозначают версии.

sudo docker images

REPOSITORY TAG IMAGE ID CREATED SIZE collabora/code latest 499f29f2703e 2 weeks ago 1.75 GB collabora/code 05a1b4c2d8db 5 weeks ago 1.129 GB

После этого укажите запущенные контейнеры.

sudo docker ps

Остановите и удалите запущенный контейнер collabora/code. Идентификатор контейнера можно определить…