Интеграция NextCloud с Collabora Online

Интеграция NextCloud с Collabora Online

 
В этой публикации будет показано, как выполняется интеграция NextCloud с Collabora Online. Установку можно выполнить либо в качестве пакета непосредственно в операционной системе, либо установить Collabora Online в качестве Docker контейнера. В данной статье будет рассматриваться установка в виде контейнера .Устанавливаться Collabora Online будет на тот же сервер, где уже установлен NextCloud ранее. В качестве веб сервера использован Apache.

Предварительная подготовка

Для того, чтобы запустить Docker контейнер предварительно нужно установить сам Docker:
sudo apt update
sudo apt install -y docker.io
Убедимся, что Docker будет запускаться автоматически:
sudo systemctl enable --now docker
Запустим образ Collabora Online в качестве контейнера Docker:
sudo docker run -t -d -p 127.0.0.1:9980:9980 --name collabora -e 'domain=files.itproblog.ru' --restart always --cap-add MKNOD  collabora/code
В параметре “-e ‘domain=files.itproblog.ru'” необходимо указать имя сервера с NextCloud.И вот тут есть двоякий момент – в документации указано экранировать точки через двойной слэш. Например, ‘domain=cloud\\.nextcloud\\.com’. Но в данном случае при таком подходе документы не открывались на редактирование, а генерировалась ошибка “failed to load nextcloud office”. В логах самого контейнера была ошибка “No acceptable WOPI hosts found matching the target host”.В файле hosts будет добавлена соответствующую запись:
sudo nano /etc/hosts
10.10.10.88 office.itproblog.ru
С настройкой разрешения имен в контейнере немного сложнее. Как правило контейнер получает в качестве сервера DNS тот адрес, который указан в DHCP. В рассматриваемом случае – это домашний Mikrotik. Соответственно в статический DNS на Mikrotik было добавлено две записи:

Настройка публикации

На веб сервере Apache включим необходимы модули:
sudo a2enmod proxy
sudo a2enmod proxy_wstunnel
sudo a2enmod proxy_http
sudo a2enmod ssl
Перезапустим Apache:
sudo systemctl restart apache2
Настроим правило публикации:
sudo nano /etc/apache2/sites-available/collabora.conf
Содержимое файла:
<VirtualHost *:4443>
    ServerName office.itproblog.ru:4443

    # SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
    SSLEngine on
    SSLCertificateFile "/etc/nextcloud/certs/itproblog.ru.crt"
    SSLCertificateKeyFile "/etc/nextcloud/certs/itproblog.ru.key"
    SSLCertificateChainFile "/etc/nextcloud/certs/itproblog.ru.chain"
    SSLProtocol             all -SSLv2 -SSLv3
    SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
    SSLHonorCipherOrder     on

    # Encoded slashes need to be allowed
    AllowEncodedSlashes NoDecode

    # Container uses a unique non-signed certificate
    SSLProxyEngine On
    SSLProxyVerify None
    SSLProxyCheckPeerCN Off
    SSLProxyCheckPeerName Off

    # keep the host
    ProxyPreserveHost On

    # static html, js, images, etc. served from coolwsd
    # browser is the client part of LibreOffice Online
    ProxyPass           /browser https://127.0.0.1:9980/browser retry=0
    ProxyPassReverse    /browser https://127.0.0.1:9980/browser

    # WOPI discovery URL
    ProxyPass           /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
    ProxyPassReverse    /hosting/discovery https://127.0.0.1:9980/hosting/discovery

    # Main websocket
    ProxyPassMatch "/cool/(.*)/ws$" wss://127.0.0.1:9980/cool/$1/ws nocanon

    # Admin Console websocket
    ProxyPass   /cool/adminws wss://127.0.0.1:9980/cool/adminws

    # Download as, Fullscreen presentation and Image upload operations
    ProxyPass           /cool https://127.0.0.1:9980/cool
    ProxyPassReverse    /cool https://127.0.0.1:9980/cool

    # Endpoint with information about availability of various features
    ProxyPass           /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities retry=0
    ProxyPassReverse    /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities
    </VirtualHost>
<IfModule ssl_module>
        Listen 4443
</IfModule>
Только укажите актуальные для вас значения в параметрах ServerName, SSLCertificateChainFile, SSLCertificateFile и SSLCertificateKeyFileВключим публикацию на apache:
sudo a2ensite collabora
sudo systemctl reload apache2
Проверить публикацию можно, например, перейдя вот по такой ссылке (с учетом вашего доменного имени):
https://office.itproblog.ru:4443/hosting/discovery
Вы должны увидеть XML документ с метаданными:
При публикации сервера NextCloud во внешний мир также не забудьте опубликовать Collabora Online. В данном случае это адрес https://office.itproblog.ru:4443.

Интеграция NextCloud с Collabora Online

Откроем консоль управления приложениями:
Необходимо установить и включить приложение для Collabora Online: Еще дополнительно необходимо установить пакет NextCloud Office:
Затем переходим в настройки NextCloud Office и указываем, что мы собираемся использовать свой сервер. Указываем URL для подключения к серверу, который мы с вами настроили на сервере Apache:
https://office.itproblog.ru:4443
Сохраняем внесенные изменения.

Проверка

Теперь проверим работу онлайн редактора Collabora.Создадим табличный документ: Если все настройки были выполнены корректно, то в браузере должен открыться онлайн редактор Collabora.Если что-то пошло не так, то в документации есть отдельный гайд по устранению проблем.

Метаданные статьи

Идентификатор статьи:
39
Категория:
Дата добавления:
2024-03-11 23:39:23
Просмотры:
324
Рейтинг (Голоса):
(0)

Связанные статьи