Установка Collabora Office Online без Docker в Nextcloud

Collabora Online Development Edition

Решил подключить Collabora Online Development Edition(CODE) к Nextcloud, Docker принципиально ставить не хотел, поэтому ставил из пакетов.

Далее будет показана установка на Debian. Добавляем репозиторий в свой дистрибутив по этой инструкции.


Ставим CODE с русским языком

apt update
apt install loolwsd code-brand collaboraofficebasis6.0-ru

Ставим проверку орфографии

apt install hunspell hunspell-ru

Теперь необходимо создать сертификаты

openssl genrsa -out /etc/loolwsd/root.key.pem 2048
openssl req -x509 -new -nodes -key /etc/loolwsd/root.key.pem -days 9131 -out /etc/loolwsd/ca-chain.cert.pem -subj "/C=RU/ST=SR/L=SR/O=RC Authority/CN=RC Authority"
openssl genrsa -out /etc/loolwsd/key.pem 2048
openssl req -key /etc/loolwsd/key.pem -new -sha256 -out /etc/loolwsd/localhost.csr.pem -subj "/C=RU/ST=SR/L=SR/O=RC Authority/CN=localhost"
openssl x509 -req -in /etc/loolwsd/localhost.csr.pem -CA /etc/loolwsd/ca-chain.cert.pem -CAkey /etc/loolwsd/root.key.pem -CAcreateserial -out /etc/loolwsd/cert.pem -days 9131

Выставим права

chown lool:lool /etc/loolwsd/cert.pem 
chown lool:lool /etc/loolwsd/key.pem 
chown lool:lool /etc/loolwsd/ca-chain.cert.pem

Теперь отредактируем файл конфигурации CODE

nano /etc/loolwsd/loolwsd.xml

Добавьте в раздел wopi строку с вашим адресом где установлен Nextcloud

<host desc="Regex pattern of hostname to allow or deny." allow="true">cloud\.yourdomain\.com</host>

В разделе admin_console в полях username и password укажите данные администратора CODE, консоль администратора CODE будет доступна по

https://office.yourdomain.com/loleaflet/dist/admin/admin.html

Сохраните файл конфигурации и перезапустите CODE

systemctl restart loolwsd.service

Теперь нам необходимо настроить VirtualHost в Apache 2, будем использовать office.yourdomain.com

Следующие модули Apache 2 должны быть активны

a2enmod proxy
a2enmod proxy_wstunnel
a2enmod proxy_http
a2enmod ssl

Примерный конфиг /etc/apache2/sites-available/office.yourdomain.com.conf

<VirtualHost *:443>
  ServerName office.yourdomain.com
  Options -Indexes

  # SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
  SSLEngine on
  SSLCertificateFile /path/to/signed_certificate
  SSLCertificateChainFile /path/to/intermediate_certificate
  SSLCertificateKeyFile /path/to/private/key
  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 loolwsd
  # loleaflet is the client part of Collabora Online
  ProxyPass           /loleaflet https://127.0.0.1:9980/loleaflet retry=0
  ProxyPassReverse    /loleaflet https://127.0.0.1:9980/loleaflet

  # 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 "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon

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

  # Download as, Fullscreen presentation and Image upload operations
  ProxyPass           /lool https://127.0.0.1:9980/lool
  ProxyPassReverse    /lool https://127.0.0.1:9980/lool
</VirtualHost>

Включим хост и перезапустим Apache 2

a2ensite office.yourdomain.com
service apache2 restart

Настроим Nextcloud

  1. Перейдите в раздел «Приложения» и выберите «Офис и текст».
  2. Установите приложение "Collabora Online"
  3. Настройки -> Collabora Online -> Укажите сервер, который вы настроили ранее https://office.yourdomain.com

Дополнительно

Управление CODE

systemctl status loolwsd.service
systemctl start loolwsd.service
systemctl stop loolwsd.service
systemctl restart loolwsd.service

На момент написания была проблема при открытии документов, если в названии файла содержались русские буквы или пробел, вылетала ошибка "Сбой загрузки документа. Попробуйте снова, убедившись, что поддерживается тип файла и файл не поврежден."

update 22.12.2018: обновилась версия collaboraoffice, поправил пакеты для установки


Похожие статьи