Содержание статьи:
Разберем как установить и Collabora Online Development Edition на Debian 11 Bullseye.
Collabora Online — это мощный офисный пакет на базе LibreOffice для совместной работы с документами в браузере. В рамках статьи будем устанавливать Collabora Online Development Edition (CODE) версию. Я лично использую CODE в связке с Nextcloud.
# Все ниже действия будет выполняться от root
.
Установка
Импортируем ключ подписи и добавляем репозиторий Collabora Productivity Ltd (/etc/apt/sources.list.d/collaboraonline.sources
):
cd /usr/share/keyrings wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg cat EOF /etc/apt/sources.list.d/collaboraonline.sources Types: deb URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian11 Suites: ./ Signed-By: /usr/share/keyrings/collaboraonline-release-keyring.gpg EOF
Обновляем информацию о репозиториях и устанавливаем пакеты:
apt-get update apt-get install coolwsd code-brand collaboraofficebasis-ru collaboraoffice-dict-ru collaboraoffice-dict-en apache2 apache2-utils -y
Настройка coolwsd
Настройка CODE осуществляется через файл — /etc/coolwsd/coolwsd.xml
, но более удобный способ настройки через пакет coolconfig
. Выполним основные настройки для работы CODE.
Задаем пароль администратора для доступа в web консоль CODE.
coolconfig set-admin-password
Указываем FQDN имя сервера на котором запущен coolwsd (прим. collaboraonline.example.com):
coolconfig set server_name <fqdn name>
Указываем имя хоста которому будет разрешен доступ к демону coolwsd
(прим. nextcloud.example.com):
coolconfig set storage.wopi.host <fqdn name>
В случае если сервер CODE будет использоваться несколькими хостами, то необходимо изменить атрибут режима alias_groups
в значение groups
и определить группу для каждого экземпляра хоста.
К примеру у нас планируется два хоста:
nextcloud1.example.com
nextcloud2.example.com
Для этой группы хостов, в файле /etc/coolwsd/coolwsd.xml
в секции storage.wopi
приводим к виду секцию alias_groups
, где обязательно меняем аттрибут mode
с first
на groups
:
<alias_groups desc="default mode is 'first' it allows only the first host when groups are not defined. set mode to 'groups' and define group to allow multiple host and its aliases" mode="groups"> <group> <host allow="true" desc="hostname to allow or deny.">https://nextcloud1.example.com</host> </group> <group> <host allow="true" desc="hostname to allow or deny.">https://nextcloud2.example.com</host> </group> </alias_groups>
Collabora Online использует протокол WOPI, который требует использования SSL, хотя и может работать в HTTP режиме. Для безопасности лучше и правильней использоваться SSL.
Сертификат можно испольовать любой доступный вам, как выпущенный внутренним ЦА, выпущенный Let`s Encrypt, так и белый купленный.
Задаем параметры SSL. Включаем SSL и указываем пути к вашим файлам сертификатов и закрытому ключу:
coolconfig set ssl.enabled true coolconfig set ssl.termination false coolconfig set ssl.cert_file_path <pathtocertificate> coolconfig set ssl.key_file_path <pathtokey> coolconfig set ssl.ca_file_path <pathtocertificate>
В случае нет никакой инфрастуктуры ЦА, возможности купить или выпустить через Let`s Encrypt, то ниже описано как выпустить самоподписной сертификат для CODE.
mkdir -p /opt/ssl/certs/ca && cd /opt/ssl/ openssl genrsa -out certs/ca/root.key.pem 2048 openssl req -x509 -new -nodes -key certs/ca/root.key.pem -days 9131 -out certs/ca/root.crt.pem -subj "/C=RU/CN=Dummy Authority" mkdir -p certs/servers mkdir -p "certs/servers/hostname.example.com" openssl genrsa -out "certs/servers/hostname.example.com/privkey.pem" 2048 -key "certs/servers/hostname.example.com/privkey.pem" openssl req -key "certs/servers/hostname.example.com/privkey.pem" -new -sha256 -out "certs/servers/hostname.example.com.csr.pem" -subj "/C=RU/O=Dummy Authority/CN=hostname.example.com" openssl x509 -req -in certs/servers/hostname.example.com.csr.pem -CA certs/ca/root.crt.pem -CAkey certs/ca/root.key.pem -CAcreateserial -out certs/servers/hostname.example.com/cert.pem -days 9131 mv certs/servers/hostname.example.com/privkey.pem /etc/coolwsd/key.pem mv certs/servers/hostname.example.com/cert.pem /etc/coolwsd/cert.pem mv certs/ca/root.crt.pem /etc/coolwsd/ca-chain.cert.pem
Построчно описывать шаги не буду, отмечу важные моменты. Вместо hostname.example.com указываем свой fqdn имя сервера, так же везде где фигурирует hostname.example.com заменить в тексте на свое значение. Если у кого либо возникнут вопросы, прошу в комментарии.
Настройка proxy_reverse
Серверная часть CODE (демон coolwsd
) по умолчанию прослушивает порт 9980
, но для удобства взаимодействия с coolwsd
настроим обратный прокси-сервер на порт 443
(HTTPS) с использованием apache
.
Для корректной работы CODE включаем необхоходимые модули apache — ssl
, proxy
, proxy_http
, proxy_connect
, proxy_wstunnel
.
a2enmod ssl a2enmod proxy a2enmod proxy_http a2enmod proxy_connect a2enmod proxy_wstunnel
Создаем файл описания виртуального хоста /etc/apache2/sites-available/collaboraonline.conf
с содержанием:
<VirtualHost *:443> ######################################## # Reverse proxy for Collabora Online ######################################## AllowEncodedSlashes NoDecode SSLProxyEngine On ProxyPreserveHost On SSLCertificateFile /etc/ssl/<pathtocertificate> SSLCertificateKeyFile /etc/ssl/<pathtokey> SSLCACertificateFile /etc/ssl/<pathtocertificate> # cert is issued for collaboraonline.example.com and we proxy to localhost SSLProxyVerify None SSLProxyCheckPeerCN Off SSLProxyCheckPeerName Off # static html, js, images, etc. served from coolwsd # browser is the client part of Collabora 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 # Capabilities ProxyPass /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities retry=0 ProxyPassReverse /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities # 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 # Compatibility with integrations that use the /lool/convert-to endpoint ProxyPass /lool https://127.0.0.1:9980/cool ProxyPassReverse /lool https://127.0.0.1:9980/cool </VirtualHost>
Отключаем дефолтный виртуальный хост и включаем collaboraonline.conf
. Перезапускаем apache.
a2dissite 000-default.conf a2ensite collaboraonline.conf systemctl restart apache2
Перезапускаем демон coolwsd
.
systemctl restart coolwsd
Консоль администратора доступна по адресу — https://collaboraonline.example.com/browser/dist/admin/admin.html, где collaboraonline.example.com
соответственно ваше заданное DNS имя сервера.
Посмореть логи демона coolwsd
можно выполнив команду:
journalctl -eu coolwsd
Теперь можно использовать сервер Collabora Online Development Edition в Nextcloud.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Оставить ответ