Установка и настройка локального сервера Collabora и его связка с Nextcloud/Owncloud

Обновлено Обновлено: Опубликовано Опубликовано:

Для совместной работы с документами в облачном сервисе Nextcloud/Owncloud есть несколько популярных программных продуктов, например, ONLYOFFICE, LibreOffice Online и Collabora Online. Последний может быть развернут локально и использоваться бесплатно.

Рассмотрим процесс установки Collabora Online на одном сервере с Nextcloud без привязки к конкретной системе Linux (это может быт CentOS, Ubuntu, Debian и так далее). Предполагается, что Nextcloud установлен, иначе, можно воспользоваться инструкцией Установка и настройка NextCloud на CentOS или Установка и настройка Nextcloud + NGINX на Ubuntu.

Подготовка системы

Для работы Collabora используется TCP-порт 9980, чтобы его добавить в Linux вводим команды, в зависимости от используемой утилиты управления netfilter.

а) если firewalld:

firewall-cmd --permanent --add-port=9980/tcp

firewall-cmd --reload

б) если iptables:

iptables -I INPUT -p tcp --dport 9980 -j ACCEPT

Для сохранения правил в Iptables устанавливаем iptables-persistent и выполняем команду netfilter-persistent:

apt-get install iptables-persistent 

netfilter-persistent save

Установка и запуск сервера Collabora

На практике лучше работает Collabora, установленная в качестве docker-контейнера.

Для начала необходимо установить docker. В зависимости от используемой системы Linux, действия будут немного отличаться. Подробнее процесс описан в инструкции Установка Docker на Linux.

После готов, как мы установили и запустили Docker, для получения нужного нам контейнера вводим команду:

docker pull collabora/code

Процесс загрузки займет несколько минут — в итоге мы должны увидеть:

Status: Downloaded newer image for collabora/code:latest

Для запуска контейнера нам нужен правильный сертификат, полученный на домен. Его можно купить или запросить бесплатно в Let's Encrypt. Предположим, что мы сохранили наш сертификат по пути /etc/letsencrypt/live/collabora.dmosk.ru.

Команда для запуска контейнера с сервером collabora зависит от версии (в новых версиях не поддерживается переменная domain и необходимо использовать переменную aliasgroup).

а) Для 21.11.2.4.1 и старее:

docker run --name collabora -t -d -p 9980:9980 --add-host "nextcloud.dmosk.ru":192.168.1.15 -v "/etc/letsencrypt/live/collabora.dmosk.ru/fullchain.pem":/etc/coolwsd/ca-chain.cert.pem -v "/etc/letsencrypt/live/collabora.dmosk.ru/privkey.pem":/etc/coolwsd/key.pem -v "/etc/letsencrypt/live/collabora.dmosk.ru/fullchain.pem":/etc/coolwsd/cert.pem -e 'DONT_GEN_SSL_CERT=true' -e "domain=nextcloud\\.dmosk\\.ru" -e "dictionaries=en ru" -e "username=admin" -e "password=passadmin" --restart always --cap-add MKNOD collabora/code

б) Для 21.11.3.6 и новее:

docker run --name collabora -t -d -p 9980:9980 -e "aliasgroup1=https://nextcloud.dmosk.ru:443" --add-host "nextcloud.dmosk.ru":192.168.1.15 -v "/etc/letsencrypt/live/collabora.dmosk.ru/fullchain.pem":/etc/coolwsd/ca-chain.cert.pem -v "/etc/letsencrypt/live/collabora.dmosk.ru/privkey.pem":/etc/coolwsd/key.pem -v "/etc/letsencrypt/live/collabora.dmosk.ru/fullchain.pem":/etc/coolwsd/cert.pem -e 'DONT_GEN_SSL_CERT=true' -e "dictionaries=en ru" -e "username=admin" -e "password=passadmin" --restart always --cap-add MKNOD collabora/code

* в итоге

  • наш контейнер будет слушать сетевые запросы на порту 9980 (параметр -p);
  • мы добавим для разрешения имени nextcloud.dmosk.ru (нашего сервера Nextcloud) IP-адрес 192.168.1.15 (--add-host);
  • в контейнер добавим файлы сертификатов (-v);
  • в конфигурацию collabora добавим запрет на создание нового сертификата, добавим наш сервер nextcloud для разрешения подключаться к серверу;
  • используем русский и английские языки;
  • задаем логин admin и пароль passadmin для Admin Console.

Настройка Nextcloud

В данной инструкции мы рассмотрим пример связки Collabora с Nextcloud. Для Owncloud действия будут похожи.

Для интеграции Collabora с Nextcloud заходим на веб-интерфейс последней и заходим в настройки:

Переходим к настройкам в Nextcloud

В меню слева кликаем по Collabora Online Development Edition (в более новых версиях Office или Office Online):

Переходим к настройкам Collabora Online Development Edition

В поле URL-адрес (и порт) сервера документов Collabora Online добавляем адрес нашего сервера collabora:

Добавляем адрес сервера collabora

* важно, чтобы запрос был на доменное имя. Таким образом, домен должен быть зарегистрирован в DNS. Если у нас есть недочеты с сертификатом (например, нет полной цепочки) ставим галочку Отключить проверку сертификата (небезопасно).

Переходим к папкам и файлам на облачном сервисе. Пробуем открыть любой документ docx или создать новый — он должен открыться в Collabora:

Редактирование документа в Collabora

Настройка NGINX

Если наши запросы проходят через nginx-прокси, необходимо сконфигурировать его следующим образом:

server {
    listen 9980 ssl;
    server_name collabora.dmosk.ru;

    ssl_certificate /etc/letsencrypt/live/collabora.dmosk.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/collabora.dmosk.ru/privkey.pem;

    location ^~ /loleaflet {
        proxy_pass https://192.168.0.15:9980;
        proxy_set_header Host $http_host;
    }

    # WOPI discovery URL
    location ^~ /hosting/discovery {
        proxy_pass https://192.168.0.15:9980;
        proxy_set_header Host $http_host;
    }

    # Capabilities
    location ^~ /hosting/capabilities {
        proxy_pass https://192.168.0.15:9980;
        proxy_set_header Host $http_host;
    }

    # main websocket
    location ~ ^/lool/(.*)/ws$ {
        proxy_pass https://192.168.0.15:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }

    # download, presentation and image upload
    location ~ ^/lool {
        proxy_pass https://192.168.0.15:9980;
        proxy_set_header Host $http_host;
    }

    # Admin Console websocket
    location ^~ /lool/adminws {
        proxy_pass https://192.168.0.15:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }
}

* конфигурационный файл для nginx, как правило, находится в каталоге /etc/nginx/sites-enabled или /etc/nginx/conf.d.
* где:

  • collabora.dmosk.ru — домен, на который будут приходить запросы.
  • ssl_certificate и ssl_certificate_key — путь до сертификатов (открытый и закрытый кличи соответственно).
  • 192.168.0.15 — IP-адрес сервера с Collabora.
# Linux # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет