SCROLL
Среднее время на прочтение: 5 мин.

Установка Collabora Online Development Edition на Debian 11

Collabora Online — это мощный офисный пакет на базе LibreOffice для совместной работы с документами в браузере. В рамках статьи будем устанавливать Collabora Online Development Edition (CODE) версию.

Все ниже действия будут производится на Debian 11 Bullseye и под пользователем 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:

/etc/coolwsd/coolwsd.xml
<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 с содержанием:

/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

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

Теперь можно использовать сервер Collabora Online Development Edition в Nextcloud.

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

11 комментариев
  • Могу вам предложить доступ по ssh. Если готовы, то сделаю учетку и вышлю вам на почту логин и пароль.

  • Давайте так, пришлите мне файл конфига апач для вирт. хоста колаборы и файл конфига самой колаборы (/etc/coolwsd/coolwsd.xml) на почту admin@jakondo.ru, я посмотрю что не так может быть.

    Так же при запуске службы, сделайте journalctl -f -eu coolwsd и тоже в текстовичок вывод, там тоже будет видно в чем и где затык.

  • А это служба отваливающаяся
    coolwsd.service — Collabora Online WebSocket Daemon
    Loaded: loaded (/usr/lib/systemd/system/coolwsd.service; enabled; preset: enabled)
    Active: failed (Result: core-dump) since Fri 2024-12-27 20:45:44 MSK; 4s ago
    Duration: 1.425s
    Process: 8091 ExecStart=/usr/bin/coolwsd —version —o:sys_template_path=/opt/cool/systemplate —o:child_root_path=/opt/cool/child-roots —o:file_server_root_path=/usr/share/cool>
    Main PID: 8091 (code=dumped, signal=ABRT)
    CPU: 1.302s

    дек 27 20:45:44 srv2 systemd[1]: coolwsd.service: Scheduled restart job, restart counter is at 5.
    дек 27 20:45:44 srv2 systemd[1]: coolwsd.service: Start request repeated too quickly.
    дек 27 20:45:44 srv2 systemd[1]: coolwsd.service: Failed with result ‘core-dump’.
    дек 27 20:45:44 srv2 systemd[1]: Failed to start coolwsd.service — Collabora Online WebSocket Daemon.
    дек 27 20:45:44 srv2 systemd[1]: coolwsd.service: Consumed 1.302s CPU time.

  • [Fri Dec 27 20:14:18.894803 2024] [proxy:error] [pid 7485] (111)Connection refused: AH00957: https: attempt to connect to 127.0.0.1:9980 (127.0.0.1:9980) failed
    [Fri Dec 27 20:14:18.894835 2024] [proxy_http:error] [pid 7485] [client 91.194.246.31:41848] AH01114: HTTP: failed to make connection to backend: 127.0.0.1
    [Fri Dec 27 20:14:26.681771 2024] [proxy:error] [pid 7513] (111)Connection refused: AH00957: https: attempt to connect to 127.0.0.1:9980 (127.0.0.1:9980) failed
    [Fri Dec 27 20:14:26.681806 2024] [proxy_http:error] [pid 7513] [client 91.194.246.31:34228] AH01114: HTTP: failed to make connection to backend: 127.0.0.1
    [Fri Dec 27 20:14:28.462010 2024] [proxy:error] [pid 7475] (111)Connection refused: AH00957: https: attempt to connect to 127.0.0.1:9980 (127.0.0.1:9980) failed
    [Fri Dec 27 20:14:28.462045 2024] [proxy_http:error] [pid 7475] [client 91.194.246.31:34232] AH01114: HTTP: failed to make connection to backend: 127.0.0.1
    [Fri Dec 27 20:17:55.912543 2024] [proxy:error] [pid 7488] (111)Connection refused: AH00957: https: attempt to connect to 127.0.0.1:9980 (127.0.0.1:9980) failed
    [Fri Dec 27 20:17:55.912601 2024] [proxy_http:error] [pid 7488] [client 91.194.246.31:50824] AH01114: HTTP: failed to make connection to backend: 127.0.0.1, referer: https://jakondo.&gt;
    [Fri Dec 27 20:18:02.503819 2024] [proxy:error] [pid 7533] (111)Connection refused: AH00957: https: attempt to connect to 127.0.0.1:9980 (127.0.0.1:9980) failed
    [Fri Dec 27 20:18:02.503905 2024] [proxy_http:error] [pid 7533] [client 91.194.246.31:46002] AH01114: HTTP: failed to make connection to backend: 127.0.0.1, referer: https://jakondo.&gt;
    [Fri Dec 27 20:18:04.664505 2024] [proxy:error] [pid 7485] (111)Connection refused: AH00957: https: attempt to connect to 127.0.0.1:9980 (127.0.0.1:9980) failed
    [Fri Dec 27 20:18:04.664528 2024] [proxy_http:error] [pid 7485] [client 91.194.246.31:46008] AH01114: HTTP: failed to make connection to backend: 127.0.0.1, referer: https://jakondo.&gt;
    [Fri Dec 27 20:20:02.444727 2024] [proxy:error] [pid 7513] (111)Connection refused: AH00957: https: attempt to connect to 127.0.0.1:9980 (127.0.0.1:9980) failed
    [Fri Dec 27 20:20:02.444763 2024] [proxy_http:error] [pid 7513] [client 91.194.246.31:55502] AH01114: HTTP: failed to make connection to backend: 127.0.0.1
    [Fri Dec 27 20:20:02.463818 2024] [proxy:error] [pid 7486] (111)Connection refused: AH00957: https: attempt to connect to 127.0.0.1:9980 (127.0.0.1:9980) failed
    [Fri Dec 27 20:20:02.463849 2024] [proxy_http:error] [pid 7486] [client 91.194.246.31:55516] AH01114: HTTP: failed to make connection to backend: 127.0.0.1

  • админка тоже не открывается

  • Да вообще апаче себя странно ведёт. Понимаю, что в нем заковырка. Он мне вообще при обращении office.e-net.su выкидывает на сайт по-умолчанию со страницей апаче. Но при этом я конфигурацию дефолтовую отключил. Как только найду логи, то посмотрю. Спасибо, что отозвались.
    И сама служба coolwsd.service тоже вроде бы стартует. Но потом красный статус. не нравится ей что то.

  • Failed to connect to the remote server: Server error: `GET https://office.e-net.su/hosting/discovery` resulted in a `503 Service Unavailable` response: 503 Service Unavailable <h1 (truncated…)

    А вот это пишет браузер NC при попытке настройки своего офиса

  • Спасибо. Самый краткий и конкретный подход. Но не заводится пока. По https пишут в брвузере сервер на обслуживании.