Как интегрировать сервер Collabora Online с Nextcloud на Ubuntu 16.04

Как интегрировать сервер Collabora Online с Nextcloud на Ubuntu 16.04 Система

В этой статье вы узнаете, как установить онлайн-сервер Collabora на Ubuntu 16.04, а затем интегрировать его с существующим сервером Nextcloud.

Collabora online — это самоуправляемый и основанный на LibreOffice онлайновый офисный пакет с открытым исходным кодом. Его функции включают в себя:

  • Базовое редактирование
  • Высокая точность воспроизведения, WYSIWYG-рендеринг
  • Поддерживает форматы документов DOC, DOCX, PPT, PPTX, XLS, XLSX, ODF
  • Импорт и просмотр Visio, Publisher и более 100 и более
  • Совместное редактирование

Как интегрировать сервер Collabora Online с Nextcloud на Ubuntu 16.04

Предполагается, что вы уже настроили сервер Nextcloud, который может находиться в любом дистрибутиве Linux. Если вы используете Ubuntu 16.04 или Arch Linux, вы можете проверить следующие простые для понимания руководства.

Сервер Collabora Online и сервер Nextcloud могут находиться на одной машине или на двух разных компьютерах. В этом учебнике показано, как установить онлайн-сервер Collabora на Ubuntu 16.04, используя изображение Докера, созданное Collabora и Nextcloud. Затем интегрируйте его с существующим сервером Nextcloud.

Шаг 1. Установите Docker на Ubuntu 16.04

Кстати, ранее мы уже писали о том, как настроить iptables на Linux. Возможно это будет вам также интересно, ссылку вы можете найти выше.

Если вам нужна последняя версия Docker, вы можете установить Docker из репозитория APT Docker. Для простоты в этом учебном курсе установите Docker из репозитория программного обеспечения Ubuntu по умолчанию. Запустите окно терминала (CTRL + ALT + T) и выполните следующую команду, чтобы установить Docker из репозитория Ubuntu.

sudo apt update

sudo apt install docker.io

После установки Docker должен быть автоматически запущен. Вы можете проверить свой статус:

systemctl status docker

Если он не запущен, запустите его с помощью следующей команды:

sudo systemctl start docker

Включить автозапуск при загрузке:

sudo systemctl start docker

По умолчанию Docker использует AUFS в качестве драйвера хранилища для Debian и Ubuntu. Чтобы он работал в онлайн-офисе Collabora, вам необходимо переключиться на драйвер хранилища карт устройства, следуя приведенным ниже инструкциям.

Создайте следующий каталог.

sudo mkdir /etc/systemd/system/docker.service.d

Создайте новый файл в этом каталоге.

sudo nano /etc/systemd/system/docker.service.d/DeviceMapper.conf

Вставьте следующий текст в файл.

[Service]

ExecStart=

ExecStart=/usr/bin/dockerd --storage-driver=devicemapper -H fd://

Сохраните и закройте файл. Затем перезагрузите Systemd и перезапустите Docker deamon.

sudo systemctl daemon-reload

sudo systemctl restart docker

Теперь выполните следующую команду, вы увидите, что используемый драйвер хранилища — devicemapper.

sudo docker info

Вывод:

Containers: 1
 Running: 1
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 1.13.1
Storage Driver: devicemapper
 Pool Name: docker-253:1-515579-pool

Шаг 2. Установка и запуск онлайнового сервера Collabora с Docker

Следующим шагом в руководстве того, как интегрировать сервер Collabora Online с Nextcloud на Ubuntu 16.04 будет установка и запуск Collabora с Docker. Здесь все очень легко. Просто следуйте нашей инструкции. Если возникнут какие-то вопросы то можете писать их в форму комментариев.

Выполните следующую команду, чтобы вытащить последнюю версию Collabora Online Development Edition из концентратора Docker.

sudo docker pull collabora/code

Затем запустите этот контейнер докера. Замените \\.your-domain\\.com на ваш домен сервера nextcloud (с сохранением обратного слэша).

sudo docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.your-domain\\.com' --restart always --cap-add MKNOD collabora/code

