Ранее мы рассматривали установку облачного хранилища Nextcloud. В продолжение этой статьи рассмотрим, как установить онлайн-сервер Collabora на Ubuntu с помощью Docker и интегрировать его с настроенным сервером Nextcloud.
Collabora Online – это автономный офисный сервер на основе LibreOffice . Его особенности включают:
- Базовое редактирование
- Высокая точность, WYSIWYG-рендеринг
- Поддерживает формат документов DOC, DOCX, PPT, PPTX, XLS, XLSX, ODF
- Импорт и просмотр Visio, Publisher и еще более 100 форматов
- Совместное редактирование
Основой онлайн-офиса является сервер Collabora Online, который берет на себя визуализацию и редактирование документа. Будем запускать этот сервер из Docker-контейнера, который содержит все необходимое для работы.
Подготовка
Для начала установим Docker
sudo apt update
sudo apt install docker.io
После установки демон Docker должен запуститься автоматически. Вы можете проверить его статус с помощью:
systemctl status docker
Если он не запущен, запустите демон с помощью этой команды:
sudo systemctl start docker
И включите автозапуск при загрузке:
sudo systemctl enable docker
Установим и запустим Collabora Online Server с Docker
docker run -t -d -p 9980:9980 -e "domain=cloud.admin812.ru" --restart always --cap-add MKNOD collabora/code
Проверим, что контейнер запущен
sudo netstat -lnpt | grep docker
Настроим nginx как обратный прокси
Так как контейнер Docker, который мы используем в качестве сервера Collabora Online, не имеет действительных сертификатов для вашего домена, мы будем использовать nginx в качестве обратного прокси-сервера, который предоставит сертификат ssl для подключения нашего браузера.
nano /etc/nginx/sites-available/nextcloud
Добавим в в конфигурацию nginx в секцию server
.............................................................
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name cloud.admin812.ru;
#
# Use Mozilla's guidelines for SSL/TLS settings
# https://mozilla.github.io/server-side-tls/ssl-config-generator/
# NOTE: some settings below might be redundant
ssl_certificate /etc/letsencrypt/live/cloud.admin812.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.admin812.ru/privkey.pem;
.......................................................
следующий блок:
# static files
location ^~ /loleaflet {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
# WOPI discovery URL
location ^~ /hosting/discovery {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
# main websocket
location ~ ^/lool/(.*)/ws$ {
proxy_pass https://localhost:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
# Capabilities
location ^~ /hosting/capabilities {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
# download, presentation and image upload
location ~ ^/lool {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
# Admin Console websocket
location ^~ /lool/adminws {
proxy_pass https://localhost:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
Проверяем на ошибки nginx:
nginx -t
и если все в порядке – перегружаем
systemctl restart nginx
Теперь подключаемся к нашему серверу Nextcloud через браузер.
Проверяем, что присутствует компонента Collabora Online. Если ее нет – устанавливаем.
Следующим шагом подключаем Collabora к Nextcloud.
Проверяем.
Все работает!
Привет. Спасибо за статью! =)
Есть одна проблема. В Nextcloud Collabora Online не открывается если в iptables закрыты входящие. (C Chain INPUT (policy ACCEPT) Collabora работает на отлично). Ниже настройки iptables. Все настраивал по инструкции (https://admin812.ru/ustanovka-oblachnogo-hranilishha-nextcloud.html и https://admin812.ru/ustanovka-collabora-online-na-server-nextcloud-s-pomoshhyu-docker.html)
=============================================================
root@bhey388ei3h:~# iptables -t filter -L -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp — virbr0 any anywhere anywhere udp dpt:domain
0 0 ACCEPT tcp — virbr0 any anywhere anywhere tcp dpt:domain
0 0 ACCEPT udp — virbr0 any anywhere anywhere udp dpt:bootps
0 0 ACCEPT tcp — virbr0 any anywhere anywhere tcp dpt:bootps
6628 475K ACCEPT tcp — enp1s1 any anywhere anywhere tcp dpt:http
251M 4G ACCEPT tcp — enp1s1 any anywhere anywhere tcp dpt:https
99M 1G ACCEPT all — lo any anywhere anywhere
82M 5278M ACCEPT all — any any anywhere anywhere ctstate RELATED,ESTABLISHED
0 0 ACCEPT all — lo any anywhere anywhere
0 0 ACCEPT all — DOCKER any anywhere anywhere
0 0 ACCEPT tcp — enp1s1 any anywhere anywhere tcp dpt:9980
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
546 44655 DOCKER-USER all — any any anywhere anywhere
546 44655 DOCKER-ISOLATION-STAGE-1 all — any any anywhere anywhere
261 25939 ACCEPT all — any docker0 anywhere anywhere ctstate RELATED,ESTABLISHED
9 500 DOCKER all — any docker0 anywhere anywhere
276 18216 ACCEPT all — docker0 !docker0 anywhere anywhere
0 0 ACCEPT all — docker0 docker0 anywhere anywhere
0 0 ACCEPT all — any virbr0 anywhere 192.168.122.0/24 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all — virbr0 any 192.168.122.0/24 anywhere
0 0 ACCEPT all — virbr0 virbr0 anywhere anywhere
0 0 REJECT all — any virbr0 anywhere anywhere reject-with icmp-port-unreachable
0 0 REJECT all — virbr0 any anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT 5 packets, 532 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp — any virbr0 anywhere anywhere udp dpt:bootpc
Chain DOCKER (1 references)
pkts bytes target prot opt in out source destination
9 500 ACCEPT tcp — !docker0 docker0 anywhere 172.17.0.2 tcp dpt:9980
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
pkts bytes target prot opt in out source destination
276 18216 DOCKER-ISOLATION-STAGE-2 all — docker0 !docker0 anywhere anywhere
546 44655 RETURN all — any any anywhere anywhere
Chain DOCKER-ISOLATION-STAGE-2 (1 references)
pkts bytes target prot opt in out source destination
0 0 DROP all — any docker0 anywhere anywhere
276 18216 RETURN all — any any anywhere anywhere
Chain DOCKER-USER (1 references)
pkts bytes target prot opt in out source destination
571 45777 RETURN all — any any anywhere anywhere
=========================================================
Настройки сети –
ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s1: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:00:00:00:00:ed brd ff:ff:ff:ff:ff:ff
inet 222.222.222.222/24 brd 222.222.222.255 scope global enp1s1
valid_lft forever preferred_lft forever
inet6 0000::0000:0000:0000:4700/64 scope link
valid_lft forever preferred_lft forever
3: enp1s2: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:00:00:00:00:bf brd ff:ff:ff:ff:ff:ff
inet 172.18.0.24/24 scope global enp1s2
valid_lft forever preferred_lft forever
inet6 0000::0000:0000:0000:0000/64 scope link
valid_lft forever preferred_lft forever
4: virbr0: mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 00:00:00:00:00:de brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 00:00:00:00:00:de brd ff:ff:ff:ff:ff:ff
6: docker0: mtu 1500 qdisc noqueue state UP group default
link/ether 00:00:00:00:00:ee brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 0000::00:0000:0000:24ee/64 scope link
valid_lft forever preferred_lft forever
12: veth8586d67@if11: mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether 00:00:00:00:00:ae brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 0000::0000:0000:0000:79ae/64 scope link
valid_lft forever preferred_lft forever
===================================================
Я новичок в этой теме, не могу понять куда копать
ДОбрый день. Nextcloud установлен в докере, и там же был collabora. Выявил баги, да и читал что это больше тестовая версия. Установил по вашему ману в отдельный докер до секции про Nginx. Прописываю в строке настроек в Nextcloud https://192.168.0.33:9980. Работает. Но недоверенный сертификат…
Не могу через NPM получить сертификат.
По вашему ману секция “Настроим nginx как обратный прокси” настраивается на nextcloud если нет Nginx Proxy Manager( он установлен тоже в докере)?
Т.е. изначально через NPM получались сертификаты и на Nextcloud и на другие сервисы, а тут затык.