Collabora Online
Обновлено 6 мая 2020
Collabora Online - это офисный пакет на основе LibreOffice с возможностью совместного редактирования, который поддерживает все основные форматы документов, электронных таблиц и файлов презентаций и работает во всех современных браузерах.
Для работы Collabora Online необходимы сервер редактирования документов (Docker-контейнер) и Nextcloud.
Установка и настройка Nextcloud
Установите и настройте Nextcloud согласно руководству.
Настройка сервера Collabora Online
Для запуска серверной части будет использоваться Docker - программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы.
Установите Docker и пакет для упраления cgroups:
emerge -a app-emulation/docker
Запустите сервис cgconfig для создание CGroup systemd:
/etc/init.d/cgconfig start
При использовании Docker внутри LXC контейнера с Nextcloud в хостовой системе загрузите необходимые модули ядра и добавьте их в автозагрузку:
modprobe -a br_netfilter ip_tables nf_conntrack_netlink nf_nat nf_nat_ipv4 overlay xt_conntrack
echo -e "br_netfilter\nip_tables\nnf_conntrack_netlink\nnf_nat\nnf_nat_ipv4\noverlay\nxt_conntrack" > /etc/modules-load.d/docker.conf
Запустите Docker и добавьте его в автозагрузку:
/etc/init.d/docker start
rc-update add docker
Получите и запустите контейнер Collabra Online для Nextcloud. Обратите внимание на двойной обратный слеш.
Заметка
Nextcloud и Collabora Online должны использовать одинаковые протоколы (HTTP или HTTPS).
Создание и запуск HTTP контейнера
Для работы по протоколу HTTP запустите контейнер с указанием домена Nextcloud:
docker run --name office -t -d -p 9980:9980 -e 'DONT_GEN_SSL_CERT=true' -e 'extra_params=-o:ssl.enable=false' -e 'domain=cloud\\.example\\.org' --restart always --cap-add MKNOD collabora/code
После выполнения будет создан и запущен контейнер с именем office. Контейнер будет автоматически стартовать при загрузке системы во время запуска демона Docker.
Создание и запуск HTTPS контейнера
Для работы по протоколу HTTPS запустите контейнер следующей командой, указав сертификат, закрытый ключ и домен Nextcloud:
FULLCHAIN="/etc/nginx/ssl/cloud.example.org/fullchain.pem"
PRIVKEY="/etc/nginx/ssl/cloud.example.org/privkey.pem"
DOMAINNAME="cloud.example.org"
docker run --name office -t -d -p 9980:9980 -v "${FULLCHAIN}":/etc/loolwsd/ca-chain.cert.pem -v "${PRIVKEY}":/etc/loolwsd/key.pem -v "${FULLCHAIN}":/etc/loolwsd/cert.pem -e 'DONT_GEN_SSL_CERT=true' -e "domain=${DOMAINNAME//./\\.}" --restart always --cap-add MKNOD collabora/code
После выполнения команды будет создан и запущен контейнер с именем office. Контейнер будет автоматически стартовать при загрузке системы во время запуска демона Docker.
Проверка состояния контейнера
Для того, чтобы посмотреть состояние контейнера, выполните:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6783472582fe collabora/code "/bin/sh -c 'bash st…" 2 minutes ago Up 2 minutes 127.0.0.1:9980->9980/tcp office
Для просмотра журнала работы сервера выполните:
... Sec-WebSocket-Accept: GAcwqP21iVOY2yKefQ64c0yVN5M= | ./net/WebSocketHandler.hpp:576 wsd-00019-00020 2019-01-16 13:22:29.629713 [ prisoner_poll ] TRC #15: Wrote outgoing data 129 bytes.| ./net/Socket.hpp:1053 wsd-00019-00020 2019-01-16 13:22:29.629742 [ prisoner_poll ] INF ChildProcess ctor [25].| wsd/DocumentBroker.hpp:72 wsd-00019-00020 2019-01-16 13:22:29.629776 [ prisoner_poll ] DBG Removing socket #15 (of 2) from prisoner_poll| ./net/Socket.hpp:577 wsd-00019-00020 2019-01-16 13:22:29.629800 [ prisoner_poll ] DBG #15 Thread affinity set to 0 (was 0x7fe823822700).| ./net/Socket.hpp:279 wsd-00019-00020 2019-01-16 13:22:29.629823 [ prisoner_poll ] TRC Calling addNewChild in disposition's move thing to add to NewChildren| wsd/LOOLWSD.cpp:1879 wsd-00019-00020 2019-01-16 13:22:29.629847 [ prisoner_poll ] TRC Adding one child to NewChildren| wsd/LOOLWSD.cpp:467 wsd-00019-00020 2019-01-16 13:22:29.629869 [ prisoner_poll ] INF Have 1 spare child after adding [25].| wsd/LOOLWSD.cpp:471 wsd-00019-00020 2019-01-16 13:22:29.629894 [ prisoner_poll ] TRC Notifying NewChildrenCV| wsd/LOOLWSD.cpp:474 wsd-00019-00019 2019-01-16 13:22:29.629938 [ loolwsd ] TRC Have 1 new children.| wsd/LOOLWSD.cpp:3172 wsd-00019-00019 2019-01-16 13:22:29.629979 [ loolwsd ] INF WSD initialization complete: setting log-level to [warning] as configured.| wsd/LOOLWSD.cpp:3179
Настройка Nextcloud приложения Collabora Online
Откройте меню "Приложения", затем в категории "Офис и текст" найдите и установите Collabora Online.
Теперь откройте настройки Collabora Online и укажите сервер Collabora Online: http://cloud.example.org:9980 или https://cloud.example.org:9980, в зависимости от используемого протокола.
Обновление Collabora Online
Обновление Collabora производится путём обновления Docker-образа и создания нового контейнера.
Обновите образ Collabora:
docker pull collabora/code
Остановите и удалите контейнер office:
docker stop office; docker rm office
Создайте и запустите новый контейнер с Collabora для HTTP или HTTPS протокола, как описано выше.