Онлайновый сервер Collabora будет прослушивать порт 9980 localhost (127.0.0.1), как это можно показать, выведя следующую команду:

sudo netstat -lnpt

Шаг 3. Настройка обратного прокси

Серверу Nextcloud требуется сертификат TLS / SSL на онлайн-сервере Collabora, поэтому нам нужно будет создать виртуальный хост, предоставить виртуальному хосту имя домена, установить TLS / SSL-сертификат и настроить обратный прокси-сервер. Для достижения этой цели мы можем использовать либо Apache, либо Nginx.

Сначала давайте посмотрим, как это сделать с Apache.

Настройка виртуального хоста Apache

Установите веб-сервер Apache с помощью следующей команды:

sudo apt install apache2

Выполните следующую команду, чтобы создать файл виртуального хоста Apache. Замените имя домена на фактическое имя домена для онлайн-сервера Collabora. Не забудьте создать запись A для этого доменного имени.

sudo nano /etc/apache2/sites-available/office.your-domain.com.conf

Поместите следующий текст в файл.

<VirtualHost *:80>

ServerName office.your-domain.com

</VirtualHost>

Сохраните и закройте файл. Включите этот виртуальный хост с помощью следующей команды:

sudo a2ensite office.your-domain.com.conf

Затем перезапустите Apache.

sudo systemctl restart apache2

HTTPS помогает нам предотвратить атаку «человек в середине» и разнюхать пароль. Мы можем получить бесплатный TLS / SSL-сертификат от Let’s Encrypt CA. Сначала давайте установим клиента certbot. Клиент по-прежнему называется letnecrypt в репозитории Ubuntu. Следующая команда установит клиент и плагин apache.

sudo apt install letsencrypt python-letsencrypt-apache

Теперь выполните следующую команду, чтобы получить бесплатный сертификат TLS / SSL. Замените текст красного цвета фактическими данными.

sudo letsencrypt --apache --agree-tos --email your-email-address -d office.your-domain.com

Вас попросят выбрать легкий или безопасный. Рекомендуется выбрать безопасный, чтобы все http-запросы были перенаправлены на https.

Как только вы нажмете кнопку OK, бесплатный сертификат TLS / SSL будет получен и установлен на виртуальном хосте Apache.

Настройка обратного прокси-сервера Apache

Чтобы иметь возможность прокси трафик с помощью Apache, выполните следующие команды, чтобы включить каждый из этих модулей Apache.

sudo a2enmod proxy proxy_wstunnel proxy_http ssl

Затем выполните следующую команду для редактирования нового файла виртуального хоста, созданного клиентом Let’s Encrypt (certbot).

sudo nano /etc/apache2/sites-enabled/office.your-domain.com-le-ssl.conf

Добавьте зеленый текст в этот файл, чтобы он выглядел следующим образом.

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerName office.your-domain.com

  SSLCertificateFile /etc/letsencrypt/live/office.your-domain.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/office.your-domain.com/privkey.pem
  Include /etc/letsencrypt/options-ssl-apache.conf

  # 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 LibreOffice 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>
</IfModule>

Сохраните и закройте файл. Затем перезапустите веб-сервер Apache.

sudo systemctl restart apache2

Теперь давайте посмотрим, как достичь тех же результатов с Nginx.

Настройка виртуального хоста Nginx

Установите Nginx на Ubuntu 16.04 с помощью следующей команды:

sudo apt install nginx

Создайте файл виртуального хоста. Замените имя домена на фактическое имя домена для онлайн-сервера Collabora. Не забудьте создать запись A для этого доменного имени.

sudo nano /etc/nginx/conf.d/office.your-domain.com.conf

Поместите следующий текст в файл.

server {
  listen 80;
  server_name office.your-domain.com;

  root /usr/share/nginx/office;
}

Сохраните и закройте файл. Создайте каталог для этого виртуального хоста.

sudo mkdir /usr/share/nginx/office

И пусть владелец Nginx (www-data) будет владельцем этого каталога.

sudo chown www-data:www-data /usr/share/nginx/office -R

Перезагрузите сервер Nginx.

sudo systemctl reload nginx

Теперь давайте получим бесплатный сертификат TLS от Let’s encrypt. Установить клиент certbot с:

sudo apt install letsencrypt

Затем используйте плагин webroot для получения сертификата. Замените красный текст на фактические данные.

sudo letsencrypt certonly --webroot --email your-email-address -d office.your-domain.com -w /usr/share/nginx/office/

Вы увидите следующий текст, указывающий, что вы успешно получили сертификат TLS. Ваш сертификат и цепочка были сохранены в каталоге /etc/letsencrypt/live/office.your-domain.com/.

Настройка обратного прокси Nginx

Отредактируйте файл виртуального хоста.

sudo nano /etc/nginx/conf.d/office.your-domain.com.conf

Измените конфигурацию на следующее.

server {
  listen 443 ssl;
  server_name office.your-domain.com;
  root /usr/share/nginx/office;

  ssl_protocols TLSv1.1 TLSv1.2;
  ssl_certificate /etc/letsencrypt/live/office.your-domain.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/office.your-domain.com/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;
  }

  # websockets, download, presentation and image upload
  location ^~ /lool {
    proxy_pass https://localhost:9980;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
  }
}

Сохраните и закройте файл. Затем проверьте конфигурацию nginx и перезагрузите Nginx.

sudo nginx -t

sudo systemctl reload nginx

Заключительный шаг: подключите Nextcloud к серверу Collabora Online

Чтобы подключить сервер Nextcloud к онлайн-серверу Collabora, сначала нужно включить экспериментальные приложения в Nextcloud.

В вашей панели инструментов Nextcloud перейдите в Приложения,

Затем нажмите на значок шестеренки в левом нижнем углу и установите флажок Включить экспериментальные приложения.

Затем перейдите на вкладку «Производительность» слева, найдите приложение Connabora Online connector и нажмите кнопку «Включить».

Обновление: Nextcloud мог бы изменить интерфейс приложений. Если вы не можете найти вкладку «Производительность», перейдите на вкладку «Не включено», найдите и включите приложение Connector Online Connector. Приложение Connabora Online connector также может изменить свое имя на Collabora Online.

Наконец, перейдите на страницу администрирования Nextcloud. Перейдите на вкладку Дополнительные настройки слева. Прокрутите вниз до раздела Collabora Online и введите имя домена вашего онлайн-сервера Collabora, включая префикс https: //. Не забудьте нажать кнопку «Применить».

Теперь вы должны увидеть новое приложение Office из раскрывающегося меню.

И вы можете создавать документы Word, таблицы и презентации прямо с сервера Nextcloud.

Перевод из отличного английского ресурса LinuxBabe.

Готово! Надеюсь, этот урок помог вам установить, запустить онлайн-сервер Collabora на Ubuntu 16.04 и интегрировать его с Nextcloud. Как всегда, если вы нашли этот пост полезным, подпишитесь на нашу бесплатную рассылку и поделитесь ссылкой в Google+, Twitter или, например, на нашей странице в Facebook. Давайте развивать лучшее Linux сообщество вместе!

Если у вас остались вопросы по теме «Как интегрировать сервер Collabora Online с Nextcloud на Ubuntu 16.04» то можете писать их в форму комментариев на нашем сайте.

LINUXINSIDER.RU
Добавить комментарий

  1. Гена

    Приветствую. Как настроить колабору в локалхосте, когда нет существующего доменного имени?

    Ответить
    1. Дмитрий

      Я над этим вопросом тоже бьюсь уже месяц, вам удалось что нибудь узнать?

      Ответить
    2. Олег Донских автор

      Здравствуйте. Что именно у Вас вызывает вопросы? Расскажите подробнее, если есть ошибка при настройке сделайте скриншот и прикрепите к комментарию. Разберемся!

      Ответить
    3. Pajar

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

      Ответить
  2. Юрий

    Приветствую!
    Пр и изменении способоба хранения не хочет запускаться.
    Код:
    янв 22 13:42:20 webserver systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
    янв 22 13:42:20 webserver systemd[1]: Failed to start Docker Application Container Engine.
    — Subject: Ошибка юнита docker.service
    — Defined-By: systemd
    — Support: http: //lists .freedesktop .org/mailman/listinfo/systemd-devel

    — Произошел сбой юнита docker.service.

    — Результат: failed.
    янв 22 13:42:20 webserver systemd[1]: docker.service: Unit entered failed state.
    янв 22 13:42:20 webserver systemd[1]: docker.service: Failed with result ‘exit-code’.

    Ответить
    1. Юрий

      С этим разобрался

      Ответить
      1. Юрий

        В общем, разобрался со всем, все установлено.
        Но, при попытке открыть файл, пришел:
        «Неавторизованный хост WOPI. Попробуйте позже, в случае неудачи сообщите администратору.»
        Куда смотреть?

        Ответить
        1. Олег Донских автор

          Нашел информацию по Вашему вопросу на GitHub.
          Как говорят: Ошибка связанна с данными, указанными в параметрах TokenManager.php

          Там все написано на английском, но, зато есть решение.

          Ответить
      2. kwbrd

        Как именно разобрался то?

        Ответить
  3. Виктор

    Здравствуйте. После выполнения
    Вставьте следующий текст в файл.

    [Service]

    ExecStart=

    ExecStart=/usr/bin/dockerd —storage-driver=devicemapper -H fd://

    Сохраните и закройте файл. Затем перезагрузите Systemd и перезапустите Docker deamon.

    sudo systemctl daemon-reload

    sudo systemctl restart docker

    docker не запускается.
    systemctl status docker.service выдает такой результат:
    docker.service — Docker Application Container Engine
    Loaded: error (Reason: Invalid argument)
    Drop-In: /etc/systemd/system/docker.service.d
    └─DeviceMapper.conf
    Active: failed (Result: exit-code) since Чт 2018-02-08 19:25:40 +10; 12min ago
    Docs: https://docs.docker.com
    Main PID: 2712 (code=exited, status=1/FAILURE)

    фев 08 19:25:40 co dockerd[2712]: —userns-remap string User/Group
    фев 08 19:25:40 co systemd[1]: Failed to start Docker Application Container Engine.
    фев 08 19:25:40 co dockerd[2712]: -v, —version Print versi
    фев 08 19:25:40 co dockerd[2712]: Run ‘dockerd COMMAND —help’ for more information on a co
    фев 08 19:25:40 co systemd[1]: docker.service: Unit entered failed state.
    фев 08 19:25:40 co systemd[1]: docker.service: Failed with result ‘exit-code’.
    фев 08 19:25:58 co systemd[1]: docker.service: Service has more than one ExecStart= setting
    фев 08 19:28:21 co systemd[1]: docker.service: Service has more than one ExecStart= setting
    фев 08 19:31:08 co systemd[1]: docker.service: Service has more than one ExecStart= setting
    фев 08 19:31:33 co systemd[1]: docker.service: Service has more than one ExecStart= setting
    ~
    Что дальше?

    Ответить
    1. Евгений

      Тоже с этим столкнулся, не решили проблему?

      Ответить
    2. Werewolfe

      Просто не надо копировать бездумно текст 🙂
      Редактор меняет «- -» на тире.

      Ответить
  4. Серёга

    sudo docker run -t -d -p 127.0.0.1:9980:9980 -e ‘domain=owncloud\\.mydomain\\.ru’ —restart always —cap-add MKNOD collabora/code
    Возвращает
    docker: invalid reference format.
    Есть идеи, что не так? Не может же быть из-за того, что у меня стоит настроенный owncloud, а не nextcloud?

    Ответить
  5. Otto

    В статье есть мелкая ошибочка в синтаксисе в месте, где создаём файл в Докере и переключиться на драйвер хранилища карт устройства, там вместо двух тире длинное тире.
    Вот так правильно:
    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd —storage-driver=devicemapper -H fd://

    Ответить
    1. Виталий Ермолаев

      Спасибо, поправили

      Ответить