В этой статье я покажу как к файловому серверу NextCloud подключить сервер документов Collabora.
Введение
Я уже писал про установку облачного файлового сервера NextCloud — здесь.
А здесь я писал про интеграцию с OnlyOffice.
Collabora это тоже сервер документов, но он использует другой формат файлов в отличии от OnlyOffice:
- OnlyOffice — docx (документ), xlsx (таблица), pptx (презентация);
- Collabora — odt (документ), ods (таблица), odp (презентация).
Официальная страница Collabora — доступна здесь.
Официальные инструкции:
- https://www.collaboraoffice.com/code/linux-packages/ — инструкция по установке на свой сервер;
- https://github.com/CollaboraOnline/online/blob/master/etc/nginx/coolwsd.conf — конфиг для прокси сервера на nginx.
Collabora считается предпочтительным и основным сервером документов для NextCloud, так говорят сами разработчики NextCloud.
Установка
Как по мне, установка Collabora намного легче.
Перейдём в каталог с ключами репозиториев и скачаем в него необходимый ключ:
# cd /usr/share/keyrings # wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg
Пропишем репозиторий, обновим кеш пакетов и установим необходимые пакеты:
# nano /etc/apt/sources.list.d/collaboraonline.sources Types: deb URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-deb Suites: ./ Signed-By: /usr/share/keyrings/collaboraonline-release-keyring.gpg # apt update # apt install coolwsd code-brand
Настройка
Для настройки используется конфиг coolwsd.xml. Конфиг очень большой, и разобраться с ним будет не просто. Здесь опишу только те опции, которые я поменял:
# nano /etc/coolwsd/coolwsd.xml <allowed_languages>en_US ru</allowed_languages> <server_name>collabora.sysadminium.ru</server_name> <net desc="Network settings"> <host desc="nextcloud">192\.168\.0\.64</host> <host desc="nextcloud">nc\.sysadminium\.ru</host> <ssl desc="SSL settings"> <enable>false</enable> <termination>true</termination> <storage desc="Backend storage"> <host desc="Regex pattern of hostname to allow or deny." allow="true">192\.168\.0\.64</host> <host desc="Regex pattern of hostname to allow or deny." allow="true">nc\.sysadminium\.ru</host> <admin_console desc="Web admin console settings."> <enable>true</enable> <enable_pam>false</enable_pam> <username>admin</username> <password>adminpass</password> </admin_console>
Из языков я оставил поддержку только Русского и Английского. Указал имя сервера. Указал разрешённые сети, то есть подключаться к Collabora сможет только сервер NextCloud.
После настройки запустим службу и проверим её статус:
# systemctl start coolwsd # systemctl status coolwsd
Если служба не запустилась, то посмотрим ошибки:
# journalctl -u coolwsd
У меня, например, была ошибка в конфиге, и я это заметил благодаря предыдущей команде.
Прокси сервер на Nginx
NextCloud не сможет напрямую обращаться к сервису coolwsd, поэтому нужно вначале сделать прокси сервер.
Создадим конфиг для nginx, в котором запросы приходящие на collabora.sysadminium.ru будем перенаправлять службе coolwsd:
# nano /etc/nginx/sites-available/collabora server { listen 443 ssl; server_name collabora.sysadminium.ru; ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; # static files location ^~ /browser { proxy_pass http://localhost:9980; proxy_set_header Host $http_host; } # WOPI discovery URL location ^~ /hosting/discovery { proxy_pass http://localhost:9980; proxy_set_header Host $http_host; } # Capabilities location ^~ /hosting/capabilities { proxy_pass http://localhost:9980; proxy_set_header Host $http_host; } # main websocket location ~ ^/cool/(.*)/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; } # download, presentation and image upload # we accept 'lool' to be backward compatible location ~ ^/(c|l)ool { proxy_pass http://localhost:9980; proxy_set_header Host $http_host; } # Admin Console websocket location ^~ /cool/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 мог работать:
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
Включим сайт:
# ln -s /etc/nginx/sites-available/collabora /etc/nginx/sites-enabled/
Проверим конфигурацию nginx:
# nginx -t
И получим сертификат от let’s encrypt:
# certbot certonly --nginx
После этого в конфиге поменяем пути к сертификату и ключу:
# nano /etc/nginx/sites-available/collabora ssl_certificate /etc/letsencrypt/live/collabora.sysadminium.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/collabora.sysadminium.ru/privkey.pem;
Перезапустим nginx:
# systemctl reload nginx.service
И так этот Collabora установлен на том же хосте что и NextCloud, то в файл hosts я добавляю запись:
# nano /etc/hosts 127.0.0.1 collabora.sysadminium.ru
Подключение NextCloud к Collabora
Дальше идём в web интерфейс NextCloud и добавляем приложение «Nextcloud Office». Это и есть коннектор для подключения к серверу Collabora.
После установки, заходим в «Параметры сервера», и там находим настройки «Офис».
В настройках нажимаем галочку «Использовать собственный сервер», а в стоке подключения вводим адрес подключения:
Теперь вы сможете создавать офисные документы в форматах: odt (текстовый документ), ods (таблица), odp (презентация).
У меня на сервере дополнительно установлен OnlyOffice, поэтому по 2 пункта меню. OnlyOffice создаёт файлы: docx (текстовый документ), xlsx (таблица), pptx (презентация).
Дополнительно вы сможете войти в админку Collabora можно по ссылке — https://collabora.sysadminium.ru/browser/dist/admin/admin.html.
Не забываем поменять домен на свой. А логин и пароль вы прописывали в конфиге coolwsd.xml.
Итог
Лично мне интерфейс OnlyOffice нравиться больше чем Collabora. По скорости работы и функциональности не сравнивал. Возможно позже сравню.
Collabora устанавливается легче, но использует побольше памяти. OnlyOffice вместе с Postgres потребляют меньше ресурсов чем Collabora